X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2FSPConfig.cpp;h=65d5b7454964ee1dee4b636238ff0e498b4b4cdb;hb=944037c4ab3ba27481ff05202ccbce51a42f4650;hp=e01a617cb177ad5c46156955202e0eae8e53ce27;hpb=3031c89c1e9110c5da7710b5694ff863d29ae28c;p=shibboleth%2Fsp.git diff --git a/shibsp/SPConfig.cpp b/shibsp/SPConfig.cpp index e01a617..65d5b74 100644 --- a/shibsp/SPConfig.cpp +++ b/shibsp/SPConfig.cpp @@ -22,30 +22,51 @@ */ #include "internal.h" + +#if defined(XMLTOOLING_LOG4SHIB) +# ifndef SHIBSP_LOG4SHIB +# error "Logging library mismatch (XMLTooling is using log4shib)." +# endif +#elif defined(XMLTOOLING_LOG4CPP) +# ifndef SHIBSP_LOG4CPP +# error "Logging library mismatch (XMLTooling is using log4cpp)." +# endif +#else +# error "No supported logging library." +#endif + #include "AccessControl.h" #include "exceptions.h" #include "RequestMapper.h" #include "ServiceProvider.h" #include "SessionCache.h" #include "SPConfig.h" -#include "attribute/AttributeDecoder.h" -#include "attribute/resolver/AttributeExtractor.h" -#include "attribute/resolver/AttributeResolver.h" -#include "binding/ArtifactResolver.h" +#include "attribute/Attribute.h" #include "handler/SessionInitiator.h" -#include "metadata/MetadataExt.h" #include "remoting/ListenerService.h" -#include "security/PKIXTrustEngine.h" -#include -#include +#ifndef SHIBSP_LITE +# include "attribute/AttributeDecoder.h" +# include "attribute/filtering/AttributeFilter.h" +# include "attribute/filtering/MatchFunctor.h" +# include "attribute/resolver/AttributeExtractor.h" +# include "attribute/resolver/AttributeResolver.h" +# include "binding/ArtifactResolver.h" +# include "metadata/MetadataExt.h" +# include "security/PKIXTrustEngine.h" +# include +# include +#else +# include +#endif + #include +#include #include using namespace shibsp; using namespace opensaml; using namespace xmltooling; -using namespace log4cpp; DECL_XMLTOOLING_EXCEPTION_FACTORY(AttributeException,shibsp); DECL_XMLTOOLING_EXCEPTION_FACTORY(AttributeExtractionException,shibsp); @@ -54,8 +75,17 @@ DECL_XMLTOOLING_EXCEPTION_FACTORY(AttributeResolutionException,shibsp); DECL_XMLTOOLING_EXCEPTION_FACTORY(ConfigurationException,shibsp); DECL_XMLTOOLING_EXCEPTION_FACTORY(ListenerException,shibsp); +#ifdef SHIBSP_LITE +DECL_XMLTOOLING_EXCEPTION_FACTORY(BindingException,opensaml); +DECL_XMLTOOLING_EXCEPTION_FACTORY(SecurityPolicyException,opensaml); +DECL_XMLTOOLING_EXCEPTION_FACTORY(ProfileException,opensaml); +DECL_XMLTOOLING_EXCEPTION_FACTORY(FatalProfileException,opensaml); +DECL_XMLTOOLING_EXCEPTION_FACTORY(RetryableProfileException,opensaml); +DECL_XMLTOOLING_EXCEPTION_FACTORY(MetadataException,opensaml::saml2md); +#endif + namespace shibsp { - SPInternalConfig g_config; + SPConfig g_config; } SPConfig& SPConfig::getConfig() @@ -63,29 +93,31 @@ SPConfig& SPConfig::getConfig() return g_config; } -SPInternalConfig& SPInternalConfig::getInternalConfig() -{ - return g_config; -} - void SPConfig::setServiceProvider(ServiceProvider* serviceProvider) { delete m_serviceProvider; m_serviceProvider = serviceProvider; } -bool SPInternalConfig::init(const char* catalog_path) +bool SPConfig::init(const char* catalog_path, const char* inst_prefix) { #ifdef _DEBUG NDC ndc("init"); #endif - Category& log=Category::getInstance(SHIBSP_LOGCAT".Config"); - log.debug("library initialization started"); - + if (!inst_prefix) + inst_prefix = getenv("SHIBSP_PREFIX"); + if (!inst_prefix) + inst_prefix = SHIBSP_PREFIX; + const char* loglevel=getenv("SHIBSP_LOGGING"); if (!loglevel) loglevel = SHIBSP_LOGGING; - XMLToolingConfig::getConfig().log_config(loglevel); + std::string ll(loglevel); + PathResolver localpr; + XMLToolingConfig::getConfig().log_config(localpr.resolve(ll, PathResolver::XMLTOOLING_CFG_FILE, PACKAGE_NAME, inst_prefix).c_str()); + + Category& log=Category::getInstance(SHIBSP_LOGCAT".Config"); + log.debug("%s library initialization started", PACKAGE_STRING); if (!catalog_path) catalog_path = getenv("SHIBSP_SCHEMAS"); @@ -93,11 +125,20 @@ bool SPInternalConfig::init(const char* catalog_path) catalog_path = SHIBSP_SCHEMAS; XMLToolingConfig::getConfig().catalog_path = catalog_path; +#ifndef SHIBSP_LITE if (!SAMLConfig::getConfig().init()) { log.fatal("failed to initialize OpenSAML library"); return false; } - + XMLPlatformUtils::fgNetAccessor = new CurlNetAccessor(); +#else + if (!XMLToolingConfig::getConfig().init()) { + log.fatal("failed to initialize XMLTooling library"); + return false; + } +#endif + XMLToolingConfig::getConfig().getPathResolver()->setDefaultPackageName(PACKAGE_NAME); + XMLToolingConfig::getConfig().getPathResolver()->setDefaultPrefix(inst_prefix); XMLToolingConfig::getConfig().setTemplateEngine(new TemplateEngine()); XMLToolingConfig::getConfig().getTemplateEngine()->setTagPrefix("shibmlp"); @@ -107,56 +148,106 @@ bool SPInternalConfig::init(const char* catalog_path) REGISTER_XMLTOOLING_EXCEPTION_FACTORY(AttributeResolutionException,shibsp); REGISTER_XMLTOOLING_EXCEPTION_FACTORY(ConfigurationException,shibsp); REGISTER_XMLTOOLING_EXCEPTION_FACTORY(ListenerException,shibsp); - - registerMetadataExtClasses(); - registerPKIXTrustEngine(); - registerAccessControls(); - registerAttributeDecoders(); - registerAttributeExtractors(); +#ifdef SHIBSP_LITE + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(BindingException,opensaml); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(SecurityPolicyException,opensaml); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(ProfileException,opensaml); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(FatalProfileException,opensaml); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(RetryableProfileException,opensaml); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(MetadataException,opensaml::saml2md); +#endif + +#ifndef SHIBSP_LITE + if (isEnabled(Metadata)) + registerMetadataExtClasses(); + if (isEnabled(Trust)) + registerPKIXTrustEngine(); +#endif + registerAttributeFactories(); - registerAttributeResolvers(); registerHandlers(); registerSessionInitiators(); - registerListenerServices(); - registerRequestMappers(); - registerSessionCaches(); registerServiceProviders(); +#ifndef SHIBSP_LITE + if (isEnabled(AttributeResolution)) { + registerAttributeExtractors(); + registerAttributeDecoders(); + registerAttributeResolvers(); + registerAttributeFilters(); + registerMatchFunctors(); + } +#endif + + if (isEnabled(Listener)) + registerListenerServices(); + + if (isEnabled(RequestMapping)) { + registerAccessControls(); + registerRequestMappers(); + } + + if (isEnabled(Caching)) + registerSessionCaches(); + +#ifndef SHIBSP_LITE if (isEnabled(OutOfProcess)) m_artifactResolver = new ArtifactResolver(); - - log.info("library initialization complete"); +#endif + + log.info("%s library initialization complete", PACKAGE_STRING); return true; } -void SPInternalConfig::term() +void SPConfig::term() { #ifdef _DEBUG NDC ndc("term"); #endif Category& log=Category::getInstance(SHIBSP_LOGCAT".Config"); - log.info("shutting down the library"); + log.info("%s library shutting down", PACKAGE_STRING); setServiceProvider(NULL); +#ifndef SHIBSP_LITE setArtifactResolver(NULL); +#endif + ArtifactResolutionServiceManager.deregisterFactories(); AssertionConsumerServiceManager.deregisterFactories(); + LogoutInitiatorManager.deregisterFactories(); ManageNameIDServiceManager.deregisterFactories(); SessionInitiatorManager.deregisterFactories(); SingleLogoutServiceManager.deregisterFactories(); - - ServiceProviderManager.deregisterFactories(); - SessionCacheManager.deregisterFactories(); - RequestMapperManager.deregisterFactories(); - ListenerServiceManager.deregisterFactories(); HandlerManager.deregisterFactories(); - AttributeDecoderManager.deregisterFactories(); - AttributeExtractorManager.deregisterFactories(); - AttributeResolverManager.deregisterFactories(); + ServiceProviderManager.deregisterFactories(); Attribute::deregisterFactories(); - AccessControlManager.deregisterFactories(); +#ifndef SHIBSP_LITE + if (isEnabled(AttributeResolution)) { + MatchFunctorManager.deregisterFactories(); + AttributeFilterManager.deregisterFactories(); + AttributeDecoderManager.deregisterFactories(); + AttributeExtractorManager.deregisterFactories(); + AttributeResolverManager.deregisterFactories(); + } +#endif + + if (isEnabled(Listener)) + ListenerServiceManager.deregisterFactories(); + + if (isEnabled(RequestMapping)) { + AccessControlManager.deregisterFactories(); + RequestMapperManager.deregisterFactories(); + } + + if (isEnabled(Caching)) + SessionCacheManager.deregisterFactories(); + +#ifndef SHIBSP_LITE SAMLConfig::getConfig().term(); - log.info("library shutdown complete"); +#else + XMLToolingConfig::getConfig().term(); +#endif + log.info("%s library shutdown complete", PACKAGE_STRING); }