Added vscode
This commit is contained in:
parent
8d971c1545
commit
6e4288adf7
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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) {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
BIN
HTTPServer
BIN
HTTPServer
Binary file not shown.
10
compile
10
compile
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user