commit
e0864b3834
@ -30,7 +30,7 @@ bool Engine::exists()
|
|||||||
return s_instance != nullptr;
|
return s_instance != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::start()
|
void Engine::start(ProxyConfiguration *configuration)
|
||||||
{
|
{
|
||||||
// Make sure an authenticator was registered
|
// Make sure an authenticator was registered
|
||||||
Q_ASSERT_X(m_authenticator != nullptr, "Engine", "There is no authenticator registerd.");
|
Q_ASSERT_X(m_authenticator != nullptr, "Engine", "There is no authenticator registerd.");
|
||||||
@ -42,7 +42,7 @@ void Engine::start()
|
|||||||
// Clean up
|
// Clean up
|
||||||
clean();
|
clean();
|
||||||
|
|
||||||
m_configuration = new ProxyConfiguration(this);
|
m_configuration = configuration;
|
||||||
m_proxyServer = new ProxyServer(this);
|
m_proxyServer = new ProxyServer(this);
|
||||||
m_webSocketServer = new WebSocketServer(m_sslConfiguration, this);
|
m_webSocketServer = new WebSocketServer(m_sslConfiguration, this);
|
||||||
|
|
||||||
@ -50,6 +50,7 @@ void Engine::start()
|
|||||||
websocketServerUrl.setScheme("wss");
|
websocketServerUrl.setScheme("wss");
|
||||||
websocketServerUrl.setHost(m_configuration->webSocketServerHost().toString());
|
websocketServerUrl.setHost(m_configuration->webSocketServerHost().toString());
|
||||||
websocketServerUrl.setPort(m_configuration->webSocketServerPort());
|
websocketServerUrl.setPort(m_configuration->webSocketServerPort());
|
||||||
|
qDebug() << "WSS url is:" << websocketServerUrl;
|
||||||
m_webSocketServer->setServerUrl(websocketServerUrl);
|
m_webSocketServer->setServerUrl(websocketServerUrl);
|
||||||
|
|
||||||
m_proxyServer->registerTransportInterface(m_webSocketServer);
|
m_proxyServer->registerTransportInterface(m_webSocketServer);
|
||||||
|
|||||||
@ -22,7 +22,7 @@ public:
|
|||||||
|
|
||||||
static bool exists();
|
static bool exists();
|
||||||
|
|
||||||
void start();
|
void start(ProxyConfiguration *configuration);
|
||||||
void stop();
|
void stop();
|
||||||
|
|
||||||
bool running() const;
|
bool running() const;
|
||||||
|
|||||||
@ -25,14 +25,11 @@ bool ProxyConfiguration::loadConfiguration(const QString &fileName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QSettings settings(fileName, QSettings::IniFormat);
|
QSettings settings(fileName, QSettings::IniFormat);
|
||||||
qCDebug(dcApplication()) << settings.childGroups();
|
|
||||||
|
|
||||||
settings.beginGroup("General");
|
|
||||||
setWriteLogFile(settings.value("writeLogs", false).toBool());
|
setWriteLogFile(settings.value("writeLogs", false).toBool());
|
||||||
setLogFileName(settings.value("logFile", "/var/log/nymea-remoteproxy.log").toString());
|
setLogFileName(settings.value("logFile", "/var/log/nymea-remoteproxy.log").toString());
|
||||||
setSslCertificateFileName(settings.value("certificate", "/etc/ssl/certs/ssl-cert-snakeoil.pem").toString());
|
setSslCertificateFileName(settings.value("certificate", "/etc/ssl/certs/ssl-cert-snakeoil.pem").toString());
|
||||||
setSslCertificateKeyFileName(settings.value("certificateKey", "/etc/ssl/private/ssl-cert-snakeoil.key").toString());
|
setSslCertificateKeyFileName(settings.value("certificateKey", "/etc/ssl/private/ssl-cert-snakeoil.key").toString());
|
||||||
settings.endGroup();
|
|
||||||
|
|
||||||
settings.beginGroup("WebSocketServer");
|
settings.beginGroup("WebSocketServer");
|
||||||
setWebSocketServerHost(QHostAddress(settings.value("host", "127.0.0.1").toString()));
|
setWebSocketServerHost(QHostAddress(settings.value("host", "127.0.0.1").toString()));
|
||||||
@ -40,8 +37,8 @@ bool ProxyConfiguration::loadConfiguration(const QString &fileName)
|
|||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup("TcpServer");
|
settings.beginGroup("TcpServer");
|
||||||
setWebSocketServerHost(QHostAddress(settings.value("host", "127.0.0.1").toString()));
|
setTcpServerHost(QHostAddress(settings.value("host", "127.0.0.1").toString()));
|
||||||
setWebSocketServerPort(static_cast<quint16>(settings.value("port", 1213).toInt()));
|
setTcpServerPort(static_cast<quint16>(settings.value("port", 1213).toInt()));
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -74,7 +71,7 @@ QString ProxyConfiguration::sslCertificateFileName() const
|
|||||||
|
|
||||||
void ProxyConfiguration::setSslCertificateFileName(const QString &fileName)
|
void ProxyConfiguration::setSslCertificateFileName(const QString &fileName)
|
||||||
{
|
{
|
||||||
m_logFileName = fileName;
|
m_sslCertificateFileName = fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ProxyConfiguration::sslCertificateKeyFileName() const
|
QString ProxyConfiguration::sslCertificateKeyFileName() const
|
||||||
@ -143,7 +140,7 @@ QDebug operator<<(QDebug debug, ProxyConfiguration *configuration)
|
|||||||
debug.nospace() << " - port:" << configuration->tcpServerPort() << endl;
|
debug.nospace() << " - port:" << configuration->tcpServerPort() << endl;
|
||||||
debug.nospace() << "========== ProxyConfiguration ==========" << endl;
|
debug.nospace() << "========== ProxyConfiguration ==========" << endl;
|
||||||
|
|
||||||
return debug; return debug;
|
return debug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
#include <QSslConfiguration>
|
#include <QSslConfiguration>
|
||||||
#include <QCommandLineParser>
|
#include <QCommandLineParser>
|
||||||
#include <QCommandLineOption>
|
#include <QCommandLineOption>
|
||||||
|
#include <QStandardPaths>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -100,6 +101,8 @@ int main(int argc, char *argv[])
|
|||||||
s_loggingFilters.insert("Authentication", true);
|
s_loggingFilters.insert("Authentication", true);
|
||||||
s_loggingFilters.insert("ProxyServer", true);
|
s_loggingFilters.insert("ProxyServer", true);
|
||||||
|
|
||||||
|
QString configFile = QStandardPaths::standardLocations(QStandardPaths::ConfigLocation).first() + "/nymea/nymea-remoteproxy.conf";
|
||||||
|
|
||||||
// command line parser
|
// command line parser
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
parser.addHelpOption();
|
parser.addHelpOption();
|
||||||
@ -124,11 +127,11 @@ int main(int argc, char *argv[])
|
|||||||
QCommandLineOption mockAuthenticatorOption(QStringList() << "m" << "mock-authenticator", "Start the server using a mock authenticator which returns always true.");
|
QCommandLineOption mockAuthenticatorOption(QStringList() << "m" << "mock-authenticator", "Start the server using a mock authenticator which returns always true.");
|
||||||
parser.addOption(mockAuthenticatorOption);
|
parser.addOption(mockAuthenticatorOption);
|
||||||
|
|
||||||
QCommandLineOption configOption(QStringList() << "c" <<"configuration", "The path to the proxy server configuration file. The default is /etc/nymea-remoteproxy/nymea-remoteproxy.conf", "configuration");
|
QCommandLineOption configOption(QStringList() << "c" <<"configuration", "The path to the proxy server configuration file. The default is " + configFile, "configuration");
|
||||||
configOption.setDefaultValue("/etc/nymea-remoteproxy/nymea-remoteproxy.conf");
|
configOption.setDefaultValue(configFile);
|
||||||
parser.addOption(configOption);
|
parser.addOption(configOption);
|
||||||
|
|
||||||
QCommandLineOption verboseOption(QStringList() << "v" << "verbose", "Print more verbose.");
|
QCommandLineOption verboseOption(QStringList() << "verbose", "Print more verbose.");
|
||||||
parser.addOption(verboseOption);
|
parser.addOption(verboseOption);
|
||||||
|
|
||||||
parser.process(application);
|
parser.process(application);
|
||||||
@ -136,11 +139,12 @@ int main(int argc, char *argv[])
|
|||||||
// Create a default configuration
|
// Create a default configuration
|
||||||
ProxyConfiguration *configuration = new ProxyConfiguration(nullptr);
|
ProxyConfiguration *configuration = new ProxyConfiguration(nullptr);
|
||||||
if (parser.isSet(configOption)) {
|
if (parser.isSet(configOption)) {
|
||||||
qCDebug(dcApplication()) << "Loading configuration file from" << parser.value(configOption);
|
configFile = parser.value(configOption);
|
||||||
if (!configuration->loadConfiguration(parser.value(configOption))) {
|
}
|
||||||
qCCritical(dcApplication()) << "Invalid configuration file passed" << parser.value(configOption);
|
qCDebug(dcApplication()) << "Loading configuration file from" << configFile;
|
||||||
exit(-1);
|
if (!configuration->loadConfiguration(parser.value(configOption))) {
|
||||||
}
|
qCCritical(dcApplication()) << "Invalid configuration file passed" << parser.value(configOption);
|
||||||
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -225,7 +229,7 @@ int main(int argc, char *argv[])
|
|||||||
Engine::instance()->setSslConfiguration(sslConfiguration);
|
Engine::instance()->setSslConfiguration(sslConfiguration);
|
||||||
Engine::instance()->setAuthenticator(authenticator);
|
Engine::instance()->setAuthenticator(authenticator);
|
||||||
|
|
||||||
Engine::instance()->start();
|
Engine::instance()->start(configuration);
|
||||||
|
|
||||||
return application.exec();
|
return application.exec();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,7 +70,7 @@ void RemoteProxyTests::webserverConnectionBlocked()
|
|||||||
Engine::instance()->setSslConfiguration(m_sslConfiguration);
|
Engine::instance()->setSslConfiguration(m_sslConfiguration);
|
||||||
|
|
||||||
QSignalSpy runningSpy(Engine::instance(), &Engine::runningChanged);
|
QSignalSpy runningSpy(Engine::instance(), &Engine::runningChanged);
|
||||||
Engine::instance()->start();
|
Engine::instance()->start(m_configuration);
|
||||||
runningSpy.wait();
|
runningSpy.wait();
|
||||||
|
|
||||||
QVERIFY(runningSpy.count() == 1);
|
QVERIFY(runningSpy.count() == 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user