mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 07:18:08 +00:00
Use configured net interface even when it is missing
This commit is contained in:
parent
5d10724044
commit
e3e5da7a71
@ -1551,6 +1551,10 @@ void Session::configureNetworkInterfaces(lt::settings_pack &settingsPack)
|
||||
}
|
||||
else {
|
||||
LogMsg(tr("Could not get GUID of network interface: %1").arg(ip) , Log::WARNING);
|
||||
// Since we can't get the GUID, we'll pass the interface name instead.
|
||||
// Otherwise an empty string will be passed to outgoing_interface which will cause IP leak.
|
||||
endpoints << (ip + portString);
|
||||
outgoingInterfaces << ip;
|
||||
}
|
||||
#else
|
||||
endpoints << (ip + portString);
|
||||
@ -1559,24 +1563,6 @@ void Session::configureNetworkInterfaces(lt::settings_pack &settingsPack)
|
||||
}
|
||||
}
|
||||
|
||||
if (outgoingInterfaces.isEmpty()) {
|
||||
#ifdef Q_OS_WIN
|
||||
// On Vista+ versions and after Qt 5.5 QNetworkInterface::name() returns
|
||||
// the interface's LUID and not the GUID.
|
||||
// Libtorrent expects GUIDs for the 'outgoing_interfaces' setting.
|
||||
const QString netInterface = networkInterface();
|
||||
if (!netInterface.isEmpty()) {
|
||||
const QString guid = convertIfaceNameToGuid(netInterface);
|
||||
if (!guid.isEmpty())
|
||||
outgoingInterfaces << guid;
|
||||
else
|
||||
LogMsg(tr("Could not get GUID of network interface: %1").arg(netInterface) , Log::WARNING);
|
||||
}
|
||||
#else
|
||||
outgoingInterfaces << networkInterface();
|
||||
#endif // Q_OS_WIN
|
||||
}
|
||||
|
||||
const QString finalEndpoints = endpoints.join(',');
|
||||
settingsPack.set_str(lt::settings_pack::listen_interfaces, finalEndpoints.toStdString());
|
||||
LogMsg(tr("Trying to listen on: %1", "e.g: Trying to listen on: 192.168.0.1:6881")
|
||||
@ -2679,7 +2665,11 @@ QStringList Session::getListeningIPs() const
|
||||
|
||||
if (!ifaceAddr.isEmpty() && !allIPv4 && !allIPv6 && configuredAddr.isNull()) {
|
||||
LogMsg(tr("Configured network interface address %1 isn't valid.", "Configured network interface address 124.5.158.1 isn't valid.").arg(ifaceAddr), Log::CRITICAL);
|
||||
IPs.append("127.0.0.1"); // Force listening to localhost and avoid accidental connection that will expose user data.
|
||||
// Pass the invalid user configured interface name/address to libtorrent
|
||||
// in hopes that it will come online later.
|
||||
// This will not cause IP leak but allow user to reconnect the interface
|
||||
// and re-establish connection without restarting the client.
|
||||
IPs.append(ifaceAddr);
|
||||
return IPs;
|
||||
}
|
||||
|
||||
@ -2715,7 +2705,7 @@ QStringList Session::getListeningIPs() const
|
||||
LogMsg(tr("Can't find the configured address '%1' to listen on"
|
||||
, "Can't find the configured address '192.168.1.3' to listen on")
|
||||
.arg(ifaceAddr), Log::CRITICAL);
|
||||
IPs.append("127.0.0.1"); // Force listening to localhost and avoid accidental connection that will expose user data.
|
||||
IPs.append(ifaceAddr);
|
||||
}
|
||||
|
||||
return IPs;
|
||||
@ -2726,7 +2716,7 @@ QStringList Session::getListeningIPs() const
|
||||
if (!networkIFace.isValid()) {
|
||||
qDebug("Invalid network interface: %s", qUtf8Printable(ifaceName));
|
||||
LogMsg(tr("The network interface defined is invalid: %1").arg(ifaceName), Log::CRITICAL);
|
||||
IPs.append("127.0.0.1"); // Force listening to localhost and avoid accidental connection that will expose user data.
|
||||
IPs.append(ifaceName);
|
||||
return IPs;
|
||||
}
|
||||
|
||||
@ -2747,7 +2737,7 @@ QStringList Session::getListeningIPs() const
|
||||
LogMsg(tr("Can't find the configured address '%1' to listen on"
|
||||
, "Can't find the configured address '192.168.1.3' to listen on")
|
||||
.arg(ifaceAddr), Log::CRITICAL);
|
||||
IPs.append("127.0.0.1"); // Force listening to localhost and avoid accidental connection that will expose user data.
|
||||
IPs.append(ifaceAddr);
|
||||
}
|
||||
|
||||
return IPs;
|
||||
|
Loading…
Reference in New Issue
Block a user