move also transports into servermanager so we can share ssl config etc
This makes WebSocketServer pick up the global SSL configuration from ServerManager.
This commit is contained in:
parent
39e1807f94
commit
2b4972de52
@ -370,13 +370,13 @@ TimeManager *GuhCore::timeManager() const
|
||||
/*! Returns a pointer to the \l{WebServer} instance owned by GuhCore.*/
|
||||
WebServer *GuhCore::webServer() const
|
||||
{
|
||||
return m_webServer;
|
||||
return m_serverManager->webServer();
|
||||
}
|
||||
|
||||
/*! Returns a pointer to the \l{WebSocketServer} instance owned by GuhCore.*/
|
||||
WebSocketServer *GuhCore::webSocketServer() const
|
||||
{
|
||||
return m_webSocketServer;
|
||||
return m_serverManager->webSocketServer();
|
||||
}
|
||||
|
||||
/*! Returns a pointer to the \l{ServerManager} instance owned by GuhCore. */
|
||||
@ -395,7 +395,7 @@ QStringList GuhCore::getAvailableLanguages()
|
||||
/*! Returns a pointer to the \l{BluetoothServer} instance owned by GuhCore. */
|
||||
BluetoothServer *GuhCore::bluetoothServer() const
|
||||
{
|
||||
return m_bluetoothServer;
|
||||
return m_serverManager->bluetoothServer();
|
||||
}
|
||||
|
||||
/*! Returns a pointer to the \l{NetworkManager} instance owned by GuhCore. */
|
||||
@ -410,17 +410,15 @@ UserManager *GuhCore::userManager() const
|
||||
}
|
||||
|
||||
#ifdef TESTING_ENABLED
|
||||
MockTcpServer *GuhCore::tcpServer() const
|
||||
{
|
||||
return m_tcpServer;
|
||||
}
|
||||
MockTcpServer
|
||||
#else
|
||||
/*! Returns a pointer to the \l{TcpServer} instance owned by GuhCore. */
|
||||
TcpServer *GuhCore::tcpServer() const
|
||||
{
|
||||
return m_tcpServer;
|
||||
}
|
||||
TcpServer
|
||||
#endif
|
||||
*GuhCore::tcpServer() const
|
||||
{
|
||||
return m_serverManager->tcpServer();
|
||||
}
|
||||
|
||||
/*! Constructs GuhCore with the given \a parent. This is private.
|
||||
Use \l{GuhCore::instance()} to access the single instance.*/
|
||||
@ -443,26 +441,7 @@ GuhCore::GuhCore(QObject *parent) :
|
||||
m_ruleEngine = new RuleEngine(this);
|
||||
|
||||
qCDebug(dcApplication) << "Creating Server Manager";
|
||||
m_serverManager = new ServerManager(this);
|
||||
|
||||
#ifdef TESTING_ENABLED
|
||||
m_tcpServer = new MockTcpServer(this);
|
||||
#else
|
||||
m_tcpServer = new TcpServer(m_configuration->tcpServerAddress(), m_configuration->tcpServerPort(), this);
|
||||
#endif
|
||||
|
||||
m_webSocketServer = new WebSocketServer(m_configuration->webSocketAddress(), m_configuration->webSocketPort(), m_configuration->sslEnabled(), this);
|
||||
|
||||
m_bluetoothServer = new BluetoothServer(this);
|
||||
|
||||
// Register transport interface in the JSON RPC server
|
||||
m_serverManager->jsonServer()->registerTransportInterface(m_tcpServer);
|
||||
m_serverManager->jsonServer()->registerTransportInterface(m_webSocketServer);
|
||||
m_serverManager->jsonServer()->registerTransportInterface(m_bluetoothServer, m_configuration->bluetoothServerEnabled());
|
||||
|
||||
// Webserver setup
|
||||
m_webServer = new WebServer(m_configuration->webServerAddress(), m_configuration->webServerPort(), m_configuration->webServerPublicFolder(), this);
|
||||
m_serverManager->restServer()->registerWebserver(m_webServer);
|
||||
m_serverManager = new ServerManager(m_configuration, this);
|
||||
|
||||
// Create the NetworkManager
|
||||
m_networkManager = new NetworkManager(this);
|
||||
|
||||
@ -33,17 +33,9 @@
|
||||
#include "devicemanager.h"
|
||||
#include "ruleengine.h"
|
||||
#include "servermanager.h"
|
||||
#include "websocketserver.h"
|
||||
#include "bluetoothserver.h"
|
||||
|
||||
#include "time/timemanager.h"
|
||||
|
||||
#ifndef TESTING_ENABLED
|
||||
#include "tcpserver.h"
|
||||
#else
|
||||
#include "mocktcpserver.h"
|
||||
#endif
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class Device;
|
||||
@ -51,6 +43,8 @@ class Device;
|
||||
namespace guhserver {
|
||||
|
||||
class JsonRPCServer;
|
||||
class WebSocketServer;
|
||||
class TcpServer;
|
||||
class LogEngine;
|
||||
class NetworkManager;
|
||||
|
||||
@ -128,15 +122,6 @@ private:
|
||||
NetworkManager *m_networkManager;
|
||||
UserManager *m_userManager;
|
||||
|
||||
#ifdef TESTING_ENABLED
|
||||
MockTcpServer *m_tcpServer;
|
||||
#else
|
||||
TcpServer *m_tcpServer;
|
||||
#endif
|
||||
WebSocketServer *m_webSocketServer;
|
||||
WebServer *m_webServer;
|
||||
BluetoothServer *m_bluetoothServer;
|
||||
|
||||
QHash<ActionId, Action> m_pendingActions;
|
||||
|
||||
private slots:
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
namespace guhserver {
|
||||
|
||||
/*! Constructs a \l{ServerManager} with the given \a parent. */
|
||||
ServerManager::ServerManager(QObject *parent) :
|
||||
ServerManager::ServerManager(GuhConfiguration* configuration, QObject *parent) :
|
||||
QObject(parent),
|
||||
m_sslConfiguration(QSslConfiguration())
|
||||
{
|
||||
@ -56,7 +56,7 @@ ServerManager::ServerManager(QObject *parent) :
|
||||
GuhSettings settings(GuhSettings::SettingsRoleGlobal);
|
||||
qCDebug(dcConnection) << "Loading SSL-configuration from" << settings.fileName();
|
||||
|
||||
settings.beginGroup("SSL-Configuration");
|
||||
settings.beginGroup("SSL");
|
||||
QString certificateFileName = settings.value("certificate", QVariant("/etc/ssl/certs/guhd-certificate.crt")).toString();
|
||||
QString keyFileName = settings.value("certificate-key", QVariant("/etc/ssl/private/guhd-certificate.key")).toString();
|
||||
settings.endGroup();
|
||||
@ -70,9 +70,30 @@ ServerManager::ServerManager(QObject *parent) :
|
||||
}
|
||||
}
|
||||
|
||||
// Interfaces
|
||||
m_jsonServer = new JsonRPCServer(m_sslConfiguration, this);
|
||||
|
||||
m_restServer = new RestServer(m_sslConfiguration, this);
|
||||
|
||||
|
||||
// Transports
|
||||
#ifdef TESTING_ENABLED
|
||||
m_tcpServer = new MockTcpServer(this);
|
||||
#else
|
||||
m_tcpServer = new TcpServer(configuration->tcpServerAddress(), configuration->tcpServerPort(), this);
|
||||
#endif
|
||||
|
||||
m_webSocketServer = new WebSocketServer(configuration->webSocketAddress(), configuration->webSocketPort(), configuration->sslEnabled(), m_sslConfiguration, this);
|
||||
|
||||
m_bluetoothServer = new BluetoothServer(this);
|
||||
|
||||
// Register transport interfaces for the JSON RPC server
|
||||
m_jsonServer->registerTransportInterface(m_tcpServer);
|
||||
m_jsonServer->registerTransportInterface(m_webSocketServer);
|
||||
m_jsonServer->registerTransportInterface(m_bluetoothServer, configuration->bluetoothServerEnabled());
|
||||
|
||||
// Register transport itnerfaces for the Webserver
|
||||
m_webServer = new WebServer(configuration->webServerAddress(), configuration->webServerPort(), configuration->webServerPublicFolder(), this);
|
||||
m_restServer->registerWebserver(m_webServer);
|
||||
}
|
||||
|
||||
/*! Returns the pointer to the created \l{JsonRPCServer} in this \l{ServerManager}. */
|
||||
@ -87,6 +108,31 @@ RestServer *ServerManager::restServer() const
|
||||
return m_restServer;
|
||||
}
|
||||
|
||||
WebServer *ServerManager::webServer() const
|
||||
{
|
||||
return m_webServer;
|
||||
}
|
||||
|
||||
WebSocketServer *ServerManager::webSocketServer() const
|
||||
{
|
||||
return m_webSocketServer;
|
||||
}
|
||||
|
||||
BluetoothServer *ServerManager::bluetoothServer() const
|
||||
{
|
||||
return m_bluetoothServer;
|
||||
}
|
||||
|
||||
#ifdef TESTING_ENABLED
|
||||
MockTcpServer
|
||||
#else
|
||||
TcpServer
|
||||
#endif
|
||||
*ServerManager::tcpServer() const
|
||||
{
|
||||
return m_tcpServer;
|
||||
}
|
||||
|
||||
bool ServerManager::loadCertificate(const QString &certificateKeyFileName, const QString &certificateFileName)
|
||||
{
|
||||
QFile certificateKeyFile(certificateKeyFileName);
|
||||
|
||||
@ -26,6 +26,14 @@
|
||||
#include "loggingcategories.h"
|
||||
#include "jsonrpc/jsonrpcserver.h"
|
||||
#include "rest/restserver.h"
|
||||
#include "websocketserver.h"
|
||||
#include "bluetoothserver.h"
|
||||
|
||||
#ifndef TESTING_ENABLED
|
||||
#include "tcpserver.h"
|
||||
#else
|
||||
#include "mocktcpserver.h"
|
||||
#endif
|
||||
|
||||
class QSslConfiguration;
|
||||
class QSslCertificate;
|
||||
@ -37,15 +45,39 @@ class ServerManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ServerManager(QObject *parent = 0);
|
||||
explicit ServerManager(GuhConfiguration *configuration, QObject *parent = 0);
|
||||
|
||||
// Interfaces
|
||||
JsonRPCServer *jsonServer() const;
|
||||
RestServer *restServer() const;
|
||||
|
||||
// Transports
|
||||
WebServer* webServer() const;
|
||||
WebSocketServer* webSocketServer() const;
|
||||
BluetoothServer* bluetoothServer() const;
|
||||
|
||||
#ifdef TESTING_ENABLED
|
||||
MockTcpServer *tcpServer() const;
|
||||
#else
|
||||
TcpServer *tcpServer() const;
|
||||
#endif
|
||||
|
||||
private:
|
||||
// Interfaces
|
||||
JsonRPCServer *m_jsonServer;
|
||||
RestServer *m_restServer;
|
||||
|
||||
// Transports
|
||||
#ifdef TESTING_ENABLED
|
||||
MockTcpServer *m_tcpServer;
|
||||
#else
|
||||
TcpServer *m_tcpServer;
|
||||
#endif
|
||||
WebSocketServer *m_webSocketServer;
|
||||
WebServer *m_webServer;
|
||||
BluetoothServer *m_bluetoothServer;
|
||||
|
||||
// Encrytption and stuff
|
||||
QSslConfiguration m_sslConfiguration;
|
||||
QSslKey m_certificateKey;
|
||||
QSslCertificate m_certificate;
|
||||
|
||||
@ -60,11 +60,12 @@ namespace guhserver {
|
||||
*
|
||||
* \sa ServerManager
|
||||
*/
|
||||
WebSocketServer::WebSocketServer(const QHostAddress &address, const uint &port, const bool &sslEnabled, QObject *parent) :
|
||||
WebSocketServer::WebSocketServer(const QHostAddress &address, const uint &port, const bool &sslEnabled, const QSslConfiguration &sslConfiguration, QObject *parent) :
|
||||
TransportInterface(parent),
|
||||
m_server(0),
|
||||
m_host(address),
|
||||
m_port(port),
|
||||
m_sslConfiguration(sslConfiguration),
|
||||
m_useSsl(sslEnabled),
|
||||
m_enabled(false)
|
||||
{
|
||||
|
||||
@ -42,7 +42,7 @@ class WebSocketServer : public TransportInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit WebSocketServer(const QHostAddress &address, const uint &port, const bool &sslEnabled, QObject *parent = 0);
|
||||
explicit WebSocketServer(const QHostAddress &address, const uint &port, const bool &sslEnabled, const QSslConfiguration &sslConfiguration, QObject *parent = 0);
|
||||
~WebSocketServer();
|
||||
|
||||
void sendData(const QUuid &clientId, const QByteArray &data) override;
|
||||
|
||||
Reference in New Issue
Block a user