From b8b7d103e1c79e52192e4da2dc9db2d4411e6243 Mon Sep 17 00:00:00 2001 From: csoler Date: Sat, 23 Nov 2019 15:11:22 +0100 Subject: [PATCH] fixed compilation by modifying wrappers to account for the shared_ptr mService --- .../async-method-wrapper-template.cpp.tmpl | 2 +- jsonapi-generator/src/jsonapi-generator.cpp | 2 +- libretroshare/src/jsonapi/jsonapi.cpp | 6 +-- libretroshare/src/jsonapi/jsonapi.h | 5 ++- libretroshare/src/jsonapi/restbedservice.cc | 12 ++--- libretroshare/src/jsonapi/restbedservice.h | 5 ++- libretroshare/src/retroshare/rsjsonapi.h | 3 +- retroshare-gui/src/gui/settings/WebuiPage.cpp | 10 +---- retroshare-gui/src/gui/settings/WebuiPage.ui | 45 ++++++------------- 9 files changed, 33 insertions(+), 57 deletions(-) diff --git a/jsonapi-generator/src/async-method-wrapper-template.cpp.tmpl b/jsonapi-generator/src/async-method-wrapper-template.cpp.tmpl index 81b97265b..4345532e7 100644 --- a/jsonapi-generator/src/async-method-wrapper-template.cpp.tmpl +++ b/jsonapi-generator/src/async-method-wrapper-template.cpp.tmpl @@ -55,7 +55,7 @@ $%callbackParamsSerialization%$ sStream << "data: " << compactJSON << ctx.mJson << "\n\n"; const std::string message = sStream.str(); - mService.schedule( [weakSession, message]() + mService->schedule( [weakSession, message]() { auto session = weakSession.lock(); if(!session || session->is_closed()) return; diff --git a/jsonapi-generator/src/jsonapi-generator.cpp b/jsonapi-generator/src/jsonapi-generator.cpp index 0a6bf3231..4a80b88e2 100644 --- a/jsonapi-generator/src/jsonapi-generator.cpp +++ b/jsonapi-generator/src/jsonapi-generator.cpp @@ -326,7 +326,7 @@ int main(int argc, char *argv[]) QString sessionDelayedClose; if(hasMultiCallback) - sessionDelayedClose = "RsThread::async( [=](){ std::this_thread::sleep_for(std::chrono::seconds(maxWait+120)); mService.schedule( [=](){ auto session = weakSession.lock(); if(session && session->is_open()) session->close(); } ); } );"; + sessionDelayedClose = "RsThread::async( [=](){ std::this_thread::sleep_for(std::chrono::seconds(maxWait+120)); mService->schedule( [=](){ auto session = weakSession.lock(); if(session && session->is_open()) session->close(); } ); } );"; QString callbackParamsSerialization; diff --git a/libretroshare/src/jsonapi/jsonapi.cpp b/libretroshare/src/jsonapi/jsonapi.cpp index 22cc50148..e0e96838f 100644 --- a/libretroshare/src/jsonapi/jsonapi.cpp +++ b/libretroshare/src/jsonapi/jsonapi.cpp @@ -337,7 +337,7 @@ JsonApiServer::JsonApiServer(): configMutex("JsonApiServer config") std::function)> multiCallback = [this, weakSession, hId](std::shared_ptr event) { - mService.schedule( [weakSession, hId, event]() + mService->schedule( [weakSession, hId, event]() { auto session = weakSession.lock(); if(!session || session->is_closed()) @@ -601,9 +601,9 @@ void JsonApiServer::handleCorsOptions( const std::shared_ptr session ) { session->close(rb::NO_CONTENT, corsOptionsHeaders); } -int JsonApiServer::status() const +int JsonApiServer::status() { - if(RestbedService::isRunning() && RestbedService::isClient(this)) + if(RestbedService::isRunning()) return JSONAPI_STATUS_RUNNING; else return JSONAPI_STATUS_NOT_RUNNING; diff --git a/libretroshare/src/jsonapi/jsonapi.h b/libretroshare/src/jsonapi/jsonapi.h index f505bc009..71f7223dd 100644 --- a/libretroshare/src/jsonapi/jsonapi.h +++ b/libretroshare/src/jsonapi/jsonapi.h @@ -69,10 +69,11 @@ public: bool restart() override { return RestbedService::restart(); } bool stop() override { return RestbedService::stop();} - int status() const override; + int status() override; void setListeningPort(uint16_t port) override { return RestbedService::setListeningPort(port); } void setBindingAddress(const std::string& bind_address) override { return RestbedService::setBindAddress(bind_address); } + uint16_t listeningPort() const override { return RestbedService::listeningPort() ; } virtual void connectToConfigManager(p3ConfigMgr *cfgmgr); @@ -189,6 +190,6 @@ private: } std::vector > _resources; - std::set _resource_providers; + std::set _resource_providers; }; diff --git a/libretroshare/src/jsonapi/restbedservice.cc b/libretroshare/src/jsonapi/restbedservice.cc index 7d313d970..b12d6f4d2 100644 --- a/libretroshare/src/jsonapi/restbedservice.cc +++ b/libretroshare/src/jsonapi/restbedservice.cc @@ -31,7 +31,7 @@ RestbedService::RestbedService() mBindingAddress = "127.0.0.1"; } -void RestbedService::stop() +bool RestbedService::stop() { mService->stop(); @@ -42,19 +42,15 @@ void RestbedService::stop() std::cerr << "(II) shutting down restbed service." << std::endl; rstime::rs_usleep(1000*1000); } + return true; } +uint16_t RestbedService::listeningPort() const { return mListeningPort ; } void RestbedService::setListeningPort(uint16_t p) { mListeningPort = p ; } void RestbedService::setBindAddress(const std::string& bindAddress) { mBindingAddress = bindAddress ; } -uint16_t RestbedService::listeningPort() const { return mListeningPort;} -void RestbedService::runloop() override +void RestbedService::runloop() { - if(_resources.empty()) - { - RsErr() << "(EE) please call RestbedService::setResources() before launching the service!" << std::endl; - return; - } auto settings = std::make_shared< restbed::Settings >( ); settings->set_port( mListeningPort ); settings->set_bind_address( mBindingAddress ); diff --git a/libretroshare/src/jsonapi/restbedservice.h b/libretroshare/src/jsonapi/restbedservice.h index 93b2c805b..b633ce7e0 100644 --- a/libretroshare/src/jsonapi/restbedservice.h +++ b/libretroshare/src/jsonapi/restbedservice.h @@ -35,10 +35,11 @@ public: bool restart(); bool stop(); - bool isRunning(); + bool isRunning() const; void setListeningPort(uint16_t port) ; void setBindAddress(const std::string& bind_address); + uint16_t listeningPort() const ; // should be overloaded by sub-class in order to provide resources to the restbed Service. @@ -47,9 +48,9 @@ public: protected: void runloop() override; -private: std::shared_ptr mService; // managed by RestbedService because it needs to be properly deleted when restarted. +private: uint16_t mListeningPort; std::string mBindingAddress; }; diff --git a/libretroshare/src/retroshare/rsjsonapi.h b/libretroshare/src/retroshare/rsjsonapi.h index 2ed67aeca..448dddda5 100644 --- a/libretroshare/src/retroshare/rsjsonapi.h +++ b/libretroshare/src/retroshare/rsjsonapi.h @@ -42,6 +42,7 @@ public: virtual void setBindingAddress(const std::string& address) =0; virtual void setListeningPort(uint16_t port) =0; + virtual uint16_t listeningPort() const =0; virtual void connectToConfigManager(p3ConfigMgr *cfgmgr)=0; @@ -54,7 +55,7 @@ public: * @jsonapi{development} * @return the status picked in the enum JSONAPI_STATUS_UNKNOWN/RUNNING/NOT_RUNNING */ - virtual int status() const=0; + virtual int status() =0; //=============================================================================================// // API methods that are also accessible through http // diff --git a/retroshare-gui/src/gui/settings/WebuiPage.cpp b/retroshare-gui/src/gui/settings/WebuiPage.cpp index 2a0f0125c..e9e88a81c 100644 --- a/retroshare-gui/src/gui/settings/WebuiPage.cpp +++ b/retroshare-gui/src/gui/settings/WebuiPage.cpp @@ -45,7 +45,6 @@ WebuiPage::WebuiPage(QWidget */*parent*/, Qt::WindowFlags /*flags*/) { ui.setupUi(this); connect(ui.enableWebUI_CB, SIGNAL(clicked(bool)), this, SLOT(onEnableCBClicked(bool))); - connect(ui.port_SB, SIGNAL(valueChanged(int)), this, SLOT(onPortValueChanged(int))); connect(ui.allIp_CB, SIGNAL(clicked(bool)), this, SLOT(onAllIPCBClicked(bool))); connect(ui.apply_PB, SIGNAL(clicked()), this, SLOT(onApplyClicked())); connect(ui.password_LE, SIGNAL(textChanged(QString)), this, SLOT(onPasswordValueChanged(QString))); @@ -75,8 +74,6 @@ bool WebuiPage::updateParams(QString &errmsg) bool changed = false; if(ui.enableWebUI_CB->isChecked() != Settings->getWebinterfaceEnabled()) changed = true; - if(ui.port_SB->value() != Settings->getWebinterfacePort()) - changed = true; if(ui.allIp_CB->isChecked() != Settings->getWebinterfaceAllowAllIps()) changed = true; if(ui.webInterfaceFiles_LE->text() != Settings->getWebinterfaceFilesDirectory()) @@ -86,7 +83,6 @@ bool WebuiPage::updateParams(QString &errmsg) { // store config Settings->setWebinterfaceEnabled(ui.enableWebUI_CB->isChecked()); - Settings->setWebinterfacePort(ui.port_SB->value()); Settings->setWebinterfaceAllowAllIps(ui.allIp_CB->isChecked()); Settings->setWebinterfaceFilesDirectory(ui.webInterfaceFiles_LE->text()); } @@ -123,7 +119,6 @@ void WebuiPage::load() { std::cerr << "WebuiPage::load()" << std::endl; whileBlocking(ui.enableWebUI_CB)->setChecked(Settings->getWebinterfaceEnabled()); - whileBlocking(ui.port_SB)->setValue(Settings->getWebinterfacePort()); whileBlocking(ui.webInterfaceFiles_LE)->setText(Settings->getWebinterfaceFilesDirectory()); whileBlocking(ui.allIp_CB)->setChecked(Settings->getWebinterfaceAllowAllIps()); @@ -149,9 +144,7 @@ QString WebuiPage::helpText() const if(!Settings->getWebinterfaceEnabled()) return false; - rsWebUI->setListeningPort(Settings->getWebinterfacePort()); rsWebUI->setHtmlFilesDirectory(Settings->getWebinterfaceFilesDirectory().toStdString()); - rsWebUI->restart(); return true; @@ -215,5 +208,6 @@ void WebuiPage::onApplyClicked() void WebuiPage::onStartWebBrowserClicked() { - QDesktopServices::openUrl(QUrl(QString("http://localhost:")+QString::number(ui.port_SB->value()))); + QDesktopServices::openUrl(QUrl(QString("http://localhost:")+QString::number(rsJsonAPI->listeningPort()))); } + diff --git a/retroshare-gui/src/gui/settings/WebuiPage.ui b/retroshare-gui/src/gui/settings/WebuiPage.ui index 2b8b758a2..5ca37e9b6 100644 --- a/retroshare-gui/src/gui/settings/WebuiPage.ui +++ b/retroshare-gui/src/gui/settings/WebuiPage.ui @@ -33,33 +33,27 @@ - + - Listening port: + Password: - - - - 1024 - - - 65535 - - - 1984 - - - - + Web interface directory: - + + + + QLineEdit::Password + + + + @@ -84,24 +78,13 @@ - - - - Password: - - - - - - - QLineEdit::Password - - - + + false + Allow access from all IP addresses (Default: localhost only)