#include #include #include #include #include constexpr static const char* GET("GET"); constexpr static const char* REQUEST_METHOD("REQUEST_METHOD"); constexpr static const char* SCRIPT_NAME("SCRIPT_NAME"); constexpr static const char* status405("Status: 405 Method Not Allowed"); constexpr static const char* contentTypeHtml("Content-type: text/html"); constexpr static const char* headerEnd("\n\n"); void handleRequest(FCGX_Request& request) { fcgi_streambuf cin_fcgi_streambuf(request.in); fcgi_streambuf cout_fcgi_streambuf(request.out); fcgi_streambuf cerr_fcgi_streambuf(request.err); std::ostream os{&cout_fcgi_streambuf}; std::ostream errs{&cerr_fcgi_streambuf}; std::istream is{&cin_fcgi_streambuf}; std::string requestMethod(FCGX_GetParam(REQUEST_METHOD, request.envp)); if (requestMethod != GET) { os << status405; return; } std::string scriptName{FCGX_GetParam(SCRIPT_NAME, request.envp)}; os << contentTypeHtml; os << headerEnd; os << scriptName << "\n"; } int main() { FCGX_Request request; FCGX_Init(); FCGX_InitRequest(&request, 0, 0); while (FCGX_Accept_r(&request) == 0) { handleRequest(request); } }