X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibd%2Fshibd.cpp;h=7f61f15896a79a6d92363472daedba6bb166bb89;hb=87f8c5b1383ce267075073f2184f282450e16e09;hp=cf79435826e9dfc8e9eee6c0b43e9992887b7407;hpb=46b0fe6f78f4d9433e0a7f2d2a135343eeb58e01;p=shibboleth%2Fsp.git diff --git a/shibd/shibd.cpp b/shibd/shibd.cpp index cf79435..7f61f15 100644 --- a/shibd/shibd.cpp +++ b/shibd/shibd.cpp @@ -58,7 +58,9 @@ using namespace std; bool shibd_shutdown = false; const char* shar_config = NULL; const char* shar_schemadir = NULL; +const char* shar_prefix = NULL; bool shar_checkonly = false; +bool shar_version = false; static int unlink_socket = 0; const char* pidfile = NULL; @@ -114,24 +116,21 @@ int real_main(int preinit) SPConfig::Trust | SPConfig::Credentials | SPConfig::AttributeResolution | + SPConfig::Handlers | SPConfig::OutOfProcess | (shar_checkonly ? SPConfig::RequestMapping : SPConfig::Logging) ); - if (!shar_config) - shar_config=getenv("SHIBSP_CONFIG"); - if (!shar_schemadir) - shar_schemadir=getenv("SHIBSP_SCHEMAS"); - if (!shar_schemadir) - shar_schemadir=SHIBSP_SCHEMAS; - if (!shar_config) - shar_config=SHIBSP_CONFIG; - if (!conf.init(shar_schemadir)) { + if (!conf.init(shar_schemadir, shar_prefix)) { fprintf(stderr, "configuration is invalid, see console for specific problems\n"); return -1; } + if (!shar_config) + shar_config=getenv("SHIBSP_CONFIG"); + if (!shar_config) + shar_config=SHIBSP_CONFIG; + try { - fprintf(stderr, "loading configuration file: %s\n", shar_config); static const XMLCh path[] = UNICODE_LITERAL_4(p,a,t,h); static const XMLCh validate[] = UNICODE_LITERAL_8(v,a,l,i,d,a,t,e); xercesc::DOMDocument* dummydoc=XMLToolingConfig::getConfig().getParser().newDocument(); @@ -214,12 +213,14 @@ static int setup_signals(void) static void usage(char* whoami) { - fprintf(stderr, "usage: %s [-fcdt]\n", whoami); + fprintf(stderr, "usage: %s [-dcxtfpvh]\n", whoami); + fprintf(stderr, " -d\tinstallation prefix to use.\n"); fprintf(stderr, " -c\tconfig file to use.\n"); fprintf(stderr, " -x\tXML schema catalogs to use.\n"); fprintf(stderr, " -t\tcheck configuration file for problems.\n"); fprintf(stderr, " -f\tforce removal of listener socket.\n"); fprintf(stderr, " -p\tpid file to use.\n"); + fprintf(stderr, " -v\tprint software version.\n"); fprintf(stderr, " -h\tprint this help message.\n"); exit(1); } @@ -228,8 +229,11 @@ static int parse_args(int argc, char* argv[]) { int opt; - while ((opt = getopt(argc, argv, "c:x:p:fth")) > 0) { + while ((opt = getopt(argc, argv, "d:c:x:p:ftvh")) > 0) { switch (opt) { + case 'd': + shar_prefix=optarg; + break; case 'c': shar_config=optarg; break; @@ -242,6 +246,9 @@ static int parse_args(int argc, char* argv[]) case 't': shar_checkonly=true; break; + case 'v': + shar_version=true; + break; case 'p': pidfile=optarg; break; @@ -254,20 +261,15 @@ static int parse_args(int argc, char* argv[]) int main(int argc, char *argv[]) { - if (setup_signals() != 0) - return -1; - if (parse_args(argc, argv) != 0) usage(argv[0]); + else if (shar_version) { + fprintf(stdout, PACKAGE_STRING); + return 0; + } - if (!shar_config) - shar_config=getenv("SHIBSP_CONFIG"); - if (!shar_schemadir) - shar_schemadir=getenv("SHIBSP_SCHEMAS"); - if (!shar_schemadir) - shar_schemadir=SHIBSP_SCHEMAS; - if (!shar_config) - shar_config=SHIBSP_CONFIG; + if (setup_signals() != 0) + return -1; // initialize the shib-target library SPConfig& conf=SPConfig::getConfig(); @@ -278,16 +280,21 @@ int main(int argc, char *argv[]) SPConfig::Trust | SPConfig::Credentials | SPConfig::AttributeResolution | + SPConfig::Handlers | SPConfig::OutOfProcess | (shar_checkonly ? SPConfig::RequestMapping : SPConfig::Logging) ); - if (!conf.init(shar_schemadir)) { + if (!conf.init(shar_schemadir, shar_prefix)) { fprintf(stderr, "configuration is invalid, check console for specific problems\n"); return -1; } + if (!shar_config) + shar_config=getenv("SHIBSP_CONFIG"); + if (!shar_config) + shar_config=SHIBSP_CONFIG; + try { - fprintf(stderr, "loading configuration file: %s\n", shar_config); static const XMLCh path[] = UNICODE_LITERAL_4(p,a,t,h); static const XMLCh validate[] = UNICODE_LITERAL_8(v,a,l,i,d,a,t,e); xercesc::DOMDocument* dummydoc=XMLToolingConfig::getConfig().getParser().newDocument();