Make the identd listen on all adresses
[quassel.git] / src / core / identserver.cpp
index 8a52520..c1cb5d0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2018 by the Quassel Project                        *
+ *   Copyright (C) 2005-2019 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include "identserver.h"
+
 #include <limits>
 
 #include "corenetwork.h"
-#include "identserver.h"
-#include "logmessage.h"
 
-IdentServer::IdentServer(QObject *parent)
+IdentServer::IdentServer(QObjectparent)
     : QObject(parent)
 {
-    connect(&_server, SIGNAL(newConnection()), this, SLOT(incomingConnection()));
-    connect(&_v6server, SIGNAL(newConnection()), this, SLOT(incomingConnection()));
+    connect(&_server, &QTcpServer::newConnection, this, &IdentServer::incomingConnection);
+    connect(&_v6server, &QTcpServer::newConnection, this, &IdentServer::incomingConnection);
 }
 
-
 bool IdentServer::startListening()
 {
     uint16_t port = Quassel::optionValue("ident-port").toUShort();
 
     bool success = false;
-    if (_v6server.listen(QHostAddress("::1"), port)) {
-        quInfo() << qPrintable(
-                tr("Listening for identd clients on IPv6 %1 port %2")
-                        .arg("::1")
-                        .arg(_v6server.serverPort())
-        );
+    if (_v6server.listen(QHostAddress("::"), port)) {
+        qInfo() << qPrintable(tr("Listening for identd clients on IPv6 %1 port %2").arg("::").arg(_v6server.serverPort()));
 
         success = true;
     }
 
-    if (_server.listen(QHostAddress("127.0.0.1"), port)) {
-        quInfo() << qPrintable(
-                tr("Listening for identd clients on IPv4 %1 port %2")
-                        .arg("127.0.0.1")
-                        .arg(_server.serverPort())
-        );
+    if (_server.listen(QHostAddress("0.0.0.1"), port)) {
+        qInfo() << qPrintable(tr("Listening for identd clients on IPv4 %1 port %2").arg("0.0.0.1").arg(_server.serverPort()));
 
         success = true;
     }
 
     if (!success) {
-        quError() << qPrintable(tr("Identd could not open any network interfaces to listen on! No identd functionality will be available"));
+        qWarning() << qPrintable(tr("Identd could not open any network interfaces to listen on! No identd functionality will be available"));
     }
 
     return success;
 }
 
-
-void IdentServer::stopListening(const QString &msg)
+void IdentServer::stopListening(const QString& msg)
 {
     bool wasListening = false;
 
@@ -80,28 +70,26 @@ void IdentServer::stopListening(const QString &msg)
 
     if (wasListening) {
         if (msg.isEmpty())
-            quInfo() << "No longer listening for identd clients.";
+            qInfo() << "No longer listening for identd clients.";
         else
-            quInfo() << qPrintable(msg);
+            qInfo() << qPrintable(msg);
     }
 }
 
-
 void IdentServer::incomingConnection()
 {
-    auto server = qobject_cast<QTcpServer *>(sender());
+    auto server = qobject_cast<QTcpServer*>(sender());
     Q_ASSERT(server);
     while (server->hasPendingConnections()) {
-        QTcpSocket *socket = server->nextPendingConnection();
-        connect(socket, SIGNAL(readyRead()), this, SLOT(respond()));
-        connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
+        QTcpSocketsocket = server->nextPendingConnection();
+        connect(socket, &QIODevice::readyRead, this, &IdentServer::respond);
+        connect(socket, &QAbstractSocket::disconnected, socket, &QObject::deleteLater);
     }
 }
 
-
 void IdentServer::respond()
 {
-    auto *socket = qobject_cast<QTcpSocket *>(sender());
+    auto* socket = qobject_cast<QTcpSocket*>(sender());
     Q_ASSERT(socket);
 
     qint64 transactionId = _socketId;
@@ -140,8 +128,7 @@ void IdentServer::respond()
     }
 }
 
-
-void Request::respondSuccess(const QString &user)
+void Request::respondSuccess(const QString& user)
 {
     if (socket) {
         QString data = query + " : USERID : Quassel : " + user + "\r\n";
@@ -151,8 +138,7 @@ void Request::respondSuccess(const QString &user)
     }
 }
 
-
-void Request::respondError(const QString &error)
+void Request::respondError(const QString& error)
 {
     if (socket) {
         QString data = query + " : ERROR : " + error + "\r\n";
@@ -162,7 +148,6 @@ void Request::respondError(const QString &error)
     }
 }
 
-
 bool IdentServer::responseAvailable(Request request) const
 {
     if (!_connections.contains(request.localPort)) {
@@ -173,22 +158,29 @@ bool IdentServer::responseAvailable(Request request) const
     return true;
 }
 
-
-void IdentServer::addSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort,
-                            const QHostAddress &peerAddress, quint16 peerPort, qint64 socketId)
+void IdentServer::addSocket(const CoreIdentity* identity,
+                            const QHostAddress& localAddress,
+                            quint16 localPort,
+                            const QHostAddress& peerAddress,
+                            quint16 peerPort,
+                            qint64 socketId)
 {
     Q_UNUSED(localAddress)
     Q_UNUSED(peerAddress)
     Q_UNUSED(peerPort)
 
-    const CoreNetwork *network = qobject_cast<CoreNetwork *>(sender());
-    _connections[localPort] = network->coreSession()->strictCompliantIdent(identity);;
+    const CoreNetwork* network = qobject_cast<CoreNetwork*>(sender());
+    _connections[localPort] = network->coreSession()->strictCompliantIdent(identity);
+    ;
     processWaiting(socketId);
 }
 
-
-void IdentServer::removeSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort,
-                               const QHostAddress &peerAddress, quint16 peerPort, qint64 socketId)
+void IdentServer::removeSocket(const CoreIdentity* identity,
+                               const QHostAddress& localAddress,
+                               quint16 localPort,
+                               const QHostAddress& peerAddress,
+                               quint16 peerPort,
+                               qint64 socketId)
 {
     Q_UNUSED(identity)
     Q_UNUSED(localAddress)
@@ -199,7 +191,6 @@ void IdentServer::removeSocket(const CoreIdentity *identity, const QHostAddress
     processWaiting(socketId);
 }
 
-
 qint64 IdentServer::addWaitingSocket()
 {
     qint64 newSocketId = _socketId++;
@@ -207,7 +198,6 @@ qint64 IdentServer::addWaitingSocket()
     return newSocketId;
 }
 
-
 qint64 IdentServer::lowestSocketId() const
 {
     if (_waiting.empty()) {
@@ -217,13 +207,11 @@ qint64 IdentServer::lowestSocketId() const
     return _waiting.front();
 }
 
-
 void IdentServer::removeWaitingSocket(qint64 socketId)
 {
     _waiting.remove(socketId);
 }
 
-
 void IdentServer::processWaiting(qint64 socketId)
 {
     removeWaitingSocket(socketId);
@@ -242,8 +230,7 @@ void IdentServer::processWaiting(qint64 socketId)
     });
 }
 
-
-bool operator==(const Request &a, const Request &b)
+bool operator==(const Request& a, const Request& b)
 {
     return a.requestId == b.requestId;
 }