Added vscode
This commit is contained in:
parent
8d971c1545
commit
6e4288adf7
@ -7,49 +7,43 @@
|
||||
#include "Log.h"
|
||||
|
||||
namespace http {
|
||||
|
||||
|
||||
int HTTPHandler::processCommand(std::string request, core::TCPSession *session, std::stringstream &data) {
|
||||
|
||||
coreutils::Log(coreutils::LOG_DEBUG_1) << "DATA[" << request << "]";
|
||||
coreutils::PString request1(request);
|
||||
|
||||
switch(mode) {
|
||||
case REQUEST:
|
||||
httpRequest = new HTTPRequest(request1);
|
||||
session->server.commands.grabInput(session, *this);
|
||||
mode = IMF;
|
||||
break;
|
||||
|
||||
case IMF:
|
||||
httpRequest->parse(request1);
|
||||
if(request == "") {
|
||||
session->server.commands.clearGrab(session);
|
||||
mode = REQUEST;
|
||||
processHTTPRequest(session, data);
|
||||
}
|
||||
}
|
||||
|
||||
if(!httpRequest) {
|
||||
httpRequest = new HTTPRequest(request1);
|
||||
session->server.commands.grabInput(session, *this);
|
||||
}
|
||||
else {
|
||||
httpRequest->parse(request1);
|
||||
if(request == "") {
|
||||
session->server.commands.clearGrab(session);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
bool HTTPHandler::processHTTPRequest(core::TCPSession *session, std::stringstream &data) {
|
||||
|
||||
|
||||
HTTPSession *httpSession = static_cast<HTTPServer&>(session->server).httpSessions.findSessionByHeader(httpRequest);
|
||||
|
||||
|
||||
std::stringstream content;
|
||||
|
||||
|
||||
if(static_cast<HTTPServer &>(session->server).pageList.processRequest(httpRequest, session, httpSession, content)) {
|
||||
std::string contentType = httpRequest->getHeader("Content-Type");
|
||||
if(contentType == "multipart/form-data") {
|
||||
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.setText("OK");
|
||||
data << httpRequest->response.getResponse(content.str());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
httpRequest->response.setCode("404");
|
||||
httpRequest->response.setText("Not Found");
|
||||
@ -57,5 +51,5 @@ namespace http {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -8,20 +8,18 @@
|
||||
#include "HTTPRequest.h"
|
||||
|
||||
namespace http {
|
||||
|
||||
|
||||
class HTTPHandler : public core::Command {
|
||||
|
||||
|
||||
public:
|
||||
int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override;
|
||||
|
||||
private:
|
||||
HTTPRequest *httpRequest;
|
||||
bool processHTTPRequest(core::TCPSession *session, std::stringstream &data);
|
||||
enum Mode { REQUEST, IMF };
|
||||
Mode mode = REQUEST;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,14 +1,14 @@
|
||||
#include "HTTPPageList.h"
|
||||
|
||||
namespace http {
|
||||
|
||||
bool HTTPPageList::processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data) {
|
||||
httpRequest->response.setProtocol(httpRequest->request->getProtocol());
|
||||
|
||||
bool HTTPPageList::processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data) {
|
||||
httpRequest->response.setProtocol(httpRequest->request.getProtocol());
|
||||
for(auto *page : pages) {
|
||||
if(page->check(httpRequest->request->getURI())) {
|
||||
return page->processCommand(httpRequest->request->getURI(), session, httpSession, httpRequest, data);
|
||||
if(page->check(httpRequest->request.getURI())) {
|
||||
return page->processCommand(httpRequest->request.getURI(), session, httpSession, httpRequest, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -16,9 +16,9 @@ namespace http {
|
||||
page.name = name;
|
||||
pages.push_back(&page);
|
||||
}
|
||||
|
||||
|
||||
void HTTPPageList::remove(HTTPPage &page) {}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,15 +18,15 @@
|
||||
# include "__workflow_js.h"
|
||||
|
||||
namespace http {
|
||||
|
||||
|
||||
class HTTPPageList {
|
||||
|
||||
|
||||
public:
|
||||
HTTPPageList() {
|
||||
HTTPPageList() {
|
||||
add(index, "/");
|
||||
add(script, "/script");
|
||||
add(editview, "/editview");
|
||||
add(editview_js, "/__editview_js");
|
||||
add(editview_js, "/__editview_js");
|
||||
add(style, "/style");
|
||||
add(setupadmin, "/setupadmin");
|
||||
add(favicon_ico, "/favicon.ico");
|
||||
@ -36,17 +36,17 @@ namespace http {
|
||||
add(viewlist, "/viewlist");
|
||||
add(workflow, "/workflow");
|
||||
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 remove(HTTPPage &page);
|
||||
|
||||
|
||||
protected:
|
||||
std::vector<HTTPPage *> pages;
|
||||
|
||||
|
||||
private:
|
||||
__index index;
|
||||
__script script;
|
||||
@ -61,7 +61,7 @@ namespace http {
|
||||
__viewlist viewlist;
|
||||
__workflow workflow;
|
||||
__workflow_js workflow_js;
|
||||
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -11,22 +11,14 @@
|
||||
namespace http {
|
||||
|
||||
class HTTPRequest : public coreutils::IMFMessage {
|
||||
|
||||
|
||||
public:
|
||||
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;
|
||||
HTTPRequest(coreutils::PString &in) : IMFMessage(in) {}
|
||||
|
||||
coreutils::IMFResponse response;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
BIN
HTTPServer
BIN
HTTPServer
Binary file not shown.
10
compile
10
compile
@ -3,17 +3,17 @@
|
||||
for file in *.cpp
|
||||
do
|
||||
filename="${file%.*}"
|
||||
list="$list $filename.o"
|
||||
list="$list $filename.o"
|
||||
echo -n "Compiling $filename..."
|
||||
g++ -g -c -I../CoreUtils -I../ServerCore $file
|
||||
g++ -g -c -I../CoreUtils -I../ServerCore $file
|
||||
if [ $? = '0' ]
|
||||
then
|
||||
echo "OK"
|
||||
else
|
||||
echo "ERROR"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
wait
|
||||
@ -25,6 +25,6 @@ then
|
||||
else
|
||||
echo "ERROR"
|
||||
exit -1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user