add host and basic url (host with https://) to message handler

This commit is contained in:
Dario 2020-12-10 09:30:10 +01:00 committed by Ulf Gebhardt
parent b66f4c4e84
commit 01b2e65146
No known key found for this signature in database
GPG Key ID: 81308EFE29ABFEBD
4 changed files with 46 additions and 83 deletions

View File

@ -51,6 +51,13 @@ PageRequestHandlerFactory::PageRequestHandlerFactory()
ServerConfig::g_ServerKeySeed->put(8, DRRandom::r64());
}
Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::basicSetup(PageRequestMessagedHandler* handler, const Poco::Net::HTTPServerRequest& request, Profiler profiler)
{
handler->setHost(request.getHost());
handler->setProfiler(profiler);
return handler;
}
Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(const Poco::Net::HTTPServerRequest& request)
{
//printf("request uri: %s\n", request.getURI().data());
@ -76,17 +83,12 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
if (url_first_part == "/elopage_webhook_261") {
mLogging.information(dateTimeString + " call from elopage");
//printf("call from elopage\n");
auto pageRequestHandler = new ElopageWebhook;
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new ElopageWebhook, request, timeUsed);
}
if (url_first_part == "/elopage_webhook_211") {
mLogging.information(dateTimeString + " call from elopage light");
auto pageRequestHandler = new ElopageWebhookLight;
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new ElopageWebhookLight, request, timeUsed);
}
// check if user has valid session
@ -129,26 +131,18 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
}*/
if (url_first_part.size() >= 9 && url_first_part.substr(0,9) == "/register") {
//if (url_first_part == "/register" || url_first_part == "/registerDirect" ) {
auto pageRequestHandler = new RegisterDirectPage;
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new RegisterDirectPage, request, timeUsed);
}
if (url_first_part == "/resetPassword") {
auto resetPassword = new ResetPassword;
resetPassword->setProfiler(timeUsed);
return resetPassword;
return basicSetup(new ResetPassword, request, timeUsed);
}
if (url_first_part == "/decode_transaction") {
mLogging.information(dateTimeString + " decode");
auto pageRequestHandler = new DecodeTransactionPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new DecodeTransactionPage(s), request, timeUsed);
}
if (url_first_part == "/passphrased_transaction") {
auto pageRequestHandler = new PassphrasedTransaction();
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new PassphrasedTransaction, request, timeUsed);
}
if (s) {
if (externReferer != "") {
@ -162,76 +156,48 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
s->getErrors(userModel);
}
s->sendErrorsAsEmail();
auto pageRequestHandler = new Error500Page(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new Error500Page(s), request, timeUsed);
}
if (url_first_part == "/error500") {
auto pageRequestHandler = new Error500Page(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new Error500Page(s), request, timeUsed);
}
if (url_first_part == "/userUpdateGroup") {
auto pageRequestHandler = new UserUpdateGroupPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new UserUpdateGroupPage(s), request, timeUsed);
}
if (url_first_part == "/transform_passphrase") {
auto pageRequestHandler = new TranslatePassphrase(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new TranslatePassphrase(s), request, timeUsed);
}
if (url_first_part == "/repairPassphrase") {
auto pageRequestHandler = new RepairDefectPassphrase(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new RepairDefectPassphrase(s), request, timeUsed);
}
if (userModel && userModel->getRole() == model::table::ROLE_ADMIN) {
if (url_first_part == "/adminRegister") {
auto pageRequestHandler = new RegisterAdminPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new RegisterAdminPage(s), request, timeUsed);
}
if (url_first_part == "/debugPassphrase") {
auto pageRequestHandler = new DebugPassphrasePage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new DebugPassphrasePage(s), request, timeUsed);
}
if (url_first_part == "/debugMnemonic") {
auto pageRequestHandler = new DebugMnemonicPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new DebugMnemonicPage(s), request, timeUsed);
}
if (url_first_part == "/checkUserBackups") {
auto pageRequestHandler = new AdminCheckUserBackup(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new AdminCheckUserBackup(s), request, timeUsed);
}
if (url_first_part == "/adminUserPasswordReset") {
auto pageRequestHandler = new AdminUserPasswordReset(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new AdminUserPasswordReset(s), request, timeUsed);
}
if (url_first_part == "/groups") {
auto pageRequestHandler = new AdminGroupsPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new AdminGroupsPage(s), request, timeUsed);
}
if (url_first_part == "/topic") {
auto pageRequestHandler = new AdminTopicPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new AdminTopicPage(s), request, timeUsed);
}
if (url_first_part == "/hedera_account") {
auto pageRequestHandler = new AdminHederaAccountPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new AdminHederaAccountPage(s), request, timeUsed);
}
if (url_first_part == "/nodes") {
auto pageRequestHandler = new AdminNodeServerPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new AdminNodeServerPage(s), request, timeUsed);
}
}
@ -240,36 +206,27 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
// remove cookie(s)
//printf("session released\n");
auto pageRequestHandler = new LoginPage(nullptr);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new LoginPage(nullptr), request, timeUsed);
}
if(url_first_part == "/user_delete") {
if(s->deleteUser()) {
sm->releaseSession(s);
auto pageRequestHandler = new LoginPage(nullptr);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new LoginPage(nullptr), request, timeUsed);
}
}
auto sessionState = s->getSessionState();
//printf("session state: %s\n", s->getSessionStateString());
if (url_first_part == "/updateUserPassword") {
auto pageRequestHandler = new UpdateUserPasswordPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new UpdateUserPasswordPage(s), request, timeUsed);
}
if (url_first_part == "/checkTransactions") {
auto pageRequestHandler = new CheckTransactionPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new CheckTransactionPage(s), request, timeUsed);
}
if(s && newUser && newUser->hasPassword() && newUser->hasPublicKey()) {
//printf("[PageRequestHandlerFactory] go to dashboard page with user\n");
auto pageRequestHandler = new DashboardPage(s);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new DashboardPage(s), request, timeUsed);
}
} else {
@ -278,14 +235,10 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
return new ConfigPage;
}
else if (url_first_part == "/login") {
auto pageRequestHandler = new LoginPage(nullptr);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new LoginPage(nullptr), request, timeUsed);
}
}
auto pageRequestHandler = new LoginPage(nullptr);
pageRequestHandler->setProfiler(timeUsed);
return pageRequestHandler;
return basicSetup(new LoginPage(nullptr), request, timeUsed);
//return new HandleFileRequest;
//return new PageRequestHandlerFactory;
}

View File

@ -18,6 +18,8 @@ public:
protected:
Poco::Net::HTTPRequestHandler* handleCheckEmail(Session* session, const std::string uri, const Poco::Net::HTTPServerRequest& request, Profiler timeUsed);
Poco::Net::HTTPRequestHandler* basicSetup(PageRequestMessagedHandler* handler, const Poco::Net::HTTPServerRequest& request, Profiler profiler);
Poco::RegularExpression mRemoveGETParameters;
Poco::Logger& mLogging;
};

View File

@ -8,6 +8,11 @@
// detect also lang field from form get
const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9/_-]*)?(?:/(en|de)|\\?.*lang=(en|de))");
PageRequestMessagedHandler::PageRequestMessagedHandler()
{
}
Languages PageRequestMessagedHandler::chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string lang_btn /*= ""*/)
{

View File

@ -14,9 +14,10 @@
class PageRequestMessagedHandler : public Poco::Net::HTTPRequestHandler, public NotificationList
{
public:
PageRequestMessagedHandler() {}
PageRequestMessagedHandler();
inline void setProfiler(Profiler profiler) { mTimeProfiler = profiler; }
inline void setHost(std::string host) { mHost = host; }
//Poco::Net::HTTPRequestHandler* createRequestHandler(const Poco::Net::HTTPServerRequest& request);
protected:
@ -26,8 +27,10 @@ protected:
virtual Languages chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string lang_btn = "");
unsigned long long getLastGetAsU64(const std::string& uri);
inline std::string getBaseUrl() { return "https://" + mHost; }
Profiler mTimeProfiler;
std::string mHost;
};