12 #include <sys/types.h>
15 #include <Wt/Http/Request.h>
16 #include <Wt/Http/Response.h>
17 #include <Wt/WDateTime.h>
18 #include <Wt/WLayout.h>
19 #include <Wt/WResource.h>
20 #include <Wt/WServer.h>
27 #define VAULT_ROOT std::string("/")
28 #define CLIENT_FOLDERS "/"
32 #ifdef __GRAB_DATE_STRING_FROM_PROGRAM_DATE__
34 stat( argv[0], &attr );
36 auto tm = localtime( &attr.st_mtime );
40 strftime( datestring,
sizeof(datestring), nl_langinfo(D_T_FMT), tm );
44 std::string datestring = __GNUCASHEW_VERSION__ +
" " + __GNUCASHEW_BUILD__;
46 std::cout << __DATETIMEPIDFILELINE__
56 :
public Wt::WApplication
60 :
Wt::WApplication(env)
74 :
public Wt::WResource
78 void handleRequest(
const Wt::Http::Request & request, Wt::Http::Response & response );
85 std::cout << __FILE__ <<
":" << __LINE__
86 <<
"\n headers:" << request.headers().size()
87 <<
"\n path:" << request.path()
88 <<
"\n queryString:" << request.queryString()
89 <<
"\n urlParams:" << request.urlParams().size()
90 <<
"\n pathInfo:" << request.pathInfo()
91 <<
"\n clientAddress:" << request.clientAddress()
94 for(
auto header : request.headers() )
96 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << header.name() <<
" " << header.value() << std::endl;
101 auto _blocked = [&]()
103 std::vector< std::string > allowed =
112 request.headerValue(
"X-Forwarded-For" )
125 std::cout << __FILE__ <<
":" << __LINE__
126 <<
" HtmlResource::ipblocked: [" << request.headerValue(
"X-Forwarded-For" ) <<
"]"
127 <<
" '" << request.path() <<
"'"
130 response.out() <<
"<html><body>oh oh, something went wrong.<br />Please contact the site administrator</body></html>";
138 <<
" [" << request.headerValue(
"x-Forwarded-For" ) <<
"]"
139 <<
" " << request.path()
150 auto fileName =
"approot/html" + request.pathInfo();
152 file.open( fileName );
154 if( !file.is_open() )
156 std::cout << __FILE__ <<
":" << __LINE__ <<
" NO FILE:" << fileName << std::endl;
157 response.out() <<
"no file!";
160 std::cout << __FILE__ <<
":" << __LINE__
161 <<
" [" << request.headerValue(
"X-Forwarded-For" ) <<
"]"
162 <<
" HtmlResource:" << fileName
165 response.out() << file.rdbuf();
171 :
public Wt::WResource
175 void handleRequest(
const Wt::Http::Request & request, Wt::Http::Response & response );
182 std::cout << __FILE__ <<
":" << __LINE__
183 <<
"\n headers:" << request. headers ().size()
184 <<
"\n path:" << request. path ()
185 <<
"\n queryString:" << request. queryString ()
186 <<
"\n urlParams:" << request. urlParams ().size()
187 <<
"\n pathInfo:" << request. pathInfo ()
188 <<
"\n clientAddress:" << request. clientAddress ()
191 for(
auto header : request.headers() )
193 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << header.name() <<
" " << header.value() << std::endl;
199 auto _blocked = [&]()
201 std::vector< std::string > allowed =
210 request.headerValue(
"X-Forwarded-For" )
224 std::cout << __FILE__ <<
":" << __LINE__
225 <<
" HtmlResource::ipblocked: [" << request.headerValue(
"X-Forwarded-For" ) <<
"]"
226 <<
" '" << request.path() <<
"'"
229 response.out() <<
"<html><body>oh oh, something went wrong.<br />Please contact the site administrator</body></html>";
237 <<
" [" << request.headerValue(
"x-Forwarded-For" ) <<
"]"
238 <<
" " << request.path()
246 response.out() <<
"ok\n";
267 :
public Wt::WResource
271 void handleRequest(
const Wt::Http::Request & request, Wt::Http::Response & response );
278 std::cout << __FILE__ <<
":" << __LINE__
279 <<
"\n headers:" << request. headers ().size()
280 <<
"\n path:" << request. path ()
281 <<
"\n queryString:" << request. queryString ()
282 <<
"\n urlParams:" << request. urlParams ().size()
283 <<
"\n pathInfo:" << request. pathInfo ()
284 <<
"\n clientAddress:" << request. clientAddress ()
287 for(
auto header : request.headers() )
289 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << header.name() <<
" " << header.value() << std::endl;
294 auto _blocked = [&]()
296 std::vector< std::string > allowed =
305 request.headerValue(
"X-Forwarded-For" )
319 std::cout << __FILE__ <<
":" << __LINE__
320 <<
" HtmlResource::ipblocked: [" << request.headerValue(
"X-Forwarded-For" ) <<
"]"
321 <<
" '" << request.path() <<
"'"
324 response.out() <<
"<html><body>oh oh, something went wrong.<br />Please contact the site administrator</body></html>";
332 <<
" [" << request.headerValue(
"x-Forwarded-For" ) <<
"]"
333 <<
" " << request.path()
340 if( request.queryString() ==
"c=jobphotos" )
342 for(
int i = 100000; i < 115000; i++ )
350 std::cout << __FILE__ <<
":" << __LINE__ <<
" " << _path << std::endl;
357 response.out() <<
"ok";
372 Wt::EntryPointType::Application,
373 [](
const Wt::WEnvironment &env)
375 return std::make_unique<C>(env);
381 int main(
int argc,
char ** argv )
400 Wt::WLayout::setDefaultImplementation( Wt::LayoutImplementation::JavaScript );
409 Wt::WServer server( argc, argv );
435 addEntryPoint< Redirector >(
"/" , server );
436 addEntryPoint< GCW::App >(
"/demo" , server );
437 addEntryPoint< GCW::App >(
"/gnucashew" , server );
443 catch( Wt::WServer::Exception & e )
445 std::cerr << e.what() <<
" TERMINATING TERMINATING TERMINATING" << std::endl;
void handleRequest(const Wt::Http::Request &request, Wt::Http::Response &response)
void handleRequest(const Wt::Http::Request &request, Wt::Http::Response &response)
void handleRequest(const Wt::Http::Request &request, Wt::Http::Response &response)
Redirector(const Wt::WEnvironment &env)
int main(int argc, char **argv)
void show_program_version(const std::string &message)
void addEntryPoint(const std::string &url, Wt::WServer &server)
auto currentDateTime() -> Wt::WDateTime
Current Date/Time.
auto find(const std::string &_splitGuid) -> Item::Ptr
Find a single split.