diff --git a/libnymea-remoteproxy/engine.cpp b/libnymea-remoteproxy/engine.cpp index 6c2b733..a8a5249 100644 --- a/libnymea-remoteproxy/engine.cpp +++ b/libnymea-remoteproxy/engine.cpp @@ -77,7 +77,7 @@ void Engine::start(ProxyConfiguration *configuration) m_proxyServer = new ProxyServer(this); m_webSocketServerProxy = new WebSocketServer(m_configuration->sslEnabled(), m_configuration->sslConfiguration(), this); m_tcpSocketServerProxy = new TcpSocketServer(m_configuration->sslEnabled(), m_configuration->sslConfiguration(), this); - m_unixSocketServerProxy = new UnixSocketServer(m_configuration->localSocketFileName(), this); + m_unixSocketServerProxy = new UnixSocketServer(m_configuration->unixSocketFileName(), this); // Configure websocket server QUrl websocketServerUrl; diff --git a/libnymea-remoteproxy/proxyconfiguration.cpp b/libnymea-remoteproxy/proxyconfiguration.cpp index 75fe283..96b576b 100644 --- a/libnymea-remoteproxy/proxyconfiguration.cpp +++ b/libnymea-remoteproxy/proxyconfiguration.cpp @@ -87,8 +87,8 @@ bool ProxyConfiguration::loadConfiguration(const QString &fileName) setTcpServerPort(static_cast(settings.value("port", 1213).toInt())); settings.endGroup(); - settings.beginGroup("LocalSocketServer"); - setTcpServerHost(QHostAddress(settings.value("localSocketFileName", "/run/nymea-remoteproxy.socket").toString())); + settings.beginGroup("UnixSocketServer"); + setUnixSocketFileName(settings.value("unixSocketFileName", "/run/nymea-remoteproxy.socket").toString()); settings.endGroup(); settings.beginGroup("WebSocketServerTunnelProxy"); @@ -356,9 +356,14 @@ void ProxyConfiguration::setTcpServerPort(quint16 port) m_tcpServerPort = port; } -QString ProxyConfiguration::localSocketFileName() const +QString ProxyConfiguration::unixSocketFileName() const { - return m_localSocketFileName; + return m_unixSocketFileName; +} + +void ProxyConfiguration::setUnixSocketFileName(const QString &unixSocketFileName) +{ + m_unixSocketFileName = unixSocketFileName; } QHostAddress ProxyConfiguration::webSocketServerTunnelProxyHost() const @@ -445,8 +450,8 @@ QDebug operator<<(QDebug debug, ProxyConfiguration *configuration) debug.nospace() << "TcpServer Proxy" << endl; debug.nospace() << " - Host:" << configuration->tcpServerHost().toString() << endl; debug.nospace() << " - Port:" << configuration->tcpServerPort() << endl; - debug.nospace() << "LocalSocket Proxy" << endl; - debug.nospace() << " - Socket file:" << configuration->localSocketFileName() << endl; + debug.nospace() << "UnixSocketServer Proxy" << endl; + debug.nospace() << " - Filename:" << configuration->unixSocketFileName() << endl; debug.nospace() << "WebSocketServer TunnelProxy" << endl; debug.nospace() << " - Host:" << configuration->webSocketServerTunnelProxyHost().toString() << endl; debug.nospace() << " - Port:" << configuration->webSocketServerTunnelProxyPort() << endl; diff --git a/libnymea-remoteproxy/proxyconfiguration.h b/libnymea-remoteproxy/proxyconfiguration.h index ecdb5aa..0f8fef5 100644 --- a/libnymea-remoteproxy/proxyconfiguration.h +++ b/libnymea-remoteproxy/proxyconfiguration.h @@ -113,8 +113,9 @@ public: quint16 tcpServerPort() const; void setTcpServerPort(quint16 port); - // LocalServer - QString localSocketFileName() const; + // UnixSocketServer + QString unixSocketFileName() const; + void setUnixSocketFileName(const QString &unixSocketFileName); // WebSocketServer (tunnel) QHostAddress webSocketServerTunnelProxyHost() const; @@ -164,8 +165,8 @@ private: QHostAddress m_tcpServerHost = QHostAddress::LocalHost; quint16 m_tcpServerPort = 1213; - // LocalSocketServer (proxy) - QString m_localSocketFileName = "/run/nymea-remoteproxy.socket"; + // UnixSocketServer (proxy) + QString m_unixSocketFileName = "/run/nymea-remoteproxy.socket"; // WebSocketServer (tunnel) QHostAddress m_webSocketServerTunnelProxyHost = QHostAddress::LocalHost; diff --git a/libnymea-remoteproxy/server/unixsocketserver.cpp b/libnymea-remoteproxy/server/unixsocketserver.cpp index 12bb63b..588523f 100644 --- a/libnymea-remoteproxy/server/unixsocketserver.cpp +++ b/libnymea-remoteproxy/server/unixsocketserver.cpp @@ -37,7 +37,7 @@ UnixSocketServer::UnixSocketServer(QString socketFileName, QObject *parent) : TransportInterface(parent), m_socketFileName(socketFileName) { - m_serverName = "LOCAL"; + m_serverName = "unix"; } UnixSocketServer::~UnixSocketServer() @@ -94,14 +94,14 @@ bool UnixSocketServer::startServer() m_server = new QLocalServer(this); m_server->setSocketOptions(QLocalServer::UserAccessOption | QLocalServer::GroupAccessOption | QLocalServer::OtherAccessOption); if (!m_server->listen(m_socketFileName)) { - qCWarning(dcUnixSocketServer()) << "Could not start local server for monitor on" << m_serverName << m_server->errorString(); + qCWarning(dcUnixSocketServer()) << "Could not start local server for monitor on" << m_socketFileName << m_server->errorString(); delete m_server; m_server = nullptr; return false; } connect(m_server, &QLocalServer::newConnection, this, &UnixSocketServer::onClientConnected); - qCDebug(dcUnixSocketServer()) << "Started successfully on" << m_serverName; + qCDebug(dcUnixSocketServer()) << "Started successfully on" << m_serverName << m_socketFileName; return true; } @@ -110,7 +110,7 @@ bool UnixSocketServer::stopServer() if (!m_server) return true; - qCDebug(dcUnixSocketServer()) << "Stopping server" << m_serverName; + qCDebug(dcUnixSocketServer()) << "Stopping server" << m_socketFileName; foreach (QLocalSocket *clientConnection, m_clientList) { clientConnection->close(); } diff --git a/nymea-remoteproxy.conf b/nymea-remoteproxy.conf index ef55074..8997929 100644 --- a/nymea-remoteproxy.conf +++ b/nymea-remoteproxy.conf @@ -28,8 +28,8 @@ port=443 host=127.0.0.1 port=80 -[LocalSocketServer] -localSocketFileName=/run/nymea-remoteproxy.socket +[UnixSocketServer] +unixSocketFileName=/run/nymea-remoteproxy.socket [WebSocketServerTunnelProxy] host=127.0.0.1 diff --git a/server/main.cpp b/server/main.cpp index 3da0a76..a7d863e 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -175,6 +175,18 @@ int main(int argc, char *argv[]) } } + // Verify webserver configuration + if (configuration->webSocketServerProxyHost().isNull()) { + qCCritical(dcApplication()) << "Invalid web socket host address passed."; + exit(-1); + } + + // Verify tcp server configuration + if (configuration->tcpServerHost().isNull()) { + qCCritical(dcApplication()) << "Invalid TCP server host address passed."; + exit(-1); + } + // Verify SSL configuration if (configuration->sslEnabled() && configuration->sslConfiguration().isNull()) { qCCritical(dcApplication()) << "SSL is enabled but no SSL configuration specified."; diff --git a/tests/resources/test-configuration-chain.conf b/tests/resources/test-configuration-chain.conf index d8ad836..e6406dd 100644 --- a/tests/resources/test-configuration-chain.conf +++ b/tests/resources/test-configuration-chain.conf @@ -17,6 +17,9 @@ port=1212 host=127.0.0.1 port=1213 +[UnixSocketServer] +unixSocketFileName=/tmp/nymea-remoteproxy.socket + [WebSocketServerTunnelProxy] host=127.0.0.1 port=2212 diff --git a/tests/resources/test-configuration-faulty-certificate.conf b/tests/resources/test-configuration-faulty-certificate.conf index 8a9b12e..e58af46 100644 --- a/tests/resources/test-configuration-faulty-certificate.conf +++ b/tests/resources/test-configuration-faulty-certificate.conf @@ -17,6 +17,9 @@ port=1212 host=127.0.0.1 port=1213 +[UnixSocketServer] +unixSocketFileName=/tmp/nymea-remoteproxy.socket + [WebSocketServerTunnelProxy] host=127.0.0.1 port=2212 diff --git a/tests/resources/test-configuration-faulty-chain.conf b/tests/resources/test-configuration-faulty-chain.conf index 631254f..c71da10 100644 --- a/tests/resources/test-configuration-faulty-chain.conf +++ b/tests/resources/test-configuration-faulty-chain.conf @@ -17,6 +17,9 @@ port=1212 host=127.0.0.1 port=1213 +[UnixSocketServer] +unixSocketFileName=/tmp/nymea-remoteproxy.socket + [WebSocketServerTunnelProxy] host=127.0.0.1 port=2212 diff --git a/tests/resources/test-configuration-faulty-key.conf b/tests/resources/test-configuration-faulty-key.conf index 6017251..5fca17e 100644 --- a/tests/resources/test-configuration-faulty-key.conf +++ b/tests/resources/test-configuration-faulty-key.conf @@ -17,6 +17,9 @@ port=1212 host=127.0.0.1 port=1213 +[UnixSocketServer] +unixSocketFileName=/tmp/nymea-remoteproxy.socket + [WebSocketServerTunnelProxy] host=127.0.0.1 port=2212 diff --git a/tests/resources/test-configuration.conf b/tests/resources/test-configuration.conf index 012ae62..437604f 100644 --- a/tests/resources/test-configuration.conf +++ b/tests/resources/test-configuration.conf @@ -21,6 +21,9 @@ port=1212 host=127.0.0.1 port=1213 +[UnixSocketServer] +unixSocketFileName=/tmp/nymea-remoteproxy.socket + [WebSocketServerTunnelProxy] host=127.0.0.1 port=2212 diff --git a/tests/test-proxy/remoteproxytestsproxy.cpp b/tests/test-proxy/remoteproxytestsproxy.cpp index d510499..b57fa31 100644 --- a/tests/test-proxy/remoteproxytestsproxy.cpp +++ b/tests/test-proxy/remoteproxytestsproxy.cpp @@ -83,6 +83,7 @@ void RemoteProxyTestsProxy::dummyAuthenticator() // Make sure the server is running QVERIFY(Engine::instance()->running()); QVERIFY(Engine::instance()->webSocketServerProxy()->running()); + QVERIFY(Engine::instance()->unixSocketServerProxy()->running()); QVERIFY(Engine::instance()->proxyServer()->running()); // Create request