diff --git a/libguh-core/servermanager.cpp b/libguh-core/servermanager.cpp index d3105a65..66f7239f 100644 --- a/libguh-core/servermanager.cpp +++ b/libguh-core/servermanager.cpp @@ -218,11 +218,11 @@ void ServerManager::webServerConfigurationChanged(const QString &id) server->stopServer(); server->reconfigureServer(config); } else { - qDebug(dcConnection) << "Received a Web Server config change event but don't have a Web Server instance for it."; + qDebug(dcConnection) << "Received a Web Server config change event but don't have a Web Server instance for it. Creating new WebServer instance on" << config.address.toString() << config.port << "(SSL:" << config.sslEnabled << ")"; server = new WebServer(config, m_sslConfiguration, this); + m_restServer->registerWebserver(server); m_webServers.insert(config.id, server); } - server->startServer(); } void ServerManager::webServerConfigurationRemoved(const QString &id) diff --git a/libguh-core/servermanager.h b/libguh-core/servermanager.h index c0ccf9a6..f7de3bb3 100644 --- a/libguh-core/servermanager.h +++ b/libguh-core/servermanager.h @@ -47,12 +47,8 @@ public: JsonRPCServer *jsonServer() const; RestServer *restServer() const; - // Transports - WebServer* webServer() const; - WebSocketServer* webSocketServer() const; BluetoothServer* bluetoothServer() const; - TcpServer *tcpServer() const; MockTcpServer *mockTcpServer() const; private slots: diff --git a/libguh-core/webserver.cpp b/libguh-core/webserver.cpp index ce6562ff..80542a66 100644 --- a/libguh-core/webserver.cpp +++ b/libguh-core/webserver.cpp @@ -217,7 +217,7 @@ void WebServer::incomingConnection(qintptr socketDescriptor) QSslSocket *socket = new QSslSocket(); if (!socket->setSocketDescriptor(socketDescriptor)) { - qCWarning(dcConnection) << "Could not set socket descriptor. Rejecting connection."; + qCWarning(dcWebServer()) << "Could not set socket descriptor. Rejecting connection."; socket->close(); delete socket; return; @@ -228,7 +228,7 @@ void WebServer::incomingConnection(qintptr socketDescriptor) foreach (WebServerClient *client, m_webServerClients) { if (client->address() == socket->peerAddress()) { if (client->connections().count() >= 50) { - qCWarning(dcConnection) << QString("Maximum connections for this client reached: rejecting connection from client %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort()); + qCWarning(dcWebServer()) << QString("Maximum connections for this client reached: rejecting connection from client %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort()); socket->close(); delete socket; return; @@ -249,7 +249,7 @@ void WebServer::incomingConnection(qintptr socketDescriptor) QUuid clientId = QUuid::createUuid(); m_clientList.insert(clientId, socket); - qCDebug(dcConnection) << QString("Webserver client %1:%2 connected").arg(socket->peerAddress().toString()).arg(socket->peerPort()); + qCDebug(dcWebServer()) << QString("Webserver client %1:%2 connected").arg(socket->peerAddress().toString()).arg(socket->peerPort()); if (m_configuration.sslEnabled) { // configure client connection @@ -448,7 +448,7 @@ void WebServer::onDisconnected() } } - qCDebug(dcConnection) << QString("Webserver client disonnected %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort()); + qCDebug(dcWebServer) << QString("Webserver client disonnected %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort()); // clean up QUuid clientId = m_clientList.key(socket); @@ -462,7 +462,7 @@ void WebServer::onDisconnected() void WebServer::onEncrypted() { QSslSocket* socket = static_cast(sender()); - qCDebug(dcConnection) << QString("Encrypted connection %1:%2 successfully established.").arg(socket->peerAddress().toString()).arg(socket->peerPort()); + qCDebug(dcWebServer()) << QString("Encrypted connection %1:%2 successfully established.").arg(socket->peerAddress().toString()).arg(socket->peerPort()); connect(socket, SIGNAL(readyRead()), this, SLOT(readClient())); connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected())); connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError))); @@ -474,7 +474,7 @@ void WebServer::onError(QAbstractSocket::SocketError error) { Q_UNUSED(error) QSslSocket* socket = static_cast(sender()); - qCWarning(dcConnection) << QString("Client socket error %1:%2 ->").arg(socket->peerAddress().toString()).arg(socket->peerPort()) << socket->errorString(); + qCWarning(dcWebServer()) << QString("Client socket error %1:%2 ->").arg(socket->peerAddress().toString()).arg(socket->peerPort()) << socket->errorString(); } void WebServer::onAvahiServiceStateChanged(const QtAvahiService::QtAvahiServiceState &state) @@ -504,15 +504,15 @@ void WebServer::reconfigureServer(const WebServerConfiguration &config) bool WebServer::startServer() { if (!listen(m_configuration.address, m_configuration.port)) { - qCWarning(dcConnection) << "Webserver could not listen on" << m_configuration.address.toString() << m_configuration.port; + qCWarning(dcWebServer()) << "Webserver could not listen on" << m_configuration.address.toString() << m_configuration.port << errorString(); m_enabled = false; return false; } if (m_configuration.sslEnabled) { - qCDebug(dcConnection) << "Started webserver on" << QString("https://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port); + qCDebug(dcWebServer()) << "Started webserver on" << QString("https://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port); } else { - qCDebug(dcConnection) << "Started webserver on" << QString("http://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port); + qCDebug(dcWebServer()) << "Started webserver on" << QString("http://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port); } // Note: reversed order @@ -539,7 +539,7 @@ bool WebServer::stopServer() close(); m_enabled = false; - qCDebug(dcConnection) << "Webserver closed."; + qCDebug(dcWebServer()) << "Webserver closed."; return true; } diff --git a/tests/auto/guhtestbase.cpp b/tests/auto/guhtestbase.cpp index 257f37e3..e1d8ec54 100644 --- a/tests/auto/guhtestbase.cpp +++ b/tests/auto/guhtestbase.cpp @@ -128,6 +128,7 @@ GuhTestBase::GuhTestBase(QObject *parent) : void GuhTestBase::initTestCase() { + qDebug() << "GuhTestBase starting."; // If testcase asserts cleanup won't do. Lets clear any previous test run settings leftovers GuhSettings rulesSettings(GuhSettings::SettingsRoleRules); rulesSettings.clear(); @@ -143,7 +144,7 @@ void GuhTestBase::initTestCase() s_loggingFilters.insert("DeviceManager", true); s_loggingFilters.insert("RuleEngine", true); s_loggingFilters.insert("Hardware", false); - s_loggingFilters.insert("Connection", false); + s_loggingFilters.insert("Connection", true); s_loggingFilters.insert("LogEngine", false); s_loggingFilters.insert("TcpServer", false); s_loggingFilters.insert("WebServer", false); diff --git a/tests/auto/webserver/testwebserver.cpp b/tests/auto/webserver/testwebserver.cpp index ec768a1d..215895d7 100644 --- a/tests/auto/webserver/testwebserver.cpp +++ b/tests/auto/webserver/testwebserver.cpp @@ -43,6 +43,8 @@ class TestWebserver: public GuhTestBase Q_OBJECT private slots: + void initTestCase(); + void coverageCalls(); void httpVersion(); @@ -74,6 +76,26 @@ public slots: } }; +void TestWebserver::initTestCase() +{ + GuhTestBase::initTestCase(); + qDebug() << "TestWebserver starting"; + + foreach (const WebServerConfiguration &config, GuhCore::instance()->configuration()->webServerConfigurations()) { + if (config.port == 3333 && (config.address == QHostAddress("127.0.0.1") || config.address == QHostAddress("0.0.0.0"))) { + qDebug() << "Already have a webserver listening on 127.0.0.1:3333"; + return; + } + } + + qDebug() << "Creating new webserver instance on 127.0.0.1:3333"; + WebServerConfiguration config; + config.address = QHostAddress("0.0.0.0"); + config.port = 3333; + config.sslEnabled = true; + GuhCore::instance()->configuration()->setWebServerConfiguration(config); +} + void TestWebserver::coverageCalls() { HttpReply *reply = new HttpReply(this); @@ -91,7 +113,7 @@ void TestWebserver::httpVersion() socket->connectToHostEncrypted("127.0.0.1", 3333); QSignalSpy encryptedSpy(socket, SIGNAL(encrypted())); bool encrypted = encryptedSpy.wait(); - QVERIFY2(encrypted, "could not created encrypte webserver connection."); + QVERIFY2(encrypted, "could not created encrypted webserver connection."); QSignalSpy clientSpy(socket, SIGNAL(readyRead())); @@ -335,6 +357,7 @@ void TestWebserver::getOptions() QNetworkReply *reply = nam.sendCustomRequest(request, "OPTIONS"); clientSpy.wait(); + qDebug() << "reply:" << reply->isFinished(); QCOMPARE(clientSpy.count(), 1); bool ok = false;