mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
retroshare-gui now handle JsonApiServer too
This commit is contained in:
parent
1c7f02655e
commit
ccabf82e60
173
retroshare-gui/src/gui/settings/JsonApiPage.cc
Normal file
173
retroshare-gui/src/gui/settings/JsonApiPage.cc
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
/*
|
||||||
|
* RetroShare JSON API
|
||||||
|
* Copyright (C) 2018 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include "JsonApiPage.h"
|
||||||
|
|
||||||
|
#include "rsharesettings.h"
|
||||||
|
#include "jsonapi/jsonapi.h"
|
||||||
|
#include "util/misc.h"
|
||||||
|
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QStringListModel>
|
||||||
|
#include <QProgressDialog>
|
||||||
|
|
||||||
|
|
||||||
|
JsonApiPage::JsonApiPage(QWidget */*parent*/, Qt::WindowFlags /*flags*/)
|
||||||
|
{
|
||||||
|
ui.setupUi(this);
|
||||||
|
connect( ui.addTokenPushButton, &QPushButton::clicked,
|
||||||
|
this, &JsonApiPage::addTokenClicked);
|
||||||
|
connect( ui.removeTokenPushButton, &QPushButton::clicked,
|
||||||
|
this, &JsonApiPage::removeTokenClicked );
|
||||||
|
connect( ui.tokensListView, &QListView::clicked,
|
||||||
|
this, &JsonApiPage::tokenClicked );
|
||||||
|
connect( ui.applyConfigPushButton, &QPushButton::clicked,
|
||||||
|
this, &JsonApiPage::onApplyClicked );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool JsonApiPage::updateParams(QString &errmsg)
|
||||||
|
{
|
||||||
|
bool ok = true;
|
||||||
|
bool changed = false;
|
||||||
|
|
||||||
|
bool enabled = ui.enableCheckBox->isChecked();
|
||||||
|
if( enabled != Settings->getJsonApiEnabled())
|
||||||
|
{
|
||||||
|
Settings->setJsonApiEnabled(enabled);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t port = ui.portSpinBox->value();
|
||||||
|
if(port != Settings->getJsonApiPort())
|
||||||
|
{
|
||||||
|
Settings->setJsonApiPort(port);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString listenAddress = ui.listenAddressLineEdit->text();
|
||||||
|
if(listenAddress != Settings->getJsonApiListenAddress())
|
||||||
|
{
|
||||||
|
Settings->setJsonApiListenAddress(listenAddress);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(changed)
|
||||||
|
{
|
||||||
|
checkShutdownJsonApi();
|
||||||
|
ok = checkStartJsonApi();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!ok) errmsg = "Could not start JSON API Server!";
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void JsonApiPage::load()
|
||||||
|
{
|
||||||
|
whileBlocking(ui.enableCheckBox)->setChecked(Settings->getJsonApiEnabled());
|
||||||
|
whileBlocking(ui.portSpinBox)->setValue(Settings->getJsonApiPort());
|
||||||
|
whileBlocking(ui.listenAddressLineEdit)->setText(Settings->getJsonApiListenAddress());
|
||||||
|
whileBlocking(ui.tokensListView)->setModel(new QStringListModel(Settings->getJsonApiAuthTokens()));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString JsonApiPage::helpText() const { return ""; }
|
||||||
|
|
||||||
|
/*static*/ bool JsonApiPage::checkStartJsonApi()
|
||||||
|
{
|
||||||
|
checkShutdownJsonApi();
|
||||||
|
|
||||||
|
if(Settings->getJsonApiEnabled())
|
||||||
|
{
|
||||||
|
jsonApiServer = new JsonApiServer(
|
||||||
|
Settings->getJsonApiPort(),
|
||||||
|
Settings->getJsonApiListenAddress().toStdString() );
|
||||||
|
jsonApiServer->start("jsonApiServer");
|
||||||
|
|
||||||
|
for(const QString& token : Settings->getJsonApiAuthTokens())
|
||||||
|
jsonApiServer->authorizeToken(token.toStdString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*static*/ void JsonApiPage::checkShutdownJsonApi()
|
||||||
|
{
|
||||||
|
if(jsonApiServer)
|
||||||
|
{
|
||||||
|
/* It is important to make a copy of +jsonApiServer+ pointer so the old
|
||||||
|
* object can be deleted later, while the original pointer is
|
||||||
|
* reassigned */
|
||||||
|
JsonApiServer* oldJsonApiServer = jsonApiServer;
|
||||||
|
jsonApiServer = nullptr;
|
||||||
|
|
||||||
|
oldJsonApiServer->shutdown();
|
||||||
|
|
||||||
|
QProgressDialog* pd = new QProgressDialog(
|
||||||
|
"Stopping JSON API Server", QString(), 0, 3000);
|
||||||
|
QTimer* prtm = new QTimer;
|
||||||
|
prtm->setInterval(16); // 60 FPS
|
||||||
|
connect( prtm, &QTimer::timeout,
|
||||||
|
pd, [=](){pd->setValue(pd->value()+16);} );
|
||||||
|
pd->show();
|
||||||
|
prtm->start();
|
||||||
|
|
||||||
|
/* Must wait for deletion because stopping of the server is async.
|
||||||
|
* It is important to capture a copy so it "survive" after
|
||||||
|
* safeStopJsonApiServer returns */
|
||||||
|
QTimer::singleShot(3*1000, [=]()
|
||||||
|
{
|
||||||
|
delete oldJsonApiServer;
|
||||||
|
prtm->stop();
|
||||||
|
pd->close();
|
||||||
|
prtm->deleteLater();
|
||||||
|
pd->deleteLater();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void JsonApiPage::onApplyClicked(bool)
|
||||||
|
{
|
||||||
|
QString errmsg;
|
||||||
|
updateParams(errmsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JsonApiPage::addTokenClicked(bool)
|
||||||
|
{
|
||||||
|
QString token(ui.tokenLineEdit->text());
|
||||||
|
if(jsonApiServer) jsonApiServer->authorizeToken(token.toStdString());
|
||||||
|
QStringList newTk(Settings->getJsonApiAuthTokens());
|
||||||
|
newTk.removeAll(token);
|
||||||
|
newTk.append(token);
|
||||||
|
Settings->setJsonApiAuthTokens(newTk);
|
||||||
|
whileBlocking(ui.tokensListView)->setModel(new QStringListModel(newTk));
|
||||||
|
}
|
||||||
|
|
||||||
|
void JsonApiPage::removeTokenClicked(bool)
|
||||||
|
{
|
||||||
|
QString token(ui.tokenLineEdit->text());
|
||||||
|
if(jsonApiServer) jsonApiServer->revokeAuthToken(token.toStdString());
|
||||||
|
QStringList newTk(Settings->getJsonApiAuthTokens());
|
||||||
|
newTk.removeAll(token);
|
||||||
|
Settings->setJsonApiAuthTokens(newTk);
|
||||||
|
whileBlocking(ui.tokensListView)->setModel(
|
||||||
|
new QStringListModel(Settings->getJsonApiAuthTokens()) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void JsonApiPage::tokenClicked(const QModelIndex& index)
|
||||||
|
{
|
||||||
|
ui.tokenLineEdit->setText(ui.tokensListView->model()->data(index).toString());
|
||||||
|
}
|
||||||
|
|
58
retroshare-gui/src/gui/settings/JsonApiPage.h
Normal file
58
retroshare-gui/src/gui/settings/JsonApiPage.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* RetroShare JSON API
|
||||||
|
* Copyright (C) 2018 Gioacchino Mazzurco <gio@eigenlab.org>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <retroshare-gui/configpage.h>
|
||||||
|
#include "ui_JsonApiPage.h"
|
||||||
|
|
||||||
|
class JsonApiPage : public ConfigPage
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
JsonApiPage(QWidget * parent = nullptr, Qt::WindowFlags flags = 0);
|
||||||
|
~JsonApiPage() {}
|
||||||
|
|
||||||
|
/** Loads the settings for this page */
|
||||||
|
virtual void load();
|
||||||
|
|
||||||
|
virtual QPixmap iconPixmap() const
|
||||||
|
{ return QPixmap(":/icons/svg/empty-circle.svg"); }
|
||||||
|
virtual QString pageName() const { return tr("JSON API"); }
|
||||||
|
virtual QString helpText() const;
|
||||||
|
|
||||||
|
/** Call this after start of libretroshare/Retroshare
|
||||||
|
* checks the settings and starts JSON API if required */
|
||||||
|
static bool checkStartJsonApi();
|
||||||
|
|
||||||
|
/** call this before shutdown of libretroshare
|
||||||
|
* it stops the JSON API if its running */
|
||||||
|
static void checkShutdownJsonApi();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void onApplyClicked(bool);
|
||||||
|
void addTokenClicked(bool);
|
||||||
|
void removeTokenClicked(bool);
|
||||||
|
void tokenClicked(const QModelIndex& index);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::JsonApiPage ui; /// Qt Designer generated object
|
||||||
|
|
||||||
|
bool updateParams(QString &errmsg);
|
||||||
|
};
|
147
retroshare-gui/src/gui/settings/JsonApiPage.ui
Normal file
147
retroshare-gui/src/gui/settings/JsonApiPage.ui
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>JsonApiPage</class>
|
||||||
|
<widget class="QWidget" name="JsonApiPage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>521</width>
|
||||||
|
<height>393</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="WebuiPageVLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="jsonApiGroupBox">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>274</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>JSON API Server</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="enableCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable RetroShare JSON API Server</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Port:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="portSpinBox">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1024</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>65535</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>9092</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Listen Address:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="listenAddressLineEdit">
|
||||||
|
<property name="text">
|
||||||
|
<string>127.0.0.1</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Token:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="tokenLineEdit">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>ApiUser:ApiPassword</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="addTokenPushButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Add</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="removeTokenPushButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Authenticated Tokens</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QListView" name="tokensListView"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="applyConfigPushButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Restart JSON API Server to apply settings</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="mainVSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>17</width>
|
||||||
|
<height>632</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -23,11 +23,6 @@ resource_api::ApiServerLocal* WebuiPage::apiServerLocal = 0;
|
|||||||
#endif
|
#endif
|
||||||
resource_api::RsControlModule* WebuiPage::controlModule = 0;
|
resource_api::RsControlModule* WebuiPage::controlModule = 0;
|
||||||
|
|
||||||
#ifdef RS_JSONAPI
|
|
||||||
# include <csignal>
|
|
||||||
|
|
||||||
JsonApiServer* WebuiPage::jsonApiServer = nullptr;
|
|
||||||
#endif // ifdef RS_JSONAPI
|
|
||||||
|
|
||||||
WebuiPage::WebuiPage(QWidget */*parent*/, Qt::WindowFlags /*flags*/)
|
WebuiPage::WebuiPage(QWidget */*parent*/, Qt::WindowFlags /*flags*/)
|
||||||
{
|
{
|
||||||
@ -113,15 +108,6 @@ QString WebuiPage::helpText() const
|
|||||||
apiServerLocal = new resource_api::ApiServerLocal(apiServer, resource_api::ApiServerLocal::serverPath());
|
apiServerLocal = new resource_api::ApiServerLocal(apiServer, resource_api::ApiServerLocal::serverPath());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RS_JSONAPI
|
|
||||||
// Use same port of libresapi + 2
|
|
||||||
jsonApiServer = new JsonApiServer(
|
|
||||||
Settings->getWebinterfacePort() + 2,
|
|
||||||
Settings->getWebinterfaceAllowAllIps() ? "::" : "127.0.0.1",
|
|
||||||
[](int /*ec*/) { std::raise(SIGTERM); } );
|
|
||||||
jsonApiServer->start("WebuiPage::jsonApiServer");
|
|
||||||
#endif // ifdef RS_JSONAPI
|
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,10 +128,6 @@ QString WebuiPage::helpText() const
|
|||||||
delete controlModule;
|
delete controlModule;
|
||||||
controlModule = 0;
|
controlModule = 0;
|
||||||
}
|
}
|
||||||
#ifdef RS_JSONAPI
|
|
||||||
delete jsonApiServer;
|
|
||||||
jsonApiServer = nullptr;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static*/ void WebuiPage::showWebui()
|
/*static*/ void WebuiPage::showWebui()
|
||||||
|
@ -3,10 +3,6 @@
|
|||||||
#include <retroshare-gui/configpage.h>
|
#include <retroshare-gui/configpage.h>
|
||||||
#include "ui_WebuiPage.h"
|
#include "ui_WebuiPage.h"
|
||||||
|
|
||||||
#ifdef RS_JSONAPI
|
|
||||||
# include "jsonapi/jsonapi.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace resource_api{
|
namespace resource_api{
|
||||||
class ApiServer;
|
class ApiServer;
|
||||||
class ApiServerMHD;
|
class ApiServerMHD;
|
||||||
@ -59,7 +55,4 @@ private:
|
|||||||
static resource_api::ApiServerLocal* apiServerLocal;
|
static resource_api::ApiServerLocal* apiServerLocal;
|
||||||
#endif
|
#endif
|
||||||
static resource_api::RsControlModule* controlModule;
|
static resource_api::RsControlModule* controlModule;
|
||||||
#ifdef RS_JSONAPI
|
|
||||||
static JsonApiServer* jsonApiServer;
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
@ -50,6 +50,10 @@
|
|||||||
# include "WebuiPage.h"
|
# include "WebuiPage.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RS_JSONAPI
|
||||||
|
# include "JsonApiPage.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define IMAGE_GENERAL ":/images/kcmsystem24.png"
|
#define IMAGE_GENERAL ":/images/kcmsystem24.png"
|
||||||
|
|
||||||
#define ITEM_SPACING 2
|
#define ITEM_SPACING 2
|
||||||
@ -165,8 +169,12 @@ SettingsPage::initStackedWidget()
|
|||||||
#ifdef ENABLE_WEBUI
|
#ifdef ENABLE_WEBUI
|
||||||
addPage(new WebuiPage() );
|
addPage(new WebuiPage() );
|
||||||
#endif // ENABLE_WEBUI
|
#endif // ENABLE_WEBUI
|
||||||
// add widgets from plugins
|
|
||||||
|
|
||||||
|
#ifdef RS_JSONAPI
|
||||||
|
addPage(new JsonApiPage());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// add widgets from plugins
|
||||||
for(int i=0;i<rsPlugins->nbPlugins();++i)
|
for(int i=0;i<rsPlugins->nbPlugins();++i)
|
||||||
{
|
{
|
||||||
RsPlugin *pl = rsPlugins->plugin(i) ;
|
RsPlugin *pl = rsPlugins->plugin(i) ;
|
||||||
|
@ -1171,3 +1171,45 @@ void RshareSettings::setPageAlreadyDisplayed(const QString& page_name,bool b)
|
|||||||
{
|
{
|
||||||
return setValueToGroup("PageAlreadyDisplayed",page_name,b);
|
return setValueToGroup("PageAlreadyDisplayed",page_name,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef RS_JSONAPI
|
||||||
|
bool RshareSettings::getJsonApiEnabled()
|
||||||
|
{
|
||||||
|
return valueFromGroup("JsonApi", "enabled", false).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RshareSettings::setJsonApiEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
setValueToGroup("JsonApi", "enabled", enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t RshareSettings::getJsonApiPort()
|
||||||
|
{
|
||||||
|
return valueFromGroup("JsonApi", "port", 9092).toUInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RshareSettings::setJsonApiPort(uint16_t port)
|
||||||
|
{
|
||||||
|
setValueToGroup("JsonApi", "port", port);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString RshareSettings::getJsonApiListenAddress()
|
||||||
|
{
|
||||||
|
return valueFromGroup("JsonApi", "listenAddress", "127.0.0.1").toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RshareSettings::setJsonApiListenAddress(const QString& listenAddress)
|
||||||
|
{
|
||||||
|
setValueToGroup("JsonApi", "listenAddress", listenAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList RshareSettings::getJsonApiAuthTokens()
|
||||||
|
{
|
||||||
|
return valueFromGroup("JsonApi", "authTokens", QStringList()).toStringList();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RshareSettings::setJsonApiAuthTokens(const QStringList& authTokens)
|
||||||
|
{
|
||||||
|
setValueToGroup("JsonApi", "authTokens", authTokens);
|
||||||
|
}
|
||||||
|
#endif // RS_JSONAPI
|
||||||
|
@ -341,6 +341,20 @@ public:
|
|||||||
bool getPageAlreadyDisplayed(const QString& page_code) ;
|
bool getPageAlreadyDisplayed(const QString& page_code) ;
|
||||||
void setPageAlreadyDisplayed(const QString& page_code,bool b) ;
|
void setPageAlreadyDisplayed(const QString& page_code,bool b) ;
|
||||||
|
|
||||||
|
#ifdef RS_JSONAPI
|
||||||
|
bool getJsonApiEnabled();
|
||||||
|
void setJsonApiEnabled(bool enabled);
|
||||||
|
|
||||||
|
uint16_t getJsonApiPort();
|
||||||
|
void setJsonApiPort(uint16_t port);
|
||||||
|
|
||||||
|
QString getJsonApiListenAddress();
|
||||||
|
void setJsonApiListenAddress(const QString& listenAddress);
|
||||||
|
|
||||||
|
QStringList getJsonApiAuthTokens();
|
||||||
|
void setJsonApiAuthTokens(const QStringList& authTokens);
|
||||||
|
#endif // ifdef RS_JSONAPI
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Default constructor. */
|
/** Default constructor. */
|
||||||
RshareSettings();
|
RshareSettings();
|
||||||
|
@ -51,6 +51,10 @@
|
|||||||
# include "gui/settings/WebuiPage.h"
|
# include "gui/settings/WebuiPage.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RS_JSONAPI
|
||||||
|
# include "gui/settings/JsonApiPage.h"
|
||||||
|
#endif // RS_JSONAPI
|
||||||
|
|
||||||
#include "TorControl/TorManager.h"
|
#include "TorControl/TorManager.h"
|
||||||
#include "TorControl/TorControlWindow.h"
|
#include "TorControl/TorControlWindow.h"
|
||||||
|
|
||||||
@ -536,6 +540,10 @@ feenableexcept(FE_INVALID | FE_DIVBYZERO);
|
|||||||
WebuiPage::checkStartWebui();
|
WebuiPage::checkStartWebui();
|
||||||
#endif // ENABLE_WEBUI
|
#endif // ENABLE_WEBUI
|
||||||
|
|
||||||
|
#ifdef RS_JSONAPI
|
||||||
|
JsonApiPage::checkStartJsonApi();
|
||||||
|
#endif // RS_JSONAPI
|
||||||
|
|
||||||
// This is done using a timer, because the passphrase request from notify is asynchrouneous and therefore clearing the
|
// This is done using a timer, because the passphrase request from notify is asynchrouneous and therefore clearing the
|
||||||
// passphrase here makes it request for a passphrase when creating the default chat identity.
|
// passphrase here makes it request for a passphrase when creating the default chat identity.
|
||||||
|
|
||||||
@ -545,6 +553,10 @@ feenableexcept(FE_INVALID | FE_DIVBYZERO);
|
|||||||
int ti = rshare.exec();
|
int ti = rshare.exec();
|
||||||
delete w ;
|
delete w ;
|
||||||
|
|
||||||
|
#ifdef RS_JSONAPI
|
||||||
|
JsonApiPage::checkShutdownJsonApi();
|
||||||
|
#endif // RS_JSONAPI
|
||||||
|
|
||||||
#ifdef ENABLE_WEBUI
|
#ifdef ENABLE_WEBUI
|
||||||
WebuiPage::checkShutdownWebui();
|
WebuiPage::checkShutdownWebui();
|
||||||
#endif // ENABLE_WEBUI
|
#endif // ENABLE_WEBUI
|
||||||
|
@ -17,6 +17,12 @@ libresapihttpserver {
|
|||||||
FORMS *= gui/settings/WebuiPage.ui
|
FORMS *= gui/settings/WebuiPage.ui
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rs_jsonapi {
|
||||||
|
HEADERS *= gui/settings/JsonApiPage.h
|
||||||
|
SOURCES *= gui/settings/JsonApiPage.cc
|
||||||
|
FORMS *= gui/settings/JsonApiPage.ui
|
||||||
|
}
|
||||||
|
|
||||||
!include("../../libretroshare/src/use_libretroshare.pri"):error("Including")
|
!include("../../libretroshare/src/use_libretroshare.pri"):error("Including")
|
||||||
|
|
||||||
FORMS += TorControl/TorControlWindow.ui
|
FORMS += TorControl/TorControlWindow.ui
|
||||||
|
Loading…
Reference in New Issue
Block a user