\r
#include <stdio.h>\r
#include <signal.h>\r
-#include <log4cpp/Category.hh>\r
#include <shibsp/ServiceProvider.h>\r
#include <shibsp/remoting/ListenerService.h>\r
#include <xercesc/util/XMLUniDefs.hpp>\r
#include <xmltooling/XMLToolingConfig.h>\r
+#include <xmltooling/util/XMLConstants.h>\r
#include <xmltooling/util/XMLHelper.h>\r
\r
using namespace shibsp;\r
-using namespace log4cpp;\r
using namespace xmltooling;\r
using namespace std;\r
\r
bool shibd_shutdown = false;\r
const char* shar_config = NULL;\r
const char* shar_schemadir = NULL;\r
+const char* shar_prefix = NULL;\r
bool shar_checkonly = false;\r
+bool shar_version = false;\r
static int unlink_socket = 0;\r
const char* pidfile = NULL;\r
\r
SPConfig::Metadata |\r
SPConfig::Trust |\r
SPConfig::Credentials |\r
- SPConfig::AttributeResolver |\r
+ SPConfig::AttributeResolution |\r
+ SPConfig::Handlers |\r
SPConfig::OutOfProcess |\r
- (shar_checkonly ? (SPConfig::InProcess | SPConfig::RequestMapping) : SPConfig::Logging)\r
+ (shar_checkonly ? SPConfig::RequestMapping : SPConfig::Logging)\r
);\r
- if (!shar_config)\r
- shar_config=getenv("SHIBCONFIG");\r
- if (!shar_schemadir)\r
- shar_schemadir=getenv("SHIBSCHEMAS");\r
- if (!shar_schemadir)\r
- shar_schemadir=SHIBSP_SCHEMAS;\r
- if (!shar_config)\r
- shar_config=SHIBSP_CONFIG;\r
- if (!conf.init(shar_schemadir)) {\r
+ if (!conf.init(shar_schemadir, shar_prefix)) {\r
fprintf(stderr, "configuration is invalid, see console for specific problems\n");\r
return -1;\r
}\r
\r
+ if (!shar_config)\r
+ shar_config=getenv("SHIBSP_CONFIG");\r
+ if (!shar_config)\r
+ shar_config=SHIBSP_CONFIG;\r
+\r
try {\r
- fprintf(stderr, "loading configuration file: %s\n", shar_config);\r
static const XMLCh path[] = UNICODE_LITERAL_4(p,a,t,h);\r
static const XMLCh validate[] = UNICODE_LITERAL_8(v,a,l,i,d,a,t,e);\r
- DOMDocument* dummydoc=XMLToolingConfig::getConfig().getParser().newDocument();\r
- XercesJanitor<DOMDocument> docjanitor(dummydoc);\r
- DOMElement* dummy = dummydoc->createElementNS(NULL,path);\r
+ xercesc::DOMDocument* dummydoc=XMLToolingConfig::getConfig().getParser().newDocument();\r
+ XercesJanitor<xercesc::DOMDocument> docjanitor(dummydoc);\r
+ xercesc::DOMElement* dummy = dummydoc->createElementNS(NULL,path);\r
auto_ptr_XMLCh src(shar_config);\r
dummy->setAttributeNS(NULL,path,src.get());\r
dummy->setAttributeNS(NULL,validate,xmlconstants::XML_ONE);\r
\r
static void usage(char* whoami)\r
{\r
- fprintf(stderr, "usage: %s [-fcdt]\n", whoami);\r
+ fprintf(stderr, "usage: %s [-dcxtfpvh]\n", whoami);\r
+ fprintf(stderr, " -d\tinstallation prefix to use.\n");\r
fprintf(stderr, " -c\tconfig file to use.\n");\r
- fprintf(stderr, " -d\tschema directory to use.\n");\r
+ fprintf(stderr, " -x\tXML schema catalogs to use.\n");\r
fprintf(stderr, " -t\tcheck configuration file for problems.\n");\r
fprintf(stderr, " -f\tforce removal of listener socket.\n");\r
fprintf(stderr, " -p\tpid file to use.\n");\r
+ fprintf(stderr, " -v\tprint software version.\n");\r
fprintf(stderr, " -h\tprint this help message.\n");\r
exit(1);\r
}\r
{\r
int opt;\r
\r
- while ((opt = getopt(argc, argv, "c:d:p:fth")) > 0) {\r
+ while ((opt = getopt(argc, argv, "d:c:x:p:ftvh")) > 0) {\r
switch (opt) {\r
+ case 'd':\r
+ shar_prefix=optarg;\r
+ break;\r
case 'c':\r
shar_config=optarg;\r
break;\r
- case 'd':\r
+ case 'x':\r
shar_schemadir=optarg;\r
break;\r
case 'f':\r
case 't':\r
shar_checkonly=true;\r
break;\r
+ case 'v':\r
+ shar_version=true;\r
+ break;\r
case 'p':\r
pidfile=optarg;\r
break;\r
\r
int main(int argc, char *argv[])\r
{\r
- if (setup_signals() != 0)\r
- return -1;\r
-\r
if (parse_args(argc, argv) != 0)\r
usage(argv[0]);\r
+ else if (shar_version) {\r
+ fprintf(stdout, PACKAGE_STRING"\n");\r
+ return 0;\r
+ }\r
\r
- if (!shar_config)\r
- shar_config=getenv("SHIBCONFIG");\r
- if (!shar_schemadir)\r
- shar_schemadir=getenv("SHIBSCHEMAS");\r
- if (!shar_schemadir)\r
- shar_schemadir=SHIBSP_SCHEMAS;\r
- if (!shar_config)\r
- shar_config=SHIBSP_CONFIG;\r
+ if (setup_signals() != 0)\r
+ return -1;\r
\r
// initialize the shib-target library\r
SPConfig& conf=SPConfig::getConfig();\r
SPConfig::Metadata |\r
SPConfig::Trust |\r
SPConfig::Credentials |\r
- SPConfig::AttributeResolver |\r
+ SPConfig::AttributeResolution |\r
+ SPConfig::Handlers |\r
SPConfig::OutOfProcess |\r
- (shar_checkonly ? (SPConfig::InProcess | SPConfig::RequestMapping) : SPConfig::Logging)\r
+ (shar_checkonly ? SPConfig::RequestMapping : SPConfig::Logging)\r
);\r
- if (!conf.init(shar_schemadir)) {\r
+ if (!conf.init(shar_schemadir, shar_prefix)) {\r
fprintf(stderr, "configuration is invalid, check console for specific problems\n");\r
return -1;\r
}\r
\r
+ if (!shar_config)\r
+ shar_config=getenv("SHIBSP_CONFIG");\r
+ if (!shar_config)\r
+ shar_config=SHIBSP_CONFIG;\r
+ \r
try {\r
- fprintf(stderr, "loading configuration file: %s\n", shar_config);\r
static const XMLCh path[] = UNICODE_LITERAL_4(p,a,t,h);\r
static const XMLCh validate[] = UNICODE_LITERAL_8(v,a,l,i,d,a,t,e);\r
- DOMDocument* dummydoc=XMLToolingConfig::getConfig().getParser().newDocument();\r
- XercesJanitor<DOMDocument> docjanitor(dummydoc);\r
- DOMElement* dummy = dummydoc->createElementNS(NULL,path);\r
+ xercesc::DOMDocument* dummydoc=XMLToolingConfig::getConfig().getParser().newDocument();\r
+ XercesJanitor<xercesc::DOMDocument> docjanitor(dummydoc);\r
+ xercesc::DOMElement* dummy = dummydoc->createElementNS(NULL,path);\r
auto_ptr_XMLCh src(shar_config);\r
dummy->setAttributeNS(NULL,path,src.get());\r
dummy->setAttributeNS(NULL,validate,xmlconstants::XML_ONE);\r