#define _CRT_SECURE_NO_DEPRECATE 1
#define _CRT_RAND_S
+#include <shibsp/exceptions.h>
#include <shibsp/AbstractSPRequest.h>
#include <shibsp/SPConfig.h>
#include <shibsp/ServiceProvider.h>
+
+#include <set>
+#include <sstream>
+#include <fstream>
+#include <stdexcept>
+#include <process.h>
#include <xmltooling/unicode.h>
#include <xmltooling/XMLToolingConfig.h>
#include <xmltooling/util/NDC.h>
#include <xercesc/util/Base64.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
-#include <set>
-#include <sstream>
-#include <fstream>
-#include <stdexcept>
-#include <process.h>
-
#include <windows.h>
#include <httpfilt.h>
#include <httpext.h>
# define _CRT_RAND_S
#endif
+#include <shibsp/exceptions.h>
#include <shibsp/AbstractSPRequest.h>
#include <shibsp/RequestMapper.h>
#include <shibsp/SPConfig.h>
#include <shibsp/ServiceProvider.h>
-#include <xmltooling/XMLToolingConfig.h>
-#include <xmltooling/util/NDC.h>
-#include <xmltooling/util/Threads.h>
-#include <xmltooling/util/XMLConstants.h>
-#include <xmltooling/util/XMLHelper.h>
-#include <xercesc/util/XMLUniDefs.hpp>
#include <set>
#include <memory>
#include <fstream>
#include <sstream>
#include <stdexcept>
+#include <xmltooling/XMLToolingConfig.h>
+#include <xmltooling/util/NDC.h>
+#include <xmltooling/util/Threads.h>
+#include <xmltooling/util/XMLConstants.h>
+#include <xmltooling/util/XMLHelper.h>
+#include <xercesc/util/XMLUniDefs.hpp>
#ifdef WIN32
# include <process.h>
*/
#include "internal.h"
+#include "exceptions.h"
#include "AbstractSPRequest.h"
#include "Application.h"
#include "ServiceProvider.h"
#include "SessionCache.h"
+#include "util/CGIParser.h"
using namespace shibsp;
using namespace opensaml;
/**
* @file shibsp/AbstractSPRequest.h
*
- * Abstract base for SPRequest implementations
+ * Abstract base for SPRequest implementations.
*/
#ifndef __shibsp_abstreq_h__
#define __shibsp_abstreq_h__
-#include <shibsp/exceptions.h>
#include <shibsp/SPRequest.h>
-#include <shibsp/util/CGIParser.h>
namespace shibsp {
+ class SHIBSP_API CGIParser;
+
#if defined (_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4251 )
/**
* Stores a normalized request URI to ensure it contains no %-encoded characters
- * or other undesirable artifacts, such as ;jsessionid appendage.
+ * or other undesirable artifacts.
*
* @param uri the request URI as obtained from the client
*/
public:
virtual ~AbstractSPRequest();
+ // Virtual function overrides.
const ServiceProvider& getServiceProvider() const;
RequestMapper::Settings getRequestSettings() const;
const Application& getApplication() const;
#include "ServiceProvider.h"
#include "SessionCache.h"
#include "SPConfig.h"
+#include "TransactionLog.h"
#include "attribute/Attribute.h"
#include "handler/SessionInitiator.h"
#include "remoting/ListenerService.h"
#include <xmltooling/util/ParserPool.h>
#include <xmltooling/util/PathResolver.h>
#include <xmltooling/util/TemplateEngine.h>
+#include <xmltooling/util/Threads.h>
#include <xmltooling/util/XMLHelper.h>
using namespace shibsp;
return g_config;
}
+SPConfig::SPConfig() : attribute_value_delimeter(';'), m_serviceProvider(NULL),
+#ifndef SHIBSP_LITE
+ m_artifactResolver(NULL),
+#endif
+ m_features(0), m_configDoc(NULL)
+{
+}
+
+SPConfig::~SPConfig()
+{
+}
+
+void SPConfig::setFeatures(unsigned long enabled)
+{
+ m_features = enabled;
+}
+
+bool SPConfig::isEnabled(components_t feature)
+{
+ return (m_features & feature)>0;
+}
+
+ServiceProvider* SPConfig::getServiceProvider() const
+{
+ return m_serviceProvider;
+}
+
void SPConfig::setServiceProvider(ServiceProvider* serviceProvider)
{
delete m_serviceProvider;
m_serviceProvider = serviceProvider;
}
+#ifndef SHIBSP_LITE
+void SPConfig::setArtifactResolver(MessageDecoder::ArtifactResolver* artifactResolver)
+{
+ delete m_artifactResolver;
+ m_artifactResolver = artifactResolver;
+}
+
+const MessageDecoder::ArtifactResolver* SPConfig::getArtifactResolver() const
+{
+ return m_artifactResolver;
+}
+#endif
+
bool SPConfig::init(const char* catalog_path, const char* inst_prefix)
{
#ifdef _DEBUG
}
return false;
}
+
+TransactionLog::TransactionLog() : log(logging::Category::getInstance(SHIBSP_TX_LOGCAT)), m_lock(Mutex::create())
+{
+}
+
+TransactionLog::~TransactionLog()
+{
+ delete m_lock;
+}
+
+Lockable* TransactionLog::lock()
+{
+ m_lock->lock();
+ return this;
+}
+
+void TransactionLog::unlock()
+{
+ m_lock->unlock();
+}
#include <shibsp/base.h>
+#include <string>
#ifndef SHIBSP_LITE
# include <saml/binding/MessageDecoder.h>
# include <saml/binding/MessageEncoder.h>
{
MAKE_NONCOPYABLE(SPConfig);
public:
- SPConfig() : attribute_value_delimeter(';'), m_serviceProvider(NULL),
-#ifndef SHIBSP_LITE
- m_artifactResolver(NULL),
-#endif
- m_features(0), m_configDoc(NULL) {
- }
+ SPConfig();
- virtual ~SPConfig() {}
+ virtual ~SPConfig();
/**
* Returns the global configuration object for the library.
*
* @param enabled bitmask of component constants
*/
- void setFeatures(unsigned long enabled) {
- m_features = enabled;
- }
+ void setFeatures(unsigned long enabled);
/**
* Test whether a subsystem is enabled.
* @param feature subsystem/component to test
* @return true iff feature is enabled
*/
- bool isEnabled(components_t feature) {
- return (m_features & feature)>0;
- }
+ bool isEnabled(components_t feature);
/**
* Initializes library
*
* @return global ServiceProvider or NULL
*/
- ServiceProvider* getServiceProvider() const {
- return m_serviceProvider;
- }
+ ServiceProvider* getServiceProvider() const;
/**
* Instantiates and installs a ServiceProvider instance based on an XML configuration string
*
* @param artifactResolver new ArtifactResolver instance to store
*/
- void setArtifactResolver(opensaml::MessageDecoder::ArtifactResolver* artifactResolver) {
- delete m_artifactResolver;
- m_artifactResolver = artifactResolver;
- }
+ void setArtifactResolver(opensaml::MessageDecoder::ArtifactResolver* artifactResolver);
/**
* Returns the global ArtifactResolver instance.
*
* @return global ArtifactResolver or NULL
*/
- const opensaml::MessageDecoder::ArtifactResolver* getArtifactResolver() const {
- return m_artifactResolver;
- }
+ const opensaml::MessageDecoder::ArtifactResolver* getArtifactResolver() const;
#endif
/** Separator for serialized values of multi-valued attributes. */
#include <shibsp/base.h>
+#include <map>
+#include <set>
+#include <string>
#include <vector>
+#include <ctime>
#include <xmltooling/Lockable.h>
namespace xmltooling {
/*
- * Copyright 2001-2007 Internet2
+ * Copyright 2001-2009 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <shibsp/base.h>
#include <xmltooling/logging.h>
#include <xmltooling/Lockable.h>
-#include <xmltooling/util/Threads.h>
-namespace shibsp {
+namespace xmltooling {
+ class XMLTOOL_API Mutex;
+};
+namespace shibsp {
/**
* Interface to a synchronized logging object.
*
{
MAKE_NONCOPYABLE(TransactionLog);
public:
- TransactionLog()
- : log(xmltooling::logging::Category::getInstance(SHIBSP_TX_LOGCAT)), m_lock(xmltooling::Mutex::create()) {
- }
+ TransactionLog();
- virtual ~TransactionLog() {
- delete m_lock;
- }
+ virtual ~TransactionLog();
- xmltooling::Lockable* lock() {
- m_lock->lock();
- return this;
- }
+ xmltooling::Lockable* lock();
- void unlock() {
- m_lock->unlock();
- }
+ void unlock();
/** Logging object. */
xmltooling::logging::Category& log;
m_factoryMap.clear();
}
+Attribute::Attribute(const vector<string>& ids) : m_id(ids), m_caseSensitive(true), m_internal(false)
+{
+}
+
Attribute::Attribute(DDF& in) : m_caseSensitive(in["case_insensitive"].isnull()), m_internal(!in["internal"].isnull())
{
const char* id = in.first().name();
*
* @param ids array with primary identifier in first position, followed by any aliases
*/
- Attribute(const std::vector<std::string>& ids) : m_id(ids), m_caseSensitive(true), m_internal(false) {
- }
+ Attribute(const std::vector<std::string>& ids);
/**
* Constructs based on a remoted Attribute.
#define __shibsp_extractor_h__
#include <shibsp/base.h>
+
+#include <string>
+#include <vector>
#include <xmltooling/Lockable.h>
+namespace xmltooling {
+ class XMLTOOL_API XMLObject;
+};
+
namespace opensaml {
namespace saml2md {
class SAML_API RoleDescriptor;
#include <shibsp/base.h>
+#include <string>
+#include <vector>
#include <xmltooling/Lockable.h>
namespace opensaml {
#include <shibsp/base.h>
+#include <vector>
+
namespace opensaml {
class SAML_API Assertion;
};
#include <xmltooling/util/DateTime.h>
#include <xmltooling/util/NDC.h>
#include <xmltooling/util/ParserPool.h>
+#include <xmltooling/util/Threads.h>
#include <xmltooling/util/XMLHelper.h>
#include <xercesc/util/XMLUniDefs.hpp>
public:
/// @cond OFF
// constructors
- DDF() : m_handle(NULL) {}
+ DDF();
DDF(const char* n);
DDF(const char* n, const char* val, bool safe=true);
DDF(const char* n, long val);
// destructive node conversion methods
DDF& empty();
- DDF& string(const char* val) {
- return string(const_cast<char*>(val), true);
- }
- DDF& unsafe_string(const char* val) {
- return string(const_cast<char*>(val), true, false);
- }
DDF& string(char* val, bool copyit=true, bool safe=true);
+ DDF& string(const char* val);
+ DDF& unsafe_string(const char* val);
DDF& string(long val);
DDF& string(double val);
DDF& integer(long val);
// indexed operators
DDF operator[](unsigned long index) const;
- DDF operator[](const char* path) const { return getmember(path); }
+ DDF operator[](const char* path) const;
// named member access/creation
DDF addmember(const char* path);
// library implementation
+DDF::DDF() : m_handle(NULL)
+{
+}
+
DDF::DDF(const char* n)
{
m_handle=new(nothrow) ddf_body_t;
return *this;
}
+DDF& DDF::string(const char* val)
+{
+ return string(const_cast<char*>(val), true);
+}
+
+DDF& DDF::unsafe_string(const char* val)
+{
+ return string(const_cast<char*>(val), true, false);
+}
+
DDF& DDF::string(long val)
{
char buf[20];
return p;
}
+DDF DDF::operator[](const char* path) const
+{
+ return getmember(path);
+}
+
DDF DDF::operator[](unsigned long index) const
{
DDF d;