Added vscode

This commit is contained in:
Brad Arant 2020-11-07 17:31:08 -08:00
parent 8d971c1545
commit 6e4288adf7
7 changed files with 54 additions and 70 deletions

View File

@ -7,49 +7,43 @@
#include "Log.h" #include "Log.h"
namespace http { namespace http {
int HTTPHandler::processCommand(std::string request, core::TCPSession *session, std::stringstream &data) { int HTTPHandler::processCommand(std::string request, core::TCPSession *session, std::stringstream &data) {
coreutils::Log(coreutils::LOG_DEBUG_1) << "DATA[" << request << "]"; coreutils::Log(coreutils::LOG_DEBUG_1) << "DATA[" << request << "]";
coreutils::PString request1(request); coreutils::PString request1(request);
switch(mode) { if(!httpRequest) {
case REQUEST: httpRequest = new HTTPRequest(request1);
httpRequest = new HTTPRequest(request1); session->server.commands.grabInput(session, *this);
session->server.commands.grabInput(session, *this); }
mode = IMF; else {
break; httpRequest->parse(request1);
if(request == "") {
case IMF: session->server.commands.clearGrab(session);
httpRequest->parse(request1); }
if(request == "") { }
session->server.commands.clearGrab(session);
mode = REQUEST;
processHTTPRequest(session, data);
}
}
return true; return true;
} }
bool HTTPHandler::processHTTPRequest(core::TCPSession *session, std::stringstream &data) { bool HTTPHandler::processHTTPRequest(core::TCPSession *session, std::stringstream &data) {
HTTPSession *httpSession = static_cast<HTTPServer&>(session->server).httpSessions.findSessionByHeader(httpRequest); HTTPSession *httpSession = static_cast<HTTPServer&>(session->server).httpSessions.findSessionByHeader(httpRequest);
std::stringstream content; std::stringstream content;
if(static_cast<HTTPServer &>(session->server).pageList.processRequest(httpRequest, session, httpSession, content)) { if(static_cast<HTTPServer &>(session->server).pageList.processRequest(httpRequest, session, httpSession, content)) {
std::string contentType = httpRequest->getHeader("Content-Type"); std::string contentType = httpRequest->getHeader("Content-Type");
if(contentType == "multipart/form-data") { if(contentType == "multipart/form-data") {
coreutils::IMFFormData *formdata = (coreutils::IMFFormData *)httpRequest->getBody(); coreutils::IMFFormData *formdata = (coreutils::IMFFormData *)httpRequest->getBody();
coreutils::Log(coreutils::LOG_DEBUG_2) << "username is '" << formdata->getByName("username") << "'"; coreutils::Log(coreutils::LOG_DEBUG_2) << "username is '" << formdata->getByName("username") << "'";
} }
httpRequest->response.setCode("200"); httpRequest->response.setCode("200");
httpRequest->response.setText("OK"); httpRequest->response.setText("OK");
data << httpRequest->response.getResponse(content.str()); data << httpRequest->response.getResponse(content.str());
} }
else { else {
httpRequest->response.setCode("404"); httpRequest->response.setCode("404");
httpRequest->response.setText("Not Found"); httpRequest->response.setText("Not Found");
@ -57,5 +51,5 @@ namespace http {
} }
return true; return true;
} }
} }

View File

@ -8,20 +8,18 @@
#include "HTTPRequest.h" #include "HTTPRequest.h"
namespace http { namespace http {
class HTTPHandler : public core::Command { class HTTPHandler : public core::Command {
public: public:
int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override; int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override;
private: private:
HTTPRequest *httpRequest; HTTPRequest *httpRequest;
bool processHTTPRequest(core::TCPSession *session, std::stringstream &data); bool processHTTPRequest(core::TCPSession *session, std::stringstream &data);
enum Mode { REQUEST, IMF };
Mode mode = REQUEST;
}; };
} }
#endif #endif

View File

@ -1,14 +1,14 @@
#include "HTTPPageList.h" #include "HTTPPageList.h"
namespace http { namespace http {
bool HTTPPageList::processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data) { bool HTTPPageList::processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data) {
httpRequest->response.setProtocol(httpRequest->request->getProtocol()); httpRequest->response.setProtocol(httpRequest->request.getProtocol());
for(auto *page : pages) { for(auto *page : pages) {
if(page->check(httpRequest->request->getURI())) { if(page->check(httpRequest->request.getURI())) {
return page->processCommand(httpRequest->request->getURI(), session, httpSession, httpRequest, data); return page->processCommand(httpRequest->request.getURI(), session, httpSession, httpRequest, data);
} }
} }
return false; return false;
} }
@ -16,9 +16,9 @@ namespace http {
page.name = name; page.name = name;
pages.push_back(&page); pages.push_back(&page);
} }
void HTTPPageList::remove(HTTPPage &page) {} void HTTPPageList::remove(HTTPPage &page) {}
} }

View File

@ -18,15 +18,15 @@
# include "__workflow_js.h" # include "__workflow_js.h"
namespace http { namespace http {
class HTTPPageList { class HTTPPageList {
public: public:
HTTPPageList() { HTTPPageList() {
add(index, "/"); add(index, "/");
add(script, "/script"); add(script, "/script");
add(editview, "/editview"); add(editview, "/editview");
add(editview_js, "/__editview_js"); add(editview_js, "/__editview_js");
add(style, "/style"); add(style, "/style");
add(setupadmin, "/setupadmin"); add(setupadmin, "/setupadmin");
add(favicon_ico, "/favicon.ico"); add(favicon_ico, "/favicon.ico");
@ -36,17 +36,17 @@ namespace http {
add(viewlist, "/viewlist"); add(viewlist, "/viewlist");
add(workflow, "/workflow"); add(workflow, "/workflow");
add(workflow_js, "/__workflow_js"); add(workflow_js, "/__workflow_js");
} }
bool processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data); bool processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data);
void add(HTTPPage &page, std::string name = ""); void add(HTTPPage &page, std::string name = "");
void remove(HTTPPage &page); void remove(HTTPPage &page);
protected: protected:
std::vector<HTTPPage *> pages; std::vector<HTTPPage *> pages;
private: private:
__index index; __index index;
__script script; __script script;
@ -61,7 +61,7 @@ namespace http {
__viewlist viewlist; __viewlist viewlist;
__workflow workflow; __workflow workflow;
__workflow_js workflow_js; __workflow_js workflow_js;
}; };
} }

View File

@ -11,22 +11,14 @@
namespace http { namespace http {
class HTTPRequest : public coreutils::IMFMessage { class HTTPRequest : public coreutils::IMFMessage {
public: public:
HTTPRequest(coreutils::PString &in) : IMFMessage(in) { HTTPRequest(coreutils::PString &in) : IMFMessage(in) {}
message = new IMFMessage(in);
}
bool parse(coreutils::PString &in) {
message->parse(in);
return true;
}
coreutils::IMFRequest *request;
coreutils::IMFMessage *message;
coreutils::IMFResponse response; coreutils::IMFResponse response;
}; };
} }
#endif #endif

Binary file not shown.

10
compile
View File

@ -3,17 +3,17 @@
for file in *.cpp for file in *.cpp
do do
filename="${file%.*}" filename="${file%.*}"
list="$list $filename.o" list="$list $filename.o"
echo -n "Compiling $filename..." echo -n "Compiling $filename..."
g++ -g -c -I../CoreUtils -I../ServerCore $file g++ -g -c -I../CoreUtils -I../ServerCore $file
if [ $? = '0' ] if [ $? = '0' ]
then then
echo "OK" echo "OK"
else else
echo "ERROR" echo "ERROR"
exit -1 exit -1
fi fi
done done
wait wait
@ -25,6 +25,6 @@ then
else else
echo "ERROR" echo "ERROR"
exit -1 exit -1
fi fi