many changes towards cgi handling for jetserver.

This commit is contained in:
Brad Arant 2019-07-10 14:16:18 -07:00
parent 2a7c27dac5
commit c5ec0732a1
27 changed files with 1177 additions and 153 deletions

Binary file not shown.

View File

@ -8,10 +8,14 @@ Debug/main.cpp.o: main.cpp ../ServerCore/includes ../ServerCore/EPoll.h \
../ServerCore/CommandList.h ../ServerCore/EPoll.h \ ../ServerCore/CommandList.h ../ServerCore/EPoll.h \
../ServerCore/Exception.h ../ServerCore/File.h ../ServerCore/Log.h \ ../ServerCore/Exception.h ../ServerCore/File.h ../ServerCore/Log.h \
../ServerCore/IPAddress.h HTTPService.h ../ServerCore/Service.h \ ../ServerCore/IPAddress.h HTTPService.h ../ServerCore/Service.h \
HTTPSessions.h ../ServerCore/Header.h ../ServerCore/Response.h \ HTTPSessions.h HTTPRequest.h ../CoreUtils/PString.h \
PageList.h ../ServerCore/CommandList.h ../ServerCore/Session.h __index.h \ ../CoreUtils/includes ../CoreUtils/IMFMessage.h ../CoreUtils/PString.h \
HTTPPage.h HTTPSession.h __setupadmin.h __favicon_ico.h HTTPHandler.h \ ../CoreUtils/IMFHeader.h ../CoreUtils/IMFRequest.h \
../ServerCore/Command.h ../CoreUtils/IMFBody.h ../CoreUtils/IMFRequest.h \
../CoreUtils/IMFResponse.h ../CoreUtils/IMFMessage.h HTTPPageList.h \
../ServerCore/Session.h __index.h HTTPPage.h HTTPSession.h __script.h \
__editview.h __style.h __setupadmin.h __favicon_ico.h __welcome.h \
__mainmenu.h __newview.h HTTPHandler.h ../ServerCore/Command.h
../ServerCore/includes: ../ServerCore/includes:
@ -63,13 +67,29 @@ HTTPService.h:
HTTPSessions.h: HTTPSessions.h:
../ServerCore/Header.h: HTTPRequest.h:
../ServerCore/Response.h: ../CoreUtils/PString.h:
PageList.h: ../CoreUtils/includes:
../ServerCore/CommandList.h: ../CoreUtils/IMFMessage.h:
../CoreUtils/PString.h:
../CoreUtils/IMFHeader.h:
../CoreUtils/IMFRequest.h:
../CoreUtils/IMFBody.h:
../CoreUtils/IMFRequest.h:
../CoreUtils/IMFResponse.h:
../CoreUtils/IMFMessage.h:
HTTPPageList.h:
../ServerCore/Session.h: ../ServerCore/Session.h:
@ -79,10 +99,22 @@ HTTPPage.h:
HTTPSession.h: HTTPSession.h:
__script.h:
__editview.h:
__style.h:
__setupadmin.h: __setupadmin.h:
__favicon_ico.h: __favicon_ico.h:
__welcome.h:
__mainmenu.h:
__newview.h:
HTTPHandler.h: HTTPHandler.h:
../ServerCore/Command.h: ../ServerCore/Command.h:

View File

@ -1,34 +1,35 @@
#include "HTTPHandler.h" #include "HTTPHandler.h"
#include "HTTPSession.h" #include "HTTPSession.h"
#include "HTTPService.h" #include "HTTPService.h"
#include "HTTPRequest.h"
#include "PString.h"
#include "Log.h" #include "Log.h"
namespace http { namespace http {
int HTTPHandler::processCommand(std::string request, core::Session *session, std::stringstream &data) { int HTTPHandler::processCommand(std::string request, core::Session *session, std::stringstream &data) {
core::Header header(request); coreutils::PString request1(request);
core::Response response; HTTPRequest httpRequest(request1);
core::Log(core::LOG_DEBUG_1) << "Request: " << request; core::Log(core::LOG_DEBUG_2) << "Host value is " << httpRequest.getHeader("Host");
core::Log(core::LOG_DEBUG_3) << "Request: " << request;
HTTPSession *httpSession = ((HTTPService &)session->service).httpSessions.findSessionByHeader(header, response); HTTPSession *httpSession = ((HTTPService &)session->service).httpSessions.findSessionByHeader(httpRequest);
std::stringstream content; std::stringstream content;
if(((HTTPService &)session->service).pageList.processRequest(header.getPath() + " ", session, httpSession, content)) { if(((HTTPService &)session->service).pageList.processRequest(httpRequest.request.getURI(), session, httpSession, httpRequest, content)) {
response.setProtocol(header.requestProtocol()); httpRequest.response.setProtocol(httpRequest.request.getProtocol());
response.setCode("200"); httpRequest.response.setCode("200");
response.setText("OK"); httpRequest.response.setText("OK");
response.setMimeType("text/html"); data << httpRequest.response.getResponse(content.str());
data << response.getResponse(content.str());
} }
else { else {
response.setProtocol(header.requestProtocol()); httpRequest.response.setProtocol(httpRequest.request.getProtocol());
response.setCode("404"); httpRequest.response.setCode("404");
response.setText("Not Found"); httpRequest.response.setText("Not Found");
response.setMimeType("text/html"); data << httpRequest.response.getResponse(content.str());
data << response.getResponse(content.str());
} }
return true; return true;

View File

@ -3,8 +3,6 @@
#include "Command.h" #include "Command.h"
#include "Session.h" #include "Session.h"
#include "Header.h"
#include "Response.h"
#include "Log.h" #include "Log.h"
namespace http { namespace http {

View File

@ -2,13 +2,29 @@
#define __HTTPPage_h__ #define __HTTPPage_h__
#include "HTTPSession.h" #include "HTTPSession.h"
#include "Log.h"
namespace http { namespace http {
class HTTPPage : public core::Object { class HTTPPage : public core::Object {
public: public:
virtual int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, std::stringstream &data) { bool check(std::string request) {
if(request != "") {
if(name.length() > 0) {
if(name == request)
return true;
}
return false;
}
return false;
}
virtual int processCommand(std::string request,
core::Session *session,
HTTPSession *httpSession,
HTTPRequest &httpRequest,
std::stringstream &data) {
return false; return false;
} }

View File

@ -2,10 +2,10 @@
namespace http { namespace http {
bool HTTPPageList::processRequest(std::string request, core::Session *session, HTTPSession *httpSession, std::stringstream &data) { bool HTTPPageList::processRequest(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) {
for(auto *page : pages) { for(auto *page : pages) {
if(page->check(request)) { if(page->check(request)) {
page->processCommand(request, session, httpSession, data); page->processCommand(request, session, httpSession, httpRequest, data);
return true; return true;
} }
} }
@ -13,8 +13,8 @@ namespace http {
} }
void HTTPPageList::add(HTTPPage &page, std::string name) { void HTTPPageList::add(HTTPPage &page, std::string name) {
page.setName(name); page.name = name;
pages.push_back(&command); pages.push_back(&page);
} }

View File

@ -2,9 +2,16 @@
#define __HTTPPageList_h__ #define __HTTPPageList_h__
#include "Session.h" #include "Session.h"
#include "HTTPRequest.h"
#include "__index.h" #include "__index.h"
#include "__script.h"
#include "__editview.h"
#include "__style.h"
#include "__setupadmin.h" #include "__setupadmin.h"
#include "__favicon_ico.h" #include "__favicon_ico.h"
#include "__welcome.h"
#include "__mainmenu.h"
#include "__newview.h"
namespace http { namespace http {
@ -12,12 +19,18 @@ namespace http {
public: public:
HTTPPageList() { HTTPPageList() {
add(index, "/ "); add(index, "/");
add(setupadmin, "/setupadmin "); add(script, "/script");
add(editview, "/editview");
add(style, "/style");
add(setupadmin, "/setupadmin");
add(favicon_ico, "/favicon.ico"); add(favicon_ico, "/favicon.ico");
add(welcome, "/welcome");
add(mainmenu, "/mainmenu");
add(newview, "/newview");
} }
bool processRequest(std::string request, core::Session *session, HTTPSession *httpSession, std::stringstream &data); bool processRequest(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data);
void add(HTTPPage &page, std::string name = ""); void add(HTTPPage &page, std::string name = "");
@ -28,8 +41,14 @@ namespace http {
private: private:
__index index; __index index;
__script script;
__style style;
__editview editview;
__setupadmin setupadmin; __setupadmin setupadmin;
__favicon_ico favicon_ico; __favicon_ico favicon_ico;
__welcome welcome;
__mainmenu mainmenu;
__newview newview;
}; };

27
HTTPRequest.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef __HTTPRequest_h__
#define __HTTPRequest_h__
#include "PString.h"
#include "IMFMessage.h"
#include "IMFRequest.h"
#include "IMFResponse.h"
namespace http {
class HTTPRequest : public coreutils::IMFMessage {
public:
HTTPRequest();
HTTPRequest(coreutils::PString &in) {
request = coreutils::IMFRequest(in);
parse(in);
}
coreutils::IMFRequest request;
coreutils::IMFResponse response;
};
}
#endif

View File

@ -5,16 +5,16 @@
## Debug ## Debug
ProjectName :=HTTPServer ProjectName :=HTTPServer
ConfigurationName :=Debug ConfigurationName :=Debug
WorkspacePath :=/home/barant WorkspacePath :=/home/bradarant/barant
ProjectPath :=/home/barant/barant/HTTPServer ProjectPath :=/home/bradarant/barant/HTTPServer
IntermediateDirectory :=./Debug IntermediateDirectory :=./Debug
OutDir := $(IntermediateDirectory) OutDir := $(IntermediateDirectory)
CurrentFileName := CurrentFileName :=
CurrentFilePath := CurrentFilePath :=
CurrentFileFullPath := CurrentFileFullPath :=
User :=root User :=Brad Arant
Date :=05/31/19 Date :=10/07/19
CodeLitePath :=/home/barant/.codelite CodeLitePath :=/home/bradarant/.codelite
LinkerName :=/usr/bin/x86_64-linux-gnu-g++ LinkerName :=/usr/bin/x86_64-linux-gnu-g++
SharedObjectLinkerName :=/usr/bin/x86_64-linux-gnu-g++ -shared -fPIC SharedObjectLinkerName :=/usr/bin/x86_64-linux-gnu-g++ -shared -fPIC
ObjectSuffix :=.o ObjectSuffix :=.o
@ -36,12 +36,12 @@ ObjectsFileList :="HTTPServer.txt"
PCHCompileFlags := PCHCompileFlags :=
MakeDirCommand :=mkdir -p MakeDirCommand :=mkdir -p
LinkOptions := LinkOptions :=
IncludePath := $(IncludeSwitch). $(IncludeSwitch). $(IncludeSwitch)../ServerCore/ IncludePath := $(IncludeSwitch). $(IncludeSwitch). $(IncludeSwitch)../ServerCore/ $(IncludeSwitch)../CoreUtils
IncludePCH := IncludePCH :=
RcIncludePath := RcIncludePath :=
Libs := $(LibrarySwitch)ServerCore $(LibrarySwitch)pthread $(LibrarySwitch)uuid Libs := $(LibrarySwitch)ServerCore $(LibrarySwitch)CoreUtils $(LibrarySwitch)pthread $(LibrarySwitch)uuid
ArLibs := "ServerCore" "pthread" "uuid" ArLibs := "ServerCore" "CoreUtils" "pthread" "uuid"
LibPath := $(LibraryPathSwitch). $(LibraryPathSwitch)../ServerCore/Debug/ LibPath := $(LibraryPathSwitch). $(LibraryPathSwitch)../ServerCore/Debug/ $(LibraryPathSwitch)../CoreUtils/Debug
## ##
## Common variables ## Common variables
@ -92,7 +92,7 @@ PreBuild:
## Objects ## Objects
## ##
$(IntermediateDirectory)/main.cpp$(ObjectSuffix): main.cpp $(IntermediateDirectory)/main.cpp$(DependSuffix) $(IntermediateDirectory)/main.cpp$(ObjectSuffix): main.cpp $(IntermediateDirectory)/main.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/home/barant/barant/HTTPServer/main.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IncludePath) $(CXX) $(IncludePCH) $(SourceSwitch) "/home/bradarant/barant/HTTPServer/main.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/main.cpp$(DependSuffix): main.cpp $(IntermediateDirectory)/main.cpp$(DependSuffix): main.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/main.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/main.cpp$(DependSuffix) -MM main.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/main.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/main.cpp$(DependSuffix) -MM main.cpp
@ -100,7 +100,7 @@ $(IntermediateDirectory)/main.cpp$(PreprocessSuffix): main.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main.cpp$(PreprocessSuffix) main.cpp $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main.cpp$(PreprocessSuffix) main.cpp
$(IntermediateDirectory)/HTTPSession.cpp$(ObjectSuffix): HTTPSession.cpp $(IntermediateDirectory)/HTTPSession.cpp$(DependSuffix) $(IntermediateDirectory)/HTTPSession.cpp$(ObjectSuffix): HTTPSession.cpp $(IntermediateDirectory)/HTTPSession.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/home/barant/barant/HTTPServer/HTTPSession.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPSession.cpp$(ObjectSuffix) $(IncludePath) $(CXX) $(IncludePCH) $(SourceSwitch) "/home/bradarant/barant/HTTPServer/HTTPSession.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPSession.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/HTTPSession.cpp$(DependSuffix): HTTPSession.cpp $(IntermediateDirectory)/HTTPSession.cpp$(DependSuffix): HTTPSession.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPSession.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPSession.cpp$(DependSuffix) -MM HTTPSession.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPSession.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPSession.cpp$(DependSuffix) -MM HTTPSession.cpp
@ -108,7 +108,7 @@ $(IntermediateDirectory)/HTTPSession.cpp$(PreprocessSuffix): HTTPSession.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/HTTPSession.cpp$(PreprocessSuffix) HTTPSession.cpp $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/HTTPSession.cpp$(PreprocessSuffix) HTTPSession.cpp
$(IntermediateDirectory)/HTTPSessions.cpp$(ObjectSuffix): HTTPSessions.cpp $(IntermediateDirectory)/HTTPSessions.cpp$(DependSuffix) $(IntermediateDirectory)/HTTPSessions.cpp$(ObjectSuffix): HTTPSessions.cpp $(IntermediateDirectory)/HTTPSessions.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/home/barant/barant/HTTPServer/HTTPSessions.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPSessions.cpp$(ObjectSuffix) $(IncludePath) $(CXX) $(IncludePCH) $(SourceSwitch) "/home/bradarant/barant/HTTPServer/HTTPSessions.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPSessions.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/HTTPSessions.cpp$(DependSuffix): HTTPSessions.cpp $(IntermediateDirectory)/HTTPSessions.cpp$(DependSuffix): HTTPSessions.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPSessions.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPSessions.cpp$(DependSuffix) -MM HTTPSessions.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPSessions.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPSessions.cpp$(DependSuffix) -MM HTTPSessions.cpp
@ -116,7 +116,7 @@ $(IntermediateDirectory)/HTTPSessions.cpp$(PreprocessSuffix): HTTPSessions.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/HTTPSessions.cpp$(PreprocessSuffix) HTTPSessions.cpp $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/HTTPSessions.cpp$(PreprocessSuffix) HTTPSessions.cpp
$(IntermediateDirectory)/HTTPHandler.cpp$(ObjectSuffix): HTTPHandler.cpp $(IntermediateDirectory)/HTTPHandler.cpp$(DependSuffix) $(IntermediateDirectory)/HTTPHandler.cpp$(ObjectSuffix): HTTPHandler.cpp $(IntermediateDirectory)/HTTPHandler.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/home/barant/barant/HTTPServer/HTTPHandler.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPHandler.cpp$(ObjectSuffix) $(IncludePath) $(CXX) $(IncludePCH) $(SourceSwitch) "/home/bradarant/barant/HTTPServer/HTTPHandler.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPHandler.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/HTTPHandler.cpp$(DependSuffix): HTTPHandler.cpp $(IntermediateDirectory)/HTTPHandler.cpp$(DependSuffix): HTTPHandler.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPHandler.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPHandler.cpp$(DependSuffix) -MM HTTPHandler.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPHandler.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPHandler.cpp$(DependSuffix) -MM HTTPHandler.cpp
@ -124,7 +124,7 @@ $(IntermediateDirectory)/HTTPHandler.cpp$(PreprocessSuffix): HTTPHandler.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/HTTPHandler.cpp$(PreprocessSuffix) HTTPHandler.cpp $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/HTTPHandler.cpp$(PreprocessSuffix) HTTPHandler.cpp
$(IntermediateDirectory)/HTTPPageList.cpp$(ObjectSuffix): HTTPPageList.cpp $(IntermediateDirectory)/HTTPPageList.cpp$(DependSuffix) $(IntermediateDirectory)/HTTPPageList.cpp$(ObjectSuffix): HTTPPageList.cpp $(IntermediateDirectory)/HTTPPageList.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "/home/barant/barant/HTTPServer/HTTPPageList.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPPageList.cpp$(ObjectSuffix) $(IncludePath) $(CXX) $(IncludePCH) $(SourceSwitch) "/home/bradarant/barant/HTTPServer/HTTPPageList.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/HTTPPageList.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/HTTPPageList.cpp$(DependSuffix): HTTPPageList.cpp $(IntermediateDirectory)/HTTPPageList.cpp$(DependSuffix): HTTPPageList.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPPageList.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPPageList.cpp$(DependSuffix) -MM HTTPPageList.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/HTTPPageList.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/HTTPPageList.cpp$(DependSuffix) -MM HTTPPageList.cpp

View File

@ -17,6 +17,13 @@
<File Name="HTTPPage.h"/> <File Name="HTTPPage.h"/>
<File Name="HTTPPageList.h"/> <File Name="HTTPPageList.h"/>
<File Name="HTTPPageList.cpp"/> <File Name="HTTPPageList.cpp"/>
<File Name="__welcome.h"/>
<File Name="__script.h"/>
<File Name="__style.h"/>
<File Name="__editview.h"/>
<File Name="__mainmenu.h"/>
<File Name="__newview.h"/>
<File Name="HTTPRequest.h"/>
</VirtualDirectory> </VirtualDirectory>
<Dependencies Name="Debug"/> <Dependencies Name="Debug"/>
<Dependencies Name="Release"/> <Dependencies Name="Release"/>
@ -34,10 +41,13 @@
<Compiler Options="-g;-O0;-Wall" C_Options="-g;-O0;-Wall" Assembler="" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" PCHFlags="" PCHFlagsPolicy="0"> <Compiler Options="-g;-O0;-Wall" C_Options="-g;-O0;-Wall" Assembler="" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" PCHFlags="" PCHFlagsPolicy="0">
<IncludePath Value="."/> <IncludePath Value="."/>
<IncludePath Value="../ServerCore/"/> <IncludePath Value="../ServerCore/"/>
<IncludePath Value="../CoreUtils"/>
</Compiler> </Compiler>
<Linker Options="" Required="yes"> <Linker Options="" Required="yes">
<LibraryPath Value="../ServerCore/Debug/"/> <LibraryPath Value="../ServerCore/Debug/"/>
<LibraryPath Value="../CoreUtils/Debug"/>
<Library Value="ServerCore"/> <Library Value="ServerCore"/>
<Library Value="CoreUtils"/>
<Library Value="pthread"/> <Library Value="pthread"/>
<Library Value="uuid"/> <Library Value="uuid"/>
</Linker> </Linker>

View File

@ -1 +1 @@
./Debug/main.cpp.o ./Debug/HTTPSession.cpp.o ./Debug/HTTPSessions.cpp.o ./Debug/HTTPHandler.cpp.o ./Debug/main.cpp.o ./Debug/HTTPSession.cpp.o ./Debug/HTTPSessions.cpp.o ./Debug/HTTPHandler.cpp.o ./Debug/HTTPPageList.cpp.o

View File

@ -2,6 +2,11 @@
namespace http { namespace http {
HTTPSession::HTTPSession() {
sessionId = "";
}
HTTPSession::HTTPSession(std::string sessionId) { HTTPSession::HTTPSession(std::string sessionId) {
this->sessionId = sessionId; this->sessionId = sessionId;
} }

View File

@ -1,16 +1,20 @@
#ifndef __HTTPSession_h__ #ifndef __HTTPSession_h__
#define __HTTPSession_h__ #define __HTTPSession_h__
#include "Response.h" #include "includes"
namespace http { namespace http {
class HTTPSession { class HTTPSession {
public: public:
HTTPSession();
HTTPSession(std::string sessionId); HTTPSession(std::string sessionId);
std::string getSessionId(); std::string getSessionId();
jet::Variables sessionVariables;
jet::Variables cgiFormVariables;
private: private:
std::string sessionId; std::string sessionId;

View File

@ -5,19 +5,27 @@
namespace http { namespace http {
HTTPSession * HTTPSessions::findSessionByHeader(core::Header &header, core::Response &response) { HTTPSession * HTTPSessions::findSessionByHeader(HTTPRequest &httpRequest) {
std::string sessionId = header.getCookie("sessionId"); std::string sessionId = httpRequest.getHeaderKeyPairValue("Cookie", "sessionId");
HTTPSession *session = findSessionById(sessionId, response); HTTPSession *session = findSessionById(sessionId, httpRequest);
return session; return session;
} }
HTTPSession * HTTPSessions::findSessionById(std::string sessionId, core::Response &response) { HTTPSession * HTTPSessions::findSessionById(std::string sessionId, HTTPRequest &httpRequest) {
HTTPSession *httpSession; HTTPSession *httpSession;
if(sessionId.length() > 0) { if(sessionId.length() > 0) {
httpSession = (HTTPSession *)sessions.find(sessionId)->second; std::map<std::string, HTTPSession*>::iterator ix;
ix = sessions.find(sessionId);
httpSession = ix->second;
if(ix == sessions.end()) {
httpSession = createHTTPSession();
httpRequest.response.setCookie("sessionId", httpSession->getSessionId());
}
core::Log(core::LOG_DEBUG_1) << "http session: " << "(" << sessionId << ") " << httpSession;
} else { } else {
httpSession = createHTTPSession(); httpSession = createHTTPSession();
response.setCookie("sessionId", httpSession->getSessionId()); httpRequest.response.setCookie("sessionId", httpSession->getSessionId());
} }
return httpSession; return httpSession;
} }

View File

@ -1,8 +1,7 @@
#ifndef __HTTPSessions_h__ #ifndef __HTTPSessions_h__
#define __HTTPSessions_h__ #define __HTTPSessions_h__
#include "Header.h" #include "HTTPRequest.h"
#include "Response.h"
namespace http { namespace http {
@ -11,8 +10,8 @@ namespace http {
class HTTPSessions { class HTTPSessions {
public: public:
HTTPSession * findSessionByHeader(core::Header &header, core::Response &response); HTTPSession * findSessionByHeader(HTTPRequest &httpRequest);
HTTPSession * findSessionById(std::string sessionId, core::Response &response); HTTPSession * findSessionById(std::string sessionId, HTTPRequest &httpRequest);
private: private:
HTTPSession * createHTTPSession(); HTTPSession * createHTTPSession();

Binary file not shown.

View File

@ -7,9 +7,11 @@ Release/main.cpp.o: main.cpp ../ServerCore/includes ../ServerCore/EPoll.h \
../ServerCore/TCPServerSocket.h ../ServerCore/Service.h \ ../ServerCore/TCPServerSocket.h ../ServerCore/Service.h \
../ServerCore/CommandList.h ../ServerCore/EPoll.h \ ../ServerCore/CommandList.h ../ServerCore/EPoll.h \
../ServerCore/Exception.h ../ServerCore/File.h ../ServerCore/Log.h \ ../ServerCore/Exception.h ../ServerCore/File.h ../ServerCore/Log.h \
../ServerCore/IPAddress.h HTTPService.h ../ServerCore/Service.h _GET.h \ ../ServerCore/IPAddress.h HTTPService.h ../ServerCore/Service.h \
../ServerCore/Command.h ../ServerCore/Session.h ../ServerCore/Header.h \ HTTPSessions.h ../ServerCore/Header.h ../ServerCore/Response.h \
../ServerCore/Response.h _POST.h HTTPPageList.h ../ServerCore/Session.h __index.h HTTPPage.h \
HTTPSession.h __script.h __style.h __setupadmin.h __favicon_ico.h \
__welcome.h HTTPHandler.h ../ServerCore/Command.h
../ServerCore/includes: ../ServerCore/includes:
@ -59,14 +61,32 @@ HTTPService.h:
../ServerCore/Service.h: ../ServerCore/Service.h:
_GET.h: HTTPSessions.h:
../ServerCore/Command.h:
../ServerCore/Session.h:
../ServerCore/Header.h: ../ServerCore/Header.h:
../ServerCore/Response.h: ../ServerCore/Response.h:
_POST.h: HTTPPageList.h:
../ServerCore/Session.h:
__index.h:
HTTPPage.h:
HTTPSession.h:
__script.h:
__style.h:
__setupadmin.h:
__favicon_ico.h:
__welcome.h:
HTTPHandler.h:
../ServerCore/Command.h:

307
__editbiew.js Normal file
View File

@ -0,0 +1,307 @@
var mainpage;
var result;
var mousedownx;
var mousedowny;
var mouseDownWidth;
var mouseDownHeight;
var ismousedown = false;
var dragobject;
var dragHint = "move";
var data;
var showGrid = false;
var snapToGrid = false;
var gridSize = 10;
var selected;
var itemparameters;
function init() {
mainpage = document.getElementById("mainpage");
data = document.getElementById("data");
itemparameters = document.getElementById("itemparameters");
var gridsize = document.getElementById("gridsize");
gridsize.value = gridSize;
drawGrid();
}
function drawGrid() {
var grid = document.getElementById("grid");
var context = grid.getContext("2d");
if(showGrid == true) {
context.clearRect(0,0,grid.width,grid.height);
context.globalAlpha = 0.2;
context.lineWidth = 0.5;
for(ix = 0; ix < grid.width; ix += gridSize) {
context.beginPath();
context.moveTo(ix, 0);
context.lineTo(ix, grid.height);
context.stroke();
context.beginPath();
context.moveTo(0, ix);
context.lineTo(grid.width, ix);
context.stroke();
}
} else {
context.clearRect(0,0,grid.width,grid.height);
}
}
function setDragHint(hint) {
dragHint = hint;
}
function getMouseX(e) {
return e.clientX - mainpage.offsetLeft - parseFloat(mainpage.style.borderWidth);
}
function getMouseY(e) {
return e.clientY - mainpage.offsetTop - parseFloat(mainpage.style.borderWidth);
}
function mousedown(obj, e) {
var mouseX = getMouseX(e);
var mouseY = getMouseY(e);
mousedownx = mouseX - obj.offsetLeft;
mousedowny = mouseY - obj.offsetTop;
mouseDownLeft = parseFloat(obj.style.left);
mouseDownTop = parseFloat(obj.style.top);
mouseDownWidth = parseFloat(obj.style.width);
mouseDownHeight = parseFloat(obj.style.height);
dragobject = obj;
selected = obj;
ismousedown = true;
displayParameters();
}
function mouseup() {
ismousedown = false;
dragobject = null;
console.log(mainpage.innerHTML);
}
function mousemove(e) {
var mouseX = getMouseX(e);
var mouseY = getMouseY(e);
if(ismousedown) {
if(dragHint == "move") {
if(snapToGrid == false) {
dragobject.style.left = (mouseX - mousedownx) + "px";
dragobject.style.top = (mouseY - mousedowny) + "px";
} else {
dragobject.style.left = (Math.round((mouseX - mousedownx) / gridSize) * gridSize) + "px";
dragobject.style.top = (Math.round((mouseY - mousedowny) / gridSize) * gridSize) + "px";
}
if((mouseX - mousedownx) < 0)
dragobject.style.left = "0px";
if((mouseY - mousedowny) < 0)
dragobject.style.top = "0px";
if((mouseX - mousedownx + parseFloat(dragobject.style.width)) > parseFloat(mainpage.style.width))
dragobject.style.left = (mouseX - mousedownx) + "px";
} else if(dragHint == "rightbottomresize") {
dragobject.style.width = (mouseX - mouseDownLeft) + "px";
dragobject.style.height = (mouseY - mouseDownTop) + "px";
} else if(dragHint == "rightresize") {
if(snapToGrid == false) {
dragobject.style.width = (mouseX - mouseDownLeft) + "px";
} else {
dragobject.style.width = (Math.round((mouseX - mouseDownLeft) / gridSize) * gridSize) + "px";
}
} else if(dragHint == "bottomresize") {
if(snapToGrid == false) {
dragobject.style.height = (mouseY - mouseDownTop) + "px";
} else {
dragobject.style.height = (Math.round((mouseY - mouseDownTop) / gridSize) * gridSize) + "px";
}
} else if(dragHint == "leftresize") {
dragobject.style.left = mouseX + "px";
dragobject.style.width = (mouseDownWidth + (mouseDownLeft - mouseX)) + "px";
} else if(dragHint == "topresize") {
dragobject.style.top = mouseY + "px";
dragobject.style.height = (mouseDownHeight + (mouseDownTop - mouseY)) + "px";
}
data.innerHTML = "<p>" + dragobject.nodeName + "<br>" +
"Action: " + dragHint + "<br>" +
"MouseLocation: " + mouseX + ":" + mouseY + "<br>" +
"MouseOver Location: " + (mouseX - dragobject.offsetLeft) + ":" + (mouseY - dragobject.offsetTop) + "<br>" +
"Location: " + dragobject.style.left + ":" + dragobject.style.top + "<br>" +
"Size: " + dragobject.style.width + ":" + dragobject.style.height + "<br>" +
"</p>";
} else {
var mouseabove = document.elementFromPoint(mouseX + mainpage.offsetLeft, mouseY + mainpage.offsetTop);
if((mouseabove.id != "mainpage") && (mouseabove.id != "grid")) {
data.innerHTML = "<p>" + mouseabove.nodeName + "<br>" +
"Action: " + dragHint + "<br>" +
"MouseLocation: " + mouseX + ":" + mouseY + "<br>" +
"MouseOver Location: " + (mouseX - mouseabove.offsetLeft) + ":" + (mouseY - mouseabove.offsetTop) + "<br>" +
"Location: " + mouseabove.style.left + ":" + mouseabove.style.top + "<br>" +
"Size: " + mouseabove.style.width + ":" + mouseabove.style.height + "<br>" +
"</p>";
if((mouseabove.nodeName == "DIV") ||
(mouseabove.nodeName == "IMG") ||
(mouseabove.nodeName == "BUTTON") ||
(mouseabove.nodeName == "INPUT") ||
(mouseabove.nodeName == "SPAN")) {
if((parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) &&
(parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {
mouseabove.style.cursor = "nwse-resize";
dragHint = "rightbottomresize";
} else if((parseFloat(mouseabove.style.left) <= (mouseX - mouseabove.offsetLeft)) &&
((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop))) {
mouseabove.style.cursor = "nesw-resize";
dragHint = "righttopresize";
} else if(((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) &&
(parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {
mouseabove.style.cursor = "nesw-resize";
dragHint = "leftbottomresize";
} else if(parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) {
mouseabove.style.cursor = "ew-resize";
dragHint = "rightresize";
} else if(parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop)) {
mouseabove.style.cursor = "ns-resize";
dragHint = "bottomresize";
} else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) {
mouseabove.style.cursor = "ew-resize";
dragHint = "leftresize";
} else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop)) {
mouseabove.style.cursor = "ns-resize";
dragHint = "topresize";
} else {
mouseabove.style.cursor = "move";
dragHint = "move";
}
} else {
mouseabove.style.cursor = "default";
}
} else {
mouseabove.style.cursor = "default";
dragHint = "";
data.innerHTML = "<p></p>";
}
}
displayParameters();
}
function displayParameters() {
itemparameters.innerHTML = "<p>" + selected.nodeName + ": " + selected.id + "<br>" +
"Location: " + selected.style.left + ":" + selected.style.top + "<br>" +
"Size: " + selected.style.width + ":" + selected.style.height + "<br>" +
"</p>";
}
</script>
<style>
@font-face {
font-family: bebasneue;
src: url('http://68.108.72.78:8080/fonts/BebasNeue.otf');
}
</style>
</head>
<body ondragstart="return false;"
ondrop="return false;"
onload="init(); return true;">
<div style="position: relative;">
<div id="window1" style="position: absolute; left: 0px; top: 0px; border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;">
<span style="font: 20px bebasneue;">View Editor</span>
<div id="mainpage"
style="width: 600px; height: 600px; border: 1px solid black; position: relative; background: #ffffff;"
onmousemove="mousemove(event); return true;"
onmouseup="mouseup(); return true;">
<canvas id="grid" width="600px" height="600px" style="position: absolute; left: 0px; top: 0px; alpha: 0.5; cursor: normal;"></canvas>
<img id="img1" style="position: absolute; user-select: none;" onmousedown="mousedown(this, event); return true;" src="images/barant_web_logo.png" width="336" height="69">
<img id="img2" style="position: absolute; user-select: none;" onmousedown="mousedown(this, event); return true;" src="images/barant_web_logo.png" width="336" height="69">
<button id="button1"
style="width: 100px; height: 50px; border: 2px solid green; position: absolute;"
onmousedown="mousedown(this, event); return true;">Press</button>
<div id="div1"
style="width: 100px; height: 50px; border: 2px solid green; position: absolute;"
onmousedown="mousedown(this, event); return true;">
</div>
<div id="div2"
style="width: 100px; height: 50px; border: 0px; position: absolute; background: #404040;"
onmousedown="mousedown(this, event); return true;">
</div>
<div id="div3"
style="width: 100px; height: 100px; border: 10px solid red; position: absolute; background: #ffff80;"
onmousedown="mousedown(this, event); return true;">
</div>
<span id="text1" onmousedown="mousedown(this, event); return true;"
style="position: absolute; user-select: none; border: 1pt solid black; background: #8080c0;">This is a text label</span>
<input id="input1" style="position: absolute;" onmousedown="mousedown(this, event); return true;" type="input" name="drag5" size="50">
</div>
</div>
<div id="window3" style="position:absolute; top: 235px; left: 610px;
border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;">
<span style="font: 20px bebasneue;">OPTIONS</span>
<div style="width: 150px; height: 300px; color: #000000; border: 1px solid black; position: relative; background: #ffffff;"
onmousemove="mousemove(event); return true;"
onmouseup="mouseup(); return true;">
<div id="controls">
<input type="checkbox" name="grid" onchange="showGrid = this.checked; drawGrid(); return true;"><span style="font: 12px bebasneue; margin-bottom: 2px;">Show Grid</span><br>
<input type="checkbox" name="snaptogrid" onchange="snapToGrid = this.checked; return true;"><span style="font: 12px bebasneue; margin-bottom: 2px;">Snap To Grid</span><br>
<span style="font: 12px bebasneue; margin-bottom: 2px;">Grid Size: </span><input type="text" name="gridsize" id="gridsize" style="width: 20px;" size="3" onchange="gridSize = parseInt(this.value); drawGrid(); return true;"><br>
</div>
<div id="itemparameters" style="font: 12px bebasneue;"></div>
<div id="data" style="font: 12px bebasneue;">
<p>NO DATA</p>
</div>
</div>
</div>
<div id="window2" style="position:absolute; top: 0px; left: 610px; border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;">
<span style="font: 20px bebasneue;">Toolbar</span>
<div id="toolbar"
style="width: 80px; height: 200px; border: 1px solid black; position: relative; background: #ffffff;"
onmousemove="mousemove(event); return true;"
onmouseup="mouseup(); return true;">
<button id="button1"
style="width: 40px; height: 40px; border: 2px solid green; position: absolute;"
onmousedown="mousedown(this, event); return true;">Press</button>
</div>
</div>
</div>
</body>
</html>

223
__editview.h Normal file
View File

@ -0,0 +1,223 @@
#ifndef ____editview_h__
#define ____editview_h__
#include "HTTPPage.h"
namespace http {
class __editview : public HTTPPage {
int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
data << "" << std::endl;
data << "" << std::endl;
data << " var mainpage;" << std::endl;
data << " var result;" << std::endl;
data << " var mousedownx;" << std::endl;
data << " var mousedowny;" << std::endl;
data << " var mouseDownWidth;" << std::endl;
data << " var mouseDownHeight;" << std::endl;
data << " var ismousedown = false;" << std::endl;
data << " var dragobject;" << std::endl;
data << " var dragHint = \"move\";" << std::endl;
data << " var data;" << std::endl;
data << " var showGrid = false;" << std::endl;
data << " var snapToGrid = false;" << std::endl;
data << " var gridSize = 10;" << std::endl;
data << " var selected;" << std::endl;
data << " var itemparameters;" << std::endl;
data << "" << std::endl;
data << " function init() {" << std::endl;
data << " mainpage = document.getElementById(\"mainpage\");" << std::endl;
data << " data = document.getElementById(\"data\");" << std::endl;
data << " itemparameters = document.getElementById(\"itemparameters\");" << std::endl;
data << " var gridsize = document.getElementById(\"gridsize\");" << std::endl;
data << " gridsize.value = gridSize;" << std::endl;
data << " drawGrid();" << std::endl;
data << " }" << std::endl;
data << " " << std::endl;
data << " function drawGrid() {" << std::endl;
data << " var grid = document.getElementById(\"grid\");" << std::endl;
data << " var context = grid.getContext(\"2d\");" << std::endl;
data << " if(showGrid == true) {" << std::endl;
data << " context.clearRect(0,0,grid.width,grid.height);" << std::endl;
data << " context.globalAlpha = 0.2;" << std::endl;
data << " context.lineWidth = 0.5; " << std::endl;
data << " for(ix = 0; ix < grid.width; ix += gridSize) {" << std::endl;
data << " context.beginPath();" << std::endl;
data << " context.moveTo(ix, 0);" << std::endl;
data << " context.lineTo(ix, grid.height);" << std::endl;
data << " context.stroke();" << std::endl;
data << " context.beginPath();" << std::endl;
data << " context.moveTo(0, ix);" << std::endl;
data << " context.lineTo(grid.width, ix);" << std::endl;
data << " context.stroke(); " << std::endl;
data << " }" << std::endl;
data << " } else {" << std::endl;
data << " context.clearRect(0,0,grid.width,grid.height);" << std::endl;
data << " }" << std::endl;
data << " }" << std::endl;
data << "" << std::endl;
data << " function setDragHint(hint) {" << std::endl;
data << " dragHint = hint;" << std::endl;
data << " }" << std::endl;
data << " " << std::endl;
data << " function getMouseX(e) {" << std::endl;
data << " return e.clientX - mainpage.offsetLeft - parseFloat(mainpage.style.borderWidth);" << std::endl;
data << " }" << std::endl;
data << " " << std::endl;
data << " function getMouseY(e) {" << std::endl;
data << " return e.clientY - mainpage.offsetTop - parseFloat(mainpage.style.borderWidth);" << std::endl;
data << " }" << std::endl;
data << "" << std::endl;
data << " function mousedown(obj, e) {" << std::endl;
data << " var mouseX = getMouseX(e);" << std::endl;
data << " var mouseY = getMouseY(e);" << std::endl;
data << " mousedownx = mouseX - obj.offsetLeft;" << std::endl;
data << " mousedowny = mouseY - obj.offsetTop;" << std::endl;
data << " mouseDownLeft = parseFloat(obj.style.left);" << std::endl;
data << " mouseDownTop = parseFloat(obj.style.top);" << std::endl;
data << " mouseDownWidth = parseFloat(obj.style.width);" << std::endl;
data << " mouseDownHeight = parseFloat(obj.style.height);" << std::endl;
data << " dragobject = obj;" << std::endl;
data << " selected = obj;" << std::endl;
data << " ismousedown = true;" << std::endl;
data << " displayParameters();" << std::endl;
data << " }" << std::endl;
data << " " << std::endl;
data << " function mouseup() {" << std::endl;
data << " ismousedown = false;" << std::endl;
data << " dragobject = null;" << std::endl;
data << " console.log(mainpage.innerHTML);" << std::endl;
data << " }" << std::endl;
data << "" << std::endl;
data << " function mousemove(e) {" << std::endl;
data << " var mouseX = getMouseX(e);" << std::endl;
data << " var mouseY = getMouseY(e);" << std::endl;
data << " if(ismousedown) {" << std::endl;
data << " " << std::endl;
data << " if(dragHint == \"move\") {" << std::endl;
data << " if(snapToGrid == false) {" << std::endl;
data << " dragobject.style.left = (mouseX - mousedownx) + \"px\";" << std::endl;
data << " dragobject.style.top = (mouseY - mousedowny) + \"px\";" << std::endl;
data << " } else {" << std::endl;
data << " dragobject.style.left = (Math.round((mouseX - mousedownx) / gridSize) * gridSize) + \"px\";" << std::endl;
data << " dragobject.style.top = (Math.round((mouseY - mousedowny) / gridSize) * gridSize) + \"px\";" << std::endl;
data << " }" << std::endl;
data << " if((mouseX - mousedownx) < 0)" << std::endl;
data << " dragobject.style.left = \"0px\";" << std::endl;
data << " if((mouseY - mousedowny) < 0)" << std::endl;
data << " dragobject.style.top = \"0px\";" << std::endl;
data << " if((mouseX - mousedownx + parseFloat(dragobject.style.width)) > parseFloat(mainpage.style.width)) " << std::endl;
data << " dragobject.style.left = (mouseX - mousedownx) + \"px\"; " << std::endl;
data << " } else if(dragHint == \"rightbottomresize\") { " << std::endl;
data << " dragobject.style.width = (mouseX - mouseDownLeft) + \"px\";" << std::endl;
data << " dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl;
data << " } else if(dragHint == \"rightresize\") { " << std::endl;
data << " if(snapToGrid == false) {" << std::endl;
data << " dragobject.style.width = (mouseX - mouseDownLeft) + \"px\"; " << std::endl;
data << " } else {" << std::endl;
data << " dragobject.style.width = (Math.round((mouseX - mouseDownLeft) / gridSize) * gridSize) + \"px\"; " << std::endl;
data << " }" << std::endl;
data << " } else if(dragHint == \"bottomresize\") { " << std::endl;
data << " if(snapToGrid == false) {" << std::endl;
data << " dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl;
data << " } else {" << std::endl;
data << " dragobject.style.height = (Math.round((mouseY - mouseDownTop) / gridSize) * gridSize) + \"px\";" << std::endl;
data << " }" << std::endl;
data << " } else if(dragHint == \"leftresize\") { " << std::endl;
data << " dragobject.style.left = mouseX + \"px\";" << std::endl;
data << " dragobject.style.width = (mouseDownWidth + (mouseDownLeft - mouseX)) + \"px\";" << std::endl;
data << " } else if(dragHint == \"topresize\") { " << std::endl;
data << " dragobject.style.top = mouseY + \"px\";" << std::endl;
data << " dragobject.style.height = (mouseDownHeight + (mouseDownTop - mouseY)) + \"px\";" << std::endl;
data << " }" << std::endl;
data << " " << std::endl;
data << " data.innerHTML = \"<p>\" + dragobject.nodeName + \"<br>\" + " << std::endl;
data << " \"Action: \" + dragHint + \"<br>\" +" << std::endl;
data << " \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl;
data << " \"MouseOver Location: \" + (mouseX - dragobject.offsetLeft) + \":\" + (mouseY - dragobject.offsetTop) + \"<br>\" + " << std::endl;
data << " \"Location: \" + dragobject.style.left + \":\" + dragobject.style.top + \"<br>\" + " << std::endl;
data << " \"Size: \" + dragobject.style.width + \":\" + dragobject.style.height + \"<br>\" + " << std::endl;
data << " \"</p>\";" << std::endl;
data << " " << std::endl;
data << "" << std::endl;
data << " } else {" << std::endl;
data << " var mouseabove = document.elementFromPoint(mouseX + mainpage.offsetLeft, mouseY + mainpage.offsetTop);" << std::endl;
data << "" << std::endl;
data << " if((mouseabove.id != \"mainpage\") && (mouseabove.id != \"grid\")) {" << std::endl;
data << " " << std::endl;
data << " data.innerHTML = \"<p>\" + mouseabove.nodeName + \"<br>\" + " << std::endl;
data << " \"Action: \" + dragHint + \"<br>\" +" << std::endl;
data << " \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl;
data << " \"MouseOver Location: \" + (mouseX - mouseabove.offsetLeft) + \":\" + (mouseY - mouseabove.offsetTop) + \"<br>\" + " << std::endl;
data << " \"Location: \" + mouseabove.style.left + \":\" + mouseabove.style.top + \"<br>\" + " << std::endl;
data << " \"Size: \" + mouseabove.style.width + \":\" + mouseabove.style.height + \"<br>\" + " << std::endl;
data << " \"</p>\";" << std::endl;
data << " " << std::endl;
data << " if((mouseabove.nodeName == \"DIV\") || " << std::endl;
data << " (mouseabove.nodeName == \"IMG\") || " << std::endl;
data << " (mouseabove.nodeName == \"BUTTON\") ||" << std::endl;
data << " (mouseabove.nodeName == \"INPUT\") ||" << std::endl;
data << " (mouseabove.nodeName == \"SPAN\")) {" << std::endl;
data << " " << std::endl;
data << " if((parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl;
data << " (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl;
data << " mouseabove.style.cursor = \"nwse-resize\";" << std::endl;
data << " dragHint = \"rightbottomresize\"; " << std::endl;
data << " } else if((parseFloat(mouseabove.style.left) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl;
data << " ((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop))) {" << std::endl;
data << " mouseabove.style.cursor = \"nesw-resize\";" << std::endl;
data << " dragHint = \"righttopresize\"; " << std::endl;
data << " } else if(((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) && " << std::endl;
data << " (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl;
data << " mouseabove.style.cursor = \"nesw-resize\";" << std::endl;
data << " dragHint = \"leftbottomresize\"; " << std::endl;
data << " } else if(parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) {" << std::endl;
data << " mouseabove.style.cursor = \"ew-resize\";" << std::endl;
data << " dragHint = \"rightresize\";" << std::endl;
data << " } else if(parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop)) {" << std::endl;
data << " mouseabove.style.cursor = \"ns-resize\";" << std::endl;
data << " dragHint = \"bottomresize\";" << std::endl;
data << " } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) {" << std::endl;
data << " mouseabove.style.cursor = \"ew-resize\";" << std::endl;
data << " dragHint = \"leftresize\";" << std::endl;
data << " } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop)) {" << std::endl;
data << " mouseabove.style.cursor = \"ns-resize\";" << std::endl;
data << " dragHint = \"topresize\";" << std::endl;
data << " } else {" << std::endl;
data << " mouseabove.style.cursor = \"move\";" << std::endl;
data << " dragHint = \"move\";" << std::endl;
data << " }" << std::endl;
data << " } else {" << std::endl;
data << " mouseabove.style.cursor = \"default\";" << std::endl;
data << " }" << std::endl;
data << " } else {" << std::endl;
data << " mouseabove.style.cursor = \"default\";" << std::endl;
data << " dragHint = \"\";" << std::endl;
data << " data.innerHTML = \"<p></p>\";" << std::endl;
data << " }" << std::endl;
data << " }" << std::endl;
data << " displayParameters();" << std::endl;
data << " }" << std::endl;
data << " " << std::endl;
data << " function displayParameters() {" << std::endl;
data << "" << std::endl;
data << " itemparameters.innerHTML = \"<p>\" + selected.nodeName + \": \" + selected.id + \"<br>\" + " << std::endl;
data << " \"Location: \" + selected.style.left + \":\" + selected.style.top + \"<br>\" + " << std::endl;
data << " \"Size: \" + selected.style.width + \":\" + selected.style.height + \"<br>\" + " << std::endl;
data << " \"</p>\";" << std::endl;
data << "" << std::endl;
data << " }" << std::endl;
data << "" << std::endl;
httpRequest.response.addHeader("Content-Type", "script/javascript");
return 0;
}
};
}
#endif

View File

@ -7,78 +7,150 @@ namespace http {
class __favicon_ico : public HTTPPage { class __favicon_ico : public HTTPPage {
int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, std::stringstream &data) override { int processCommand(std::string request,
core::Session *session,
HTTPSession *httpSession,
HTTPRequest &httpRequest,
std::stringstream &data) override {
data << std::string(header_data); data << std::string(header_data, 806);
httpRequest.response.addHeader("Content-Type", "image/x-icon");
return true; return true;
} }
char *header_data = const char *header_data = {"\x00\x00\x01\x00\x01\x00\x20\x20\x00\x00\x01\x00\x08\x00\xA8\x08\x00"
"````````````````````````````````````````^PH_U/([J-@W@<4T3[4R+*TQ" "\x00\x16\x00\x00\x00\x28\x00\x00\x00\x20\x00\x00\x00\x40\x00\x00\x00"
"+ZTQ6+<SA\\@UK=LWVO8\\_@P_````````````````````````````````````````" "\x01\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"````````````````````````````````[`,^IM@W.JXR)*HQ)*HQ)*HQ)*HQ)*HQ" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF0\x99\x20\x00\xF0\x99"
")*HQ)*HQ)*HQ)*HQ)*HQ2K(RL=XX]@@_````````````````````````````````" "\x21\x00\xF0\x99\x22\x00\xF0\x9A\x23\x00\xF0\x9A\x24\x00\xF0\x9A\x25"
"````````````````````````_@T_L=XX,ZTQ)*HQ)*HQ)*HQ5;4RFM$VM-\\X.:\\R" "\x00\xF0\x9A\x26\x00\xF0\x9A\x28\x00\xF0\x9A\x29\x00\xF0\x9B\x26\x00"
"@<4TL=XXE,XU1K$R)*HQ)*HQ)*HQ0J`RPN@Y`@\\`````````````````````````" "\xF0\x9B\x28\x00\xF0\x9B\x29\x00\xF0\x9B\x2A\x00\xF0\x9B\x2B\x00\xF0"
"````````````````````[`0^<K\\T)*HQ)*HQ-ZTQIM@WYOX]`@\\`````````1+(R" "\x9C\x28\x00\xF0\x9C\x29\x00\xF0\x9B\x2D\x00\xF0\x9C\x2A\x00\xF0\x9C"
"L]\\X````````_`X`W_D\\F-$V**LQ)*HQ)*HQBLHU^0D_````````````````````" "\x2B\x00\xF0\x9C\x2F\x00\xF0\x9C\x30\x00\xF0\x9C\x31\x00\xF0\x9C\x33"
"````````````````Z?`]5;4R)*HQ)*HQD\\XU\\@0^`````````````````0X`/:`R" "\x00\xF0\x9D\x32\x00\xF1\x9D\x36\x00\xF0\x9D\x37\x00\xF0\x9D\x38\x00"
"L-TX`@\\`````````````````Z/\\]?<0T)*HQ)*HQ;;TS]0<^````````````````" "\xF1\x9E\x35\x00\xF1\x9E\x38\x00\xF1\x9F\x39\x00\xF1\x9F\x3E\x00\xF1"
"````````````[`0^5;4R)*HQ+:LQP^DY`P``````````\\00^N>(X@,4T-JXQ)*HQ" "\xA0\x41\x00\xF1\xA0\x42\x00\xF1\xA1\x40\x00\xF1\xA0\x44\x00\xF1\xA2"
")JHQ/*\\RBLHUP.8Y]P@_`````````0X`KMPW):HQ)*HQ;[XS^@H_````````````" "\x3E\x00\xF1\xA1\x45\x00\xF1\xA1\x46\x00\xF1\xA1\x47\x00\xF1\xA1\x48"
"````````_PT_=+`T)*HQ+*PQTO$[````````^0D_I-<W+JPQ)*HQ)*HQ)*HQ)*HQ" "\x00\xF1\xA2\x45\x00\xF1\xA3\x49\x00\xF1\xA3\x4D\x00\xF1\xA4\x4B\x00"
")*HQ)*HQ)*HQ)*HQ.ZXQM=`X_@T_````````O.0Y)*HQ)*HQD\\XU`P\\`````````" "\xF1\xA3\x4F\x00\xF1\xA4\x4F\x00\xF1\xA4\x50\x00\xF1\xA4\x51\x00\xF1"
"````````M-\\X)*HQ)*HQP^@Y````````Y_X]7+<S)*HQ)*HQ*JPQB\\HUN.(XSNXZ" "\xA4\x52\x00\xF1\xA5\x4F\x00\xF2\xA5\x4F\x00\xF1\xA6\x54\x00\xF2\xA6"
"S.TZL]\\X@,4T)*HQ)*HQ)*HQ=+`T\\P4^````````J=HW)*HQ)*HQS.XZ````````" "\x54\x00\xF2\xA6\x57\x00\xF2\xA6\x58\x00\xF2\xA7\x55\x00\xF2\xA7\x58"
"````\\00^,ZTQ)*HQD<TU`P``````Y_X]1K$R)*HQ)ZLQI-<W\\P4^````````````" "\x00\xF2\xA7\x59\x00\xF2\xA7\x5B\x00\xF2\xAA\x5A\x00\xF2\xA9\x60\x00"
"````````````Z`$]D,TU)*HQ)*HQ7[@S\\`8^````_PT_<K\\S)*HQ4[0R_0L_````" "\xF2\xAA\x61\x00\xF2\xAB\x64\x00\xF2\xAB\x66\x00\xF2\xAD\x65\x00\xF2"
"````J-DW)*HQ,:PQ\\@0^````^0D_6[<S)*HQ-ZTQT_([````````````_`X`\\`<^" "\xAC\x69\x00\xF2\xAD\x69\x00\xF2\xAD\x6B\x00\xF3\xAE\x6C\x00\xF2\xAE"
"]@@_`@\\``````````P``P.<Y*:LQ)*HQ>\\,T_`X`````W_H\\)*HQ)*HQP><Y````" "\x6E\x00\xF3\xAE\x6E\x00\xF3\xAF\x6F\x00\xF3\xAF\x70\x00\xF3\xAF\x71"
"^`L_/*\\R)*HQIM@W````````I-<W)*HQ):HQT_([````````\\P4^I-<W1;$R)*HQ" "\x00\xF3\xB0\x72\x00\xF3\xB2\x76\x00\xF3\xB2\x77\x00\xF3\xB3\x79\x00"
")*HQ4;0RL=XX^0D_````````O>4Y)*HQ)*HQO^8Y````````A<@U)*HQ:KPS`P\\`" "\xF3\xB4\x7A\x00\xF3\xB4\x7B\x00\xF3\xB4\x7C\x00\xF3\xB4\x7D\x00\xF3"
"UO,[)*HQ)*HQYOX]````[`0^+*LQ)*HQI=<W````````X/H\\2+$R)*HQ)*HQ)*HQ" "\xB5\x7C\x00\xF3\xB5\x7D\x00\xF3\xB5\x7F\x00\xF4\xB6\x80\x00\xF4\xB7"
")*HQ)*HQ)*HQ7[@S[@(]`````@\\`AL@U)*HQ2[(R_0P_````T.`[)*HQ)*HQZO`]" "\x81\x00\xF4\xB7\x82\x00\xF4\xB7\x83\x00\xF4\xB8\x83\x00\xF4\xB8\x84"
"J-DW)*HQ5+4R`@\\`````N.$X)*HQ+:PQ\\`8^````\\@0^1K$R)*HQ)*HQ)*HQ)*HQ" "\x00\xF4\xB9\x84\x00\xF4\xB9\x85\x00\xF4\xB9\x86\x00\xF4\xB9\x87\x00"
")*HQ)*HQ)*HQ)*HQ9+HS^`L_````XOL\\)*HQ)*HQT.`[````^0D_+:LQ)*HQQ.DY" "\xF4\xBB\x89\x00\xF4\xBB\x8C\x00\xF4\xBC\x8C\x00\xF4\xBC\x8D\x00\xF4"
"@\\8T)*HQFM$V````````?L4T)*HQD<TU````````H=4V)*HQ)*HQ)*HQ)*HQ)*HQ" "\xBD\x8E\x00\xF4\xBD\x8F\x00\xF4\xBD\x90\x00\xF5\xBE\x90\x00\xF5\xBF"
")*HQ)*HQ):HQ)*HQ)*HQN^,X`````P\\`9;LS)*HQH-0V````````;;XS)*HQHM4V" "\x94\x00\xF5\xC0\x94\x00\xF5\xC0\x95\x00\xF5\xC0\x96\x00\xF5\xC2\x98"
"4[8R)*HQMM`X`````0X`+JTQ)*HQO>0Y````_@T_-*TQ)*HQ)*HQ)*HQ)*HQ)*HQ" "\x00\xF5\xC3\x9C\x00\xF5\xC4\x9D\x00\xF5\xC4\x9E\x00\xF6\xC5\xA0\x00"
")*HQ)*HQ)*HQ)*HQ)*HQ;;XS`P```P\\`I-8W)*HQ=L$T````````F=$V)*HQA\\DU" "\xF6\xC6\xA0\x00\xF6\xC6\xA1\x00\xF6\xC6\xA2\x00\xF6\xC7\xA2\x00\xF6"
"+:TQ)*HQP>8Y````]@@_)*HQ)*HQ6+<R<+\\T:+PS)*HQ)*HQ)*HQ)*HQ)*HQ)*HQ" "\xC7\xA3\x00\xF6\xC7\xA4\x00\xF6\xC8\xA4\x00\xF6\xC8\xA5\x00\xF6\xC8"
")*HQ)*HQ)*HQ)*HQ)*HQ)*HQ3;0R2;,R-JXQ)*HQ0K,R````````JMDW)*HQ:;XS" "\xA6\x00\xF6\xC9\xA5\x00\xF6\xCA\xA9\x00\xF6\xCB\xAA\x00\xF7\xCC\xAC"
"+:TQ)*HQP>8Y````]@@_)*HQ)*HQ>L,TG-,VE,\\V)*HQ)*HQ)*HQ)*HQ)*HQ)*HQ" "\x00\xF7\xCC\xAD\x00\xF7\xCD\xAD\x00\xF7\xCD\xAE\x00\xF7\xCE\xAD\x00"
")*HQ)*HQ)*HQ)*HQ)*HQ):HQL=\\XM-`X@,4T)*HQ0K,R````````JMDW)*HQ7KLS" "\xF7\xCE\xAF\x00\xF7\xCE\xB0\x00\xF7\xCF\xB0\x00\xF7\xCF\xB1\x00\xF7"
"4[8S)*HQMM`X`````0X`+JTQ)*HQO.0Y````_@T_-*TQ)*HQ)*HQ)*HQ)*HQ)*HQ" "\xCF\xB2\x00\xF7\xD0\xB4\x00\xF7\xD1\xB3\x00\xF7\xD1\xB4\x00\xF7\xD1"
")*HQ)*HQ)*HQ)*HQ)*HQ;;XS````````I-<W)*HQ=L$T````````F=$V)*HQB,DU" "\xB5\x00\xF7\xD1\xB6\x00\xF7\xD2\xB7\x00\xF8\xD3\xB8\x00\xF8\xD3\xB9"
"@\\8T)*HQFM$V````````?\\4T)*HQD<TU````````H=4V)*HQ)*HQ)*HQ)*HQ)*HQ" "\x00\xF8\xD4\xB9\x00\xF8\xD5\xBB\x00\xF8\xD5\xBC\x00\xF8\xD5\xBD\x00"
")*HQ)*HQ)*HQ)*HQ)*HQN^,X`````P\\`9+HS)*HQH-0V````````;;XS)*HQHM4V" "\xF8\xD6\xBC\x00\xF8\xD6\xBD\x00\xF8\xD7\xBE\x00\xF8\xD7\xBF\x00\xF8"
"J=DW)*HQ5+4R`@\\`````N.$X)*HQ+:PQ\\`8^````\\@4^1K$R)*HQ)*HQ)*HQ)*HQ" "\xD8\xBF\x00\xF8\xD8\xC0\x00\xF9\xDC\xC8\x00\xF9\xDD\xC8\x00\xF9\xDD"
")*HQ)*HQ)*HQ)*HQ9+HS^`L_````XOL\\)*HQ)*HQT>`[````^0D_+:LQ)*HQQ.DY" "\xC9\x00\xF9\xDD\xCA\x00\xF9\xDF\xCC\x00\xFA\xDF\xCC\x00\xFA\xDF\xCD"
"UO0[)*HQ)*HQYOX]````[`0^+*LQ)*HQI=<W````````X/H\\2;(R)*HQ)*HQ)*HQ" "\x00\xFA\xE0\xCE\x00\xFA\xE1\xCF\x00\xFA\xE1\xD0\x00\xFA\xE2\xD0\x00"
")*HQ)*HQ)*HQ7[@S[@(]`````@\\`A<@U)*HQ3+(R_0P_````T.`Z)*HQ)*HQZO`]" "\xFA\xE2\xD2\x00\xFA\xE3\xD2\x00\xFB\xE5\xD6\x00\xFB\xE6\xD7\x00\xFB"
"^`L_/*\\R)*HQIM<W````````I-<W)*HQ):HQT_([````````\\P4^I-<W1;$R)*HQ" "\xE8\xDB\x00\xFB\xE9\xDB\x00\xFB\xE9\xDC\x00\xFB\xEA\xDE\x00\xFC\xED"
")*HQ4;0RL=XX^0D_````````O.0Y)*HQ)*HQP.8Y````````A,<U)*HQ:KPS`P\\`" "\xE2\x00\xFC\xED\xE3\x00\xFC\xEE\xE4\x00\xFC\xEF\xE5\x00\xFC\xEF\xE6"
"````J-DW)*HQ,:PQ\\00^````^0D_7+@S)*HQ-ZTQT_([````````````_`X`\\`<^" "\x00\xFC\xF0\xE7\x00\xFC\xF1\xE9\x00\xFD\xF2\xEB\x00\xFD\xF3\xEB\x00"
"]@@_`@\\``````````P``O^8Y**LQ)*HQ>\\,T_`X`````W_D\\)*HQ)*HQP><Y````" "\xFD\xF3\xEC\x00\xFD\xF3\xED\x00\xFD\xF4\xED\x00\xFD\xF4\xEE\x00\xFD"
"````\\00^-*TQ)*HQD<TU`P``````Y_X]1K$R)*HQ)ZLQI-8W\\P4^````````````" "\xF5\xEF\x00\xFD\xF6\xEF\x00\xFD\xF6\xF0\x00\xFE\xF7\xF1\x00\xFE\xF7"
"````````````Z`$]D,PU)*HQ)*HQ7[@S\\`8^````_PT_<K\\S)*HQ4[4R_0L_````" "\xF2\x00\xFE\xF7\xF3\x00\xFE\xF8\xF4\x00\xFE\xF9\xF5\x00\xFE\xF9\xF6"
"````````M-\\X)*HQ)*HQPN@Y````````Y_X]7;@S)*HQ)*HQ*JLQB\\HUM^(XSNXZ" "\x00\xFE\xFA\xF7\x00\xFE\xFA\xF8\x00\xFE\xFB\xF8\x00\xFE\xFB\xF9\x00"
"S.TZL]\\X?\\4T)*HQ)*HQ)*HQ=+`T\\P4^````````J=DW)*HQ)*HQS>XZ````````" "\xFE\xFC\xF9\x00\xFE\xFC\xFA\x00\xFF\xFD\xFB\x00\xFF\xFD\xFC\x00\xFF"
"````````_PT_=;`T)*HQ+*LQTO$[````````^0D_I=<W+ZPQ)*HQ)*HQ)*HQ)*HQ" "\xFE\xFC\x00\xFF\xFE\xFD\x00\xFF\xFE\xFE\x00\xFF\xFF\xFE\x00\xFF\xFF"
")*HQ)*HQ)*HQ)*HQ/*XQM=`X_@T_````````O.0Y)*HQ)*HQD\\XU`P``````````" "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"````````````\\00^5K4R)*HQ+:LQPN@Y`P``````````\\@4^NN(X@,8T-JXQ):HQ" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
")JHQ/:`RB\\HUP><Y]`@_`````````0X`KMPW):HQ)*HQ;[XS^@H_````````````" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"````````````````Z?`]5K4R)*HQ)*HQDLXU\\00^`````````````````0\\`B,HU" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"B<HU`@\\`````````````````Z/\\]?<0T)*HQ)*HQ;;TS]0<^````````````````" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"````````````````````[`0^<[`T)*HQ)*HQ-:TQIM@WYOX]`@\\`````````C<PU" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"C<PU````````_`X`W_D\\F,`V**LQ)*HQ)*HQB\\HU^0D_````````````````````" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"````````````````````````_@T_LMXX,ZTQ)*HQ)*HQ)*HQ5;4RFM$VM-\\X:+PS" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
":+PSL=TXE,XU1;$R)*HQ)*HQ)*HQ0J`RPN@Y`@\\`````````````````````````" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"````````````````````````````````[`,^I]@W.JXR)*HQ)*HQ)*HQ)*HQ)*HQ" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
")*HQ)*HQ)*HQ)*HQ)*HQ2[(RLMXX]P@_````````````````````````````````" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"````````````````````````````````````````^PH_U/,[J-@W@<8T3[4R+*TQ" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xCD\xCD"
"+ZTQ6;@SA\\@UK=LWV_<\\_@P_````````````````````````````````````````"; "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC0\xA2\x75\x53\x2B\x0E\x12\x37\x58"
"\x7A\xA6\xC4\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"
"\xCD\xCD\xCD\xCD\xB2\x74\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x26\x7F\xBC\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"
"\xC5\x7F\x13\x00\x00\x00\x2F\x6A\x82\x3E\x3E\x7D\x65\x1F\x00\x00\x00"
"\x1E\x94\xCA\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB3\x47\x00"
"\x00\x15\x73\xAB\xCA\xCD\xCD\x5F\x5F\xCD\xCD\xC7\xA7\x67\x04\x00\x00"
"\x5E\xBE\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xAE\x30\x00\x00\x63\xB4"
"\xCD\xCD\xCD\xCD\xC9\x5B\x5C\xCA\xCD\xCD\xCD\xCD\xAD\x4D\x00\x00\x41"
"\xBA\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB4\x30\x00\x08\x94\xCC\xCD\xCD\xB6"
"\x8A\x52\x17\x01\x02\x1D\x5E\x93\xBD\xCD\xCD\xC8\x7B\x01\x00\x43\xBF"
"\xCD\xCD\xCD\xCD\xCD\xC6\x49\x00\x07\x9F\xCD\xCD\xBE\x71\x0D\x00\x00"
"\x00\x00\x00\x00\x00\x00\x1A\x84\xC5\xCD\xCD\x8C\x00\x00\x64\xCC\xCD"
"\xCD\xCD\xCD\x82\x00\x00\x94\xCD\xCD\xAC\x39\x00\x00\x06\x5E\x87\x9B"
"\x98\x81\x4F\x00\x00\x00\x48\xB7\xCD\xCD\x77\x00\x00\x9A\xCD\xCD\xCD"
"\xB4\x14\x00\x62\xCC\xCD\xAC\x20\x00\x03\x6F\xB7\xCD\xCD\xCD\xCD\xCD"
"\xCD\xB0\x60\x00\x00\x3A\xB8\xCD\xC6\x45\x00\x2D\xC2\xCD\xCD\x76\x00"
"\x10\xB4\xCD\xBE\x38\x00\x16\xA0\xCD\xCD\xCD\xC7\xB9\xBB\xCA\xCD\xCD"
"\xCC\x8F\x04\x00\x4C\xC7\xCD\xA7\x00\x00\x93\xCD\xC1\x1C\x00\x72\xCD"
"\xCD\x70\x00\x01\xA0\xCD\xCD\xB7\x70\x1F\x00\x00\x2A\x7E\xBE\xCD\xCD"
"\x8C\x00\x00\x90\xCD\xCD\x55\x00\x3F\xCB\xA4\x00\x00\xAB\xCD\xB3\x07"
"\x00\x71\xCD\xCD\xA9\x24\x00\x00\x00\x00\x00\x00\x3A\xB1\xCD\xCA\x56"
"\x00\x27\xC3\xCD\x9C\x00\x00\xAF\x77\x00\x2E\xCA\xCD\x86\x00\x0B\xB8"
"\xCD\xB6\x20\x00\x00\x00\x00\x00\x00\x00\x00\x3C\xC1\xCD\xAA\x00\x00"
"\x9E\xCD\xBE\x08\x00\x97\x54\x00\x6A\xCD\xCD\x4F\x00\x62\xCD\xCD\x6D"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8B\xCD\xCB\x3C\x00\x6C\xCD"
"\xCD\x42\x00\x6E\x32\x00\x85\xCD\xC8\x11\x00\x8C\xCD\xC5\x14\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x42\xCD\xCD\x70\x00\x4A\xCD\xCD\x69"
"\x00\x5A\x0F\x00\x91\xCD\xBB\x00\x00\x4B\x6B\x66\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x01\x80\x83\x50\x00\x23\xCD\xCD\x78\x00\x3B"
"\x0F\x00\x91\xCD\xBB\x00\x00\x33\x44\x3E\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x29\x28\x17\x00\x23\xCD\xCD\x78\x00\x40\x31\x00"
"\x85\xCD\xC8\x11\x00\x8D\xCD\xC5\x14\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x42\xCC\xCB\x6F\x00\x4A\xCD\xCD\x69\x00\x59\x54\x00\x6A\xCD"
"\xCD\x4E\x00\x62\xCD\xCD\x6D\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00"
"\x8B\xCD\xCB\x3D\x00\x6C\xCD\xCD\x42\x00\x6E\x76\x00\x2E\xCA\xCD\x86"
"\x00\x0B\xB8\xCD\xB5\x20\x00\x00\x00\x00\x00\x00\x00\x00\x3C\xC1\xCD"
"\xAA\x00\x00\x9D\xCD\xBE\x08\x00\x97\xA3\x00\x00\xAB\xCD\xB3\x07\x00"
"\x71\xCD\xCD\xA9\x22\x00\x00\x00\x00\x00\x00\x3A\xB1\xCD\xCA\x57\x00"
"\x26\xC3\xCD\x9D\x00\x00\xAF\xC1\x1C\x00\x73\xCD\xCD\x70\x00\x01\xA0"
"\xCD\xCD\xB7\x70\x1F\x00\x00\x2A\x7E\xBE\xCD\xCD\x8E\x00\x00\x8F\xCD"
"\xCD\x56\x00\x3F\xCB\xCD\x76\x00\x10\xB5\xCD\xBE\x35\x00\x16\xA0\xCD"
"\xCD\xCD\xC7\xB9\xBB\xCA\xCD\xCD\xCC\x92\x05\x00\x4C\xC7\xCD\xA8\x00"
"\x00\x93\xCD\xCD\xB4\x13\x00\x62\xCC\xCD\xAC\x20\x00\x03\x70\xB7\xCD"
"\xCD\xCD\xCD\xCD\xCD\xB0\x61\x00\x00\x3A\xB8\xCD\xC6\x45\x00\x2C\xC2"
"\xCD\xCD\xCD\x82\x00\x00\x95\xCD\xCD\xAC\x36\x00\x00\x09\x5E\x88\x9B"
"\x98\x81\x50\x00\x00\x00\x48\xB7\xCD\xCD\x79\x00\x00\x99\xCD\xCD\xCD"
"\xCD\xC6\x48\x00\x0A\x9F\xCD\xCD\xBE\x70\x0C\x00\x00\x00\x00\x00\x00"
"\x00\x00\x19\x84\xC5\xCD\xCD\x8C\x00\x00\x64\xCB\xCD\xCD\xCD\xCD\xCD"
"\xB3\x2F\x00\x08\x96\xCC\xCD\xCD\xB4\x89\x50\x17\x00\x02\x1C\x5D\x90"
"\xBC\xCD\xCD\xC8\x7B\x01\x00\x43\xBF\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xAE"
"\x2F\x00\x00\x64\xB5\xCD\xCD\xCD\xCD\xC8\x1D\x7C\xCA\xCD\xCD\xCD\xCD"
"\xAD\x4D\x00\x00\x41\xBA\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB3\x46"
"\x00\x00\x16\x73\xAB\xCA\xCD\xCD\x21\x81\xCD\xCD\xC7\xA7\x68\x04\x00"
"\x00\x5D\xBE\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC5\x7E\x13"
"\x00\x00\x00\x2F\x6A\x82\x1B\x51\x7E\x65\x20\x00\x00\x00\x1E\x94\xCA"
"\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB2\x73\x18"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x7E\xBB\xCD\xCD\xCD\xCD"
"\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC0\xA1\x75"
"\x51\x2B\x0E\x12\x34\x58\x7A\xA5\xC4\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"
"\xCD\xCD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"};
}; };
} }

View File

@ -2,20 +2,30 @@
#define ____index_h__ #define ____index_h__
#include "HTTPPage.h" #include "HTTPPage.h"
#include "HTTPRequest.h"
namespace http { namespace http {
class __index : public HTTPPage { class __index : public HTTPPage {
int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, std::stringstream &data) override { int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
data << "<http><head></head><body style=\"background: #006; color: #fff;\">\ data << "<html>" << std::endl;
<form action=\"setupadmin\" method=\"POST\"><div style=\"background: #44C; text: #888; padding: 20px;\"><p>You have successfully set up a JETServer.\ data << " <head>" << std::endl;
<br>Session Id: " << httpSession->getSessionId() << "\ data << " <link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />" << std::endl;
<br>The configuration has not yet been established for this web site.</p>\ data << " <link type=\"text/css\" rel=\"stylesheet\" href=\"/style\" />" << std::endl;
<button>Configure</button>\ data << " <script src=\"/script\"></script>" << std::endl;
</div></form></body></html>"; data << " <script src=\"/editview\"></script>" << std::endl;
data << " </head>" << std::endl;
data << "<body ondragstart=\"return false;\" " << std::endl;
data << " ondrop=\"return false;\" " << std::endl;
data << " onLoad=\"getPage('/welcome','main');\">" << std::endl;
data << " <div id=\"main\">If you see this then something is wrong.</div>" << std::endl;
data << " </body>" << std::endl;
data << "</html>" << std::endl;
httpRequest.response.addHeader("Content-Type", "text/html");
return true; return true;
} }
}; };

33
__mainmenu.h Normal file
View File

@ -0,0 +1,33 @@
#ifndef ____mainmenu_h__
#define ____mainmenu_h__
#include "HTTPPage.h"
namespace http {
class __mainmenu : public HTTPPage {
int processCommand(std::string request,
core::Session *session,
HTTPSession *httpSession,
HTTPRequest &httpRequest,
std::stringstream &data) override {
data << "<div>" << std::endl;
data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px;\">" << std::endl;
data << " <span>Setup Server Parameters</span>" << std::endl;
data << " </div>" << std::endl;
data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px;\"" << std::endl;
data << " onmousedown=\"getPage('/newview','main');\">" << std::endl;
data << " <span>View and Layout Designer</span>" << std::endl;
data << " </div>" << std::endl;
data << "</div>" << std::endl;
httpRequest.response.addHeader("Content-Type", "text/html");
return true;
}
};
}
#endif

113
__newview.h Normal file
View File

@ -0,0 +1,113 @@
#ifndef ____newview_h__
#define ____newview_h__
#include "HTTPPage.h"
namespace http {
class __newview : public HTTPPage {
int processCommand(std::string request,
core::Session *session,
HTTPSession *httpSession,
HTTPRequest &httpRequest,
std::stringstream &data) override {
data << " <div style=\"position: relative;\">" << std::endl;
data << "" << std::endl;
data << " <div id=\"window1\" style=\"position: absolute; left: 0px; top: 0px; border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;\">" << std::endl;
data << "" << std::endl;
data << " <span style=\"font: 20px bebasneue;\">View Editor</span>" << std::endl;
data << "" << std::endl;
data << " <div id=\"mainpage\" " << std::endl;
data << " style=\"width: 600px; height: 600px; border: 1px solid black; position: relative; background: #ffffff;\" " << std::endl;
data << " onmousemove=\"mousemove(event); return true;\" " << std::endl;
data << " onmouseup=\"mouseup(); return true;\">" << std::endl;
data << "" << std::endl;
data << " <canvas id=\"grid\" width=\"600px\" height=\"600px\" style=\"position: absolute; left: 0px; top: 0px; alpha: 0.5; cursor: normal;\"></canvas>" << std::endl;
data << "" << std::endl;
data << " <img id=\"img1\" style=\"position: absolute; user-select: none;\" onmousedown=\"mousedown(this, event); return true;\" src=\"images/barant_web_logo.png\" width=\"336\" height=\"69\">" << std::endl;
data << "" << std::endl;
data << " <img id=\"img2\" style=\"position: absolute; user-select: none;\" onmousedown=\"mousedown(this, event); return true;\" src=\"images/barant_web_logo.png\" width=\"336\" height=\"69\">" << std::endl;
data << " " << std::endl;
data << " <button id=\"button1\" " << std::endl;
data << " style=\"width: 100px; height: 50px; border: 2px solid green; position: absolute;\"" << std::endl;
data << " onmousedown=\"mousedown(this, event); return true;\">Press</button>" << std::endl;
data << "" << std::endl;
data << " <div id=\"div1\"" << std::endl;
data << " style=\"width: 100px; height: 50px; border: 2px solid green; position: absolute;\"" << std::endl;
data << " onmousedown=\"mousedown(this, event); return true;\">" << std::endl;
data << " </div>" << std::endl;
data << "" << std::endl;
data << " <div id=\"div2\"" << std::endl;
data << " style=\"width: 100px; height: 50px; border: 0px; position: absolute; background: #404040;\"" << std::endl;
data << " onmousedown=\"mousedown(this, event); return true;\">" << std::endl;
data << " </div>" << std::endl;
data << "" << std::endl;
data << " <div id=\"div3\"" << std::endl;
data << " style=\"width: 100px; height: 100px; border: 10px solid red; position: absolute; background: #ffff80;\"" << std::endl;
data << " onmousedown=\"mousedown(this, event); return true;\">" << std::endl;
data << " </div>" << std::endl;
data << " " << std::endl;
data << " <span id=\"text1\" onmousedown=\"mousedown(this, event); return true;\"" << std::endl;
data << " style=\"position: absolute; user-select: none; border: 1pt solid black; background: #8080c0;\">This is a text label</span>" << std::endl;
data << "" << std::endl;
data << " <input id=\"input1\" style=\"position: absolute;\" onmousedown=\"mousedown(this, event); return true;\" type=\"input\" name=\"drag5\" size=\"50\">" << std::endl;
data << "" << std::endl;
data << " </div>" << std::endl;
data << " </div>" << std::endl;
data << "" << std::endl;
data << "" << std::endl;
data << " <div id=\"window3\" style=\"position:absolute; top: 235px; left: 610px;" << std::endl;
data << " border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;\">" << std::endl;
data << "" << std::endl;
data << " <span style=\"font: 20px bebasneue;\">OPTIONS</span>" << std::endl;
data << "" << std::endl;
data << " <div style=\"width: 150px; height: 300px; color: #000000; border: 1px solid black; position: relative; background: #ffffff;\" " << std::endl;
data << " onmousemove=\"mousemove(event); return true;\" " << std::endl;
data << " onmouseup=\"mouseup(); return true;\"> " << std::endl;
data << "" << std::endl;
data << " <div id=\"controls\">" << std::endl;
data << " <input type=\"checkbox\" name=\"grid\" onchange=\"showGrid = this.checked; drawGrid(); return true;\"><span style=\"font: 12px bebasneue; margin-bottom: 2px;\">Show Grid</span><br>" << std::endl;
data << " <input type=\"checkbox\" name=\"snaptogrid\" onchange=\"snapToGrid = this.checked; return true;\"><span style=\"font: 12px bebasneue; margin-bottom: 2px;\">Snap To Grid</span><br>" << std::endl;
data << " <span style=\"font: 12px bebasneue; margin-bottom: 2px;\">Grid Size: </span><input type=\"text\" name=\"gridsize\" id=\"gridsize\" style=\"width: 20px;\" size=\"3\" onchange=\"gridSize = parseInt(this.value); drawGrid(); return true;\"><br>" << std::endl;
data << " </div>" << std::endl;
data << "" << std::endl;
data << " <div id=\"itemparameters\" style=\"font: 12px bebasneue;\"></div>" << std::endl;
data << "" << std::endl;
data << " <div id=\"data\" style=\"font: 12px bebasneue;\">" << std::endl;
data << " <p>NO DATA</p>" << std::endl;
data << " </div>" << std::endl;
data << "" << std::endl;
data << " </div>" << std::endl;
data << " </div>" << std::endl;
data << "" << std::endl;
data << "" << std::endl;
data << " <div id=\"window2\" style=\"position:absolute; top: 0px; left: 610px; border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;\">" << std::endl;
data << "" << std::endl;
data << " <span style=\"font: 20px bebasneue;\">Toolbar</span>" << std::endl;
data << "" << std::endl;
data << " <div id=\"toolbar\" " << std::endl;
data << " style=\"width: 80px; height: 200px; border: 1px solid black; position: relative; background: #ffffff;\" " << std::endl;
data << " onmousemove=\"mousemove(event); return true;\" " << std::endl;
data << " onmouseup=\"mouseup(); return true;\">" << std::endl;
data << " <button id=\"button1\" " << std::endl;
data << " style=\"width: 40px; height: 40px; border: 2px solid green; position: absolute;\"" << std::endl;
data << " onmousedown=\"mousedown(this, event); return true;\">Press</button>" << std::endl;
data << "" << std::endl;
data << " </div>" << std::endl;
data << " </div>" << std::endl;
data << " " << std::endl;
data << " </div> " << std::endl;
data << "" << std::endl;
data << " <script>alert('Loading...'); init(); return true;</script>" << std::endl;
httpRequest.response.addHeader("Content-Type", "text/html");
return 0;
}
};
}
#endif

54
__script.h Normal file
View File

@ -0,0 +1,54 @@
#ifndef ____script_h__
#define ____script_h__
#include "HTTPPage.h"
namespace http {
class __script : public HTTPPage {
int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
data << "function serverSend(url, type, receiver, formData, callback) {" << std::endl;
data << " var server = new XMLHttpRequest();" << std::endl;
data << " server.onload = function() {" << std::endl;
data << " if(server.readyState == 4 && server.status == 200)" << std::endl;
data << " callback(server.responseText, receiver);" << std::endl;
data << " };" << std::endl;
data << " server.open(type, url, true);" << std::endl;
data << " server.send(formData);" << std::endl;
data << "}" << std::endl;
data << "function getPage(url, receiver) {" << std::endl;
data << " serverSend(url, \"GET\", receiver, null, function(data, receiver) {" << std::endl;
data << " var panel1 = document.getElementById(receiver);" << std::endl;
data << " panel1.innerHTML = data;" << std::endl;
data << " });" << std::endl;
data << "}" << std::endl;
data << "function process(url, formName, receiver) {" << std::endl;
data << " var formElement = document.querySelector(\"form[name='\" + formName + \"']\");" << std::endl;
data << " var formData = new FormData(formElement);" << std::endl;
data << " serverSend(url, \"POST\", receiver, formData, function(data, receiver) {" << std::endl;
data << " var panel1 = document.getElementById(receiver);" << std::endl;
data << " panel1.innerHTML = data;" << std::endl;
data << " });" << std::endl;
data << "}" << std::endl;
// data << "var setInnerHTML = function(elm, html) {" << std::endl;
// data << " lm.innerHTML = html;" << std::endl;
// data << " Array.from(elm.querySelectorAll("script")).forEach( oldScript => {" << std::endl;
// data << " const newScript = document.createElement("script");" << std::endl;
// data << " Array.from(oldScript.attributes)" << std::endl;
// data << " .forEach( attr => newScript.setAttribute(attr.name, attr.value) );" << std::endl;
// data << " newScript.appendChild(document.createTextNode(oldScript.innerHTML));" << std::endl;
// data << " oldScript.parentNode.replaceChild(newScript, oldScript);" << std::endl;
httpRequest.response.addHeader("Content-Type", "text/javascript");
return true;
}
};
}
#endif

View File

@ -5,15 +5,29 @@ namespace http {
class __setupadmin : public HTTPPage { class __setupadmin : public HTTPPage {
int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, std::stringstream &data) override { int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
data << "<http><head></head><body style=\"background: #006; color: #fff;\">\ data << "<form name=\"setupadmin\" action=\"setupadmin\" method=\"POST\">" << std::endl;
<form action=\"setupadmin\" method=\"POST\"><div style=\"background: #44C; text: #888; padding: 20px;\"><p>Please enter credential information\ data << " <div class=\"window\"><p>Please enter credential information" << std::endl;
for the security officer.<br><input type=\"text\" name=\"username\" size=\"50\">\ data << " for the security officer, then press Set Admin Profile button below:" << std::endl;
<br>Session Id: " << httpSession->getSessionId() << "\ data << " <div style=\"border: 1pt solid white; padding: 3px; margin-bottom: 5px;\">" << std::endl;
<br>The configuration has not yet been established for this web site.</p>\ data << " <div>User Name:</div>" << std::endl;
<button>Configure</button>\ data << " <input type=\"text\" name=\"username\" size=\"30\">" << std::endl;
</div></form></body></html>"; data << " </div>" << std::endl;
data << " <div style=\"border: 1pt solid white; padding: 3px; margin-bottom: 5px;\">" << std::endl;
data << " <div>Password:</div>" << std::endl;
data << " <input type=\"password\" name=\"password\" size=\"30\">" << std::endl;
data << " </div>" << std::endl;
data << " <div style=\"border: 1pt solid white; padding: 3px; margin-bottom: 5px;\">" << std::endl;
data << " <div>Verify Password:</div>" << std::endl;
data << " <input type=\"password\" name=\"verify\" size=\"30\">" << std::endl;
data << " </div>" << std::endl;
data << " <br><br>Session Id: " << httpSession->getSessionId() << "" << std::endl;
data << " <br>The configuration has not yet been established for this web site.</p>" << std::endl;
data << " <input type=\"button\" onmousedown=\"process('/mainmenu','setupadmin', 'main'); return true;\" name=\"button1\" value=\"Set Admin Profile\">" << std::endl;
data << " </div></form>" << std::endl;
httpRequest.response.addHeader("Content-Type", "text/html");
return true; return true;
} }

29
__style.h Normal file
View File

@ -0,0 +1,29 @@
#ifndef ____style_h__
#define ____style_h__
#include "HTTPPage.h"
namespace http {
class __style : public HTTPPage {
int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
data << "body {background: #006;" << std::endl;
data << " color: #fff;" << std::endl;
data << " }" << std::endl;
data << ".window {background: #668;" << std::endl;
data << " color: #fff;" << std::endl;
data << " border: 1pt solid #f00;" << std::endl;
data << " width: 400px;" << std::endl;
data << " padding: 15px;" << std::endl;
data << " }" << std::endl;
httpRequest.response.addHeader("Content-Type", "text/css");
return true;
}
};
}
#endif

30
__welcome.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef ____welcome_h__
#define ____welcome_h__
#include "HTTPPage.h"
namespace http {
class __welcome : public HTTPPage {
int processCommand(std::string request,
core::Session *session,
HTTPSession *httpSession,
HTTPRequest &httpRequest,
std::stringstream &data) override {
data << "<div class=\"window\">\
<p>You have successfully set up a JETServer.\
<br>Session Id: " << httpSession->getSessionId() << "\
<br>The configuration has not yet been established for this web site.</p>\
<input type=\"button\" onmousedown=\"getPage('/setupadmin','main'); return true;\" name=\"button1\" value=\"Configure\">\
</div>";
httpRequest.response.addHeader("Content-Type", "text/html");
return true;
}
};
}
#endif