#include <xmltooling/util/XMLHelper.h>\r
#include <xercesc/util/XMLUniDefs.hpp>\r
\r
+#include <stdexcept>\r
#include <stdlib.h>\r
#ifdef HAVE_UNISTD_H\r
# include <unistd.h>\r
public:\r
map<string,string> m_request_headers;\r
\r
- ShibTargetFCGIAuth(FCGX_Request* req, const char* scheme=NULL, const char* hostname=NULL, int port=0) : m_req(req) {\r
+ ShibTargetFCGIAuth(FCGX_Request* req, const char* scheme=NULL, const char* hostname=NULL, int port=0)\r
+ : AbstractSPRequest(SHIBSP_LOGCAT".FastCGI"), m_req(req) {\r
const char* server_name_str = hostname;\r
if (!server_name_str || !*server_name_str)\r
server_name_str = FCGX_GetParam("SERVER_NAME", req->envp);\r
m_port = strtol(server_port_str, &server_port_str, 10);\r
if (*server_port_str) {\r
cerr << "can't parse SERVER_PORT (" << FCGX_GetParam("SERVER_PORT", req->envp) << ")" << endl;\r
- throw exception("Unable to determine server port.");\r
+ throw runtime_error("Unable to determine server port.");\r
}\r
}\r
\r
if (!server_scheme_str || !*server_scheme_str)\r
server_scheme_str = (m_port == 443 || m_port == 8443) ? "https" : "http";\r
m_scheme = server_scheme_str;\r
+\r
+ setRequestURI(FCGX_GetParam("REQUEST_URI", m_req->envp));\r
}\r
\r
~ShibTargetFCGIAuth() { }\r
int getPort() const {\r
return m_port;\r
}\r
- const char* getRequestURI() const {\r
- return FCGX_GetParam("REQUEST_URI", m_req->envp);\r
- }\r
const char* getMethod() const {\r
return FCGX_GetParam("REQUEST_METHOD", m_req->envp);\r
}\r
// so custom Shib errors will get turned into a generic page.\r
const char* codestr="Status: 500 Server Error";\r
switch (status) {\r
- case XMLTOOLING_HTTP_STATUS_FORBIDDEN: codestr="Status: 403 Forbidden"; break;\r
- case XMLTOOLING_HTTP_STATUS_NOTFOUND: codestr="Status: 404 Not Found"; break;\r
+ case XMLTOOLING_HTTP_STATUS_UNAUTHORIZED: codestr="Status: 401 Authorization Required"; break;\r
+ case XMLTOOLING_HTTP_STATUS_FORBIDDEN: codestr="Status: 403 Forbidden"; break;\r
+ case XMLTOOLING_HTTP_STATUS_NOTFOUND: codestr="Status: 404 Not Found"; break;\r
}\r
cout << codestr << "\r\n" << hdr << "\r\n";\r
char buf[1024];\r
\r
int main(void)\r
{\r
- const char* schemadir=getenv("SHIBSP_SCHEMAS");\r
- if (!schemadir)\r
- schemadir=SHIBSP_SCHEMAS;\r
- const char* config=getenv("SHIBSP_CONFIG");\r
- if (!config)\r
- config=SHIBSP_CONFIG;\r
-\r
- cerr << "SHIBSP_CONFIG = " << config << endl\r
- << "SHIBSP_SCHEMAS = " << schemadir << endl;\r
-\r
SPConfig* g_Config=&SPConfig::getConfig();\r
g_Config->setFeatures(\r
SPConfig::Listener |\r
SPConfig::Logging |\r
SPConfig::Handlers\r
);\r
- if (!g_Config->init(schemadir)) {\r
+ if (!g_Config->init()) {\r
cerr << "failed to initialize Shibboleth libraries" << endl;\r
exit(1);\r
}\r
\r
+ const char* config=getenv("SHIBSP_CONFIG");\r
+ if (!config)\r
+ config=SHIBSP_CONFIG;\r
+\r
try {\r
DOMDocument* dummydoc=XMLToolingConfig::getConfig().getParser().newDocument();\r
XercesJanitor<DOMDocument> docjanitor(dummydoc);\r