X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2FSPConfig.cpp;h=65d5b7454964ee1dee4b636238ff0e498b4b4cdb;hb=944037c4ab3ba27481ff05202ccbce51a42f4650;hp=f789410ef58f3c38aea1eca2216a498c1e55a086;hpb=4b87a996f7fb72f55a505037bd9a7e5f86115bbf;p=shibboleth%2Fsp.git diff --git a/shibsp/SPConfig.cpp b/shibsp/SPConfig.cpp index f789410..65d5b74 100644 --- a/shibsp/SPConfig.cpp +++ b/shibsp/SPConfig.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,32 +22,70 @@ */ #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 "Handler.h" #include "RequestMapper.h" #include "ServiceProvider.h" #include "SessionCache.h" #include "SPConfig.h" -#include "metadata/MetadataExt.h" +#include "attribute/Attribute.h" +#include "handler/SessionInitiator.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); +DECL_XMLTOOLING_EXCEPTION_FACTORY(AttributeFilteringException,shibsp); +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() @@ -55,29 +93,31 @@ SPConfig& SPConfig::getConfig() return g_config; } -SPInternalConfig& SPInternalConfig::getInternalConfig() -{ - return g_config; -} - void SPConfig::setServiceProvider(ServiceProvider* serviceProvider) { - //delete m_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"); @@ -85,51 +125,129 @@ 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"); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(AttributeException,shibsp); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(AttributeExtractionException,shibsp); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(AttributeFilteringException,shibsp); + REGISTER_XMLTOOLING_EXCEPTION_FACTORY(AttributeResolutionException,shibsp); REGISTER_XMLTOOLING_EXCEPTION_FACTORY(ConfigurationException,shibsp); REGISTER_XMLTOOLING_EXCEPTION_FACTORY(ListenerException,shibsp); - - registerMetadataExtClasses(); - registerPKIXTrustEngine(); - registerAccessControls(); - registerListenerServices(); - registerRequestMappers(); - registerSessionCaches(); + +#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(); + registerHandlers(); + registerSessionInitiators(); registerServiceProviders(); - log.info("library initialization complete"); +#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(); +#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); - delete m_serviceProvider; - m_serviceProvider = NULL; - - SingleLogoutServiceManager.deregisterFactories(); - SessionInitiatorManager.deregisterFactories(); - SessionCacheManager.deregisterFactories(); - ServiceProviderManager.deregisterFactories(); - RequestMapperManager.deregisterFactories(); + setServiceProvider(NULL); +#ifndef SHIBSP_LITE + setArtifactResolver(NULL); +#endif + + ArtifactResolutionServiceManager.deregisterFactories(); + AssertionConsumerServiceManager.deregisterFactories(); + LogoutInitiatorManager.deregisterFactories(); ManageNameIDServiceManager.deregisterFactories(); - ListenerServiceManager.deregisterFactories(); + SessionInitiatorManager.deregisterFactories(); + SingleLogoutServiceManager.deregisterFactories(); HandlerManager.deregisterFactories(); - AssertionConsumerServiceManager.deregisterFactories(); - AccessControlManager.deregisterFactories(); + ServiceProviderManager.deregisterFactories(); + Attribute::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); }