diff --git a/server/webserver.cc b/server/webserver.cc new file mode 100644 index 0000000..a960b68 --- /dev/null +++ b/server/webserver.cc @@ -0,0 +1,28 @@ + +#include "webserver.h" +#include "modelbahn.h" + +#include + +int SimpleWebServer::HandleRequest (WebRequestBuffer *requestbuffer, WebServerClient *webclient) { + if (requestbuffer == NULL || webclient == NULL) return 0; + + std::string request = requestbuffer->GetRequest(); + JSONParse jpin, jpout; + std::string cmd, obj; + +// debug ("Request:%s", request.c_str()); + + if (request.compare ("/") == 0) request = "/index.html"; + if (request.find("/cgi-bin/modelbahn-cgi") != std::string::npos) { + requestbuffer->GetRequestCmdObj(&cmd, &obj, &jpin); +// debug ("cmd: %s, obj: %s, \n%s\n", cmd.c_str(), obj.c_str(), jpin.ToString().c_str()); + network->ClientLoop(&jpin, &jpout); + if (webclient->SendResponseData(requestbuffer, jpout.ToString(), "") != 1) return 0; + } + else + if (webclient->SendResponseFile(requestbuffer, request, "") != 1) return 0; + + requestbuffer->Clear(); + return 1; +}; diff --git a/server/webserver.h b/server/webserver.h new file mode 100644 index 0000000..758d08d --- /dev/null +++ b/server/webserver.h @@ -0,0 +1,14 @@ + +#ifndef _WEBSERVER_H_ +#define _WEBSERVER_H_ + +#include + +class SimpleWebServer : public WebServer { + private: + protected: + public: + int HandleRequest (WebRequestBuffer *requestbuffer, WebServerClient *webclient); +}; + +#endif