From e9b242ab05e0baa9eba2a4807cf0ff9ec9bc9204 Mon Sep 17 00:00:00 2001 From: "craig.p.drummond" Date: Mon, 29 Sep 2014 16:08:57 +0000 Subject: [PATCH] Better display of interface details. --- http/httpserversettings.cpp | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/http/httpserversettings.cpp b/http/httpserversettings.cpp index 7e9e32a21..0ff324c99 100644 --- a/http/httpserversettings.cpp +++ b/http/httpserversettings.cpp @@ -36,15 +36,38 @@ static int isIfaceType(const QNetworkInterface &iface, const QString &prefix) static QString details(const QNetworkInterface &iface) { QString d=iface.humanReadableName(); - if (!iface.addressEntries().isEmpty()) { - d+=QLatin1String(" - ")+iface.addressEntries().first().ip().toString(); + QList addresses=iface.addressEntries(); + if (!addresses.isEmpty()) { + QString ipV4, ipV6; + foreach (const QNetworkAddressEntry &addr, addresses) { + QString ip=addr.ip().toString(); + if (ip.isEmpty()) { + continue; + } + if (ip.endsWith(QLatin1Char('%')+d)) { + ip=ip.left(ip.length()-(d.length()+1)); + } + if (QAbstractSocket::IPv4Protocol==addr.ip().protocol()) { + ipV4=ip; + } else if (QAbstractSocket::IPv6Protocol==addr.ip().protocol()) { + ipV6=ip; + } + } + + QString ipAddr; + if (!ipV4.isEmpty()) { + ipAddr=ipV4; + } else if (!ipV6.isEmpty()) { + ipAddr=ipV6; + } + d+=QLatin1String(" - ")+ipAddr; } return d; } static QString displayName(const QNetworkInterface &iface) { - if (iface.name()=="lo") { + if (isIfaceType(iface , "lo")) { return i18n("Local loopback (%1)", details(iface)); } if (isIfaceType(iface, "eth")) {