Add option to bind directly to an IP instead of using a network Interface

This commit is contained in:
Sjoerd van der Berg
2016-04-09 09:19:22 -07:00
parent 43d52026b7
commit e2f43b3383
5 changed files with 45 additions and 12 deletions

View File

@@ -633,7 +633,7 @@ void Session::setSessionSettings()
// Include overhead in transfer limits
sessionSettings.rate_limit_ip_overhead = pref->includeOverheadInLimits();
// IP address to announce to trackers
sessionSettings.announce_ip = Utils::String::toStdString(pref->getNetworkAddress());
sessionSettings.announce_ip = Utils::String::toStdString(pref->getAnnounceAddress());
// Super seeding
sessionSettings.strict_super_seeding = pref->isSuperSeedingEnabled();
// * Max Half-open connections
@@ -1658,6 +1658,13 @@ const QStringList Session::getListeningIPs()
Logger* const logger = Logger::instance();
QStringList IPs;
//Take the override addresss
const QString networkAddr = pref->getNetworkAddress();
if ( !networkAddr.isEmpty()) {
IPs.append( networkAddr);
return IPs;
}
const QString ifaceName = pref->getNetworkInterface();
const bool listenIPv6 = pref->getListenIPv6();

View File

@@ -1349,6 +1349,16 @@ QString Preferences::getNetworkInterfaceName() const
return value("Preferences/Connection/InterfaceName").toString();
}
void Preferences::setNetworkAddress(const QString& iface)
{
setValue("Preferences/Connection/InterfaceAddress", iface);
}
QString Preferences::getNetworkAddress() const
{
return value("Preferences/Connection/InterfaceAddress").toString();
}
void Preferences::setNetworkInterfaceName(const QString& iface)
{
setValue("Preferences/Connection/InterfaceName", iface);
@@ -1364,14 +1374,14 @@ void Preferences::setListenIPv6(bool enable)
setValue("Preferences/Connection/InterfaceListenIPv6", enable);
}
QString Preferences::getNetworkAddress() const
QString Preferences::getAnnounceAddress() const
{
return value("Preferences/Connection/InetAddress").toString();
return value("Preferences/Connection/AnnounceAddress").toString();
}
void Preferences::setNetworkAddress(const QString& addr)
void Preferences::setAnnounceAddress(const QString& addr)
{
setValue("Preferences/Connection/InetAddress", addr);
setValue("Preferences/Connection/AnnounceAddress", addr);
}
bool Preferences::isAnonymousModeEnabled() const

View File

@@ -363,12 +363,14 @@ public:
void setMaxHalfOpenConnections(int value);
QString getNetworkInterface() const;
void setNetworkInterface(const QString& iface);
QString getNetworkAddress() const;
void setNetworkAddress(const QString& iface);
QString getNetworkInterfaceName() const;
void setNetworkInterfaceName(const QString& iface);
bool getListenIPv6() const;
void setListenIPv6(bool enable);
QString getNetworkAddress() const;
void setNetworkAddress(const QString& addr);
QString getAnnounceAddress() const;
void setAnnounceAddress(const QString& addr);
bool isAnonymousModeEnabled() const;
void enableAnonymousMode(bool enabled);
bool isSuperSeedingEnabled() const;