Support custom proxy for tracker connections
This commit is contained in:
parent
ec8b53263c
commit
7475fa69fa
3 changed files with 15 additions and 4 deletions
|
@ -234,7 +234,7 @@ class Config(object):
|
|||
self.parser.add_argument('--ip_external', help='Set reported external ip (tested on start if None)', metavar='ip')
|
||||
self.parser.add_argument('--trackers', help='Bootstraping torrent trackers', default=trackers, metavar='protocol://address', nargs='*')
|
||||
self.parser.add_argument('--trackers_file', help='Load torrent trackers dynamically from a file', default=False, metavar='path')
|
||||
self.parser.add_argument('--trackers_proxy', help='Force use proxy to connect to trackers', default="disable", choices=["disable", "tor"])
|
||||
self.parser.add_argument('--trackers_proxy', help='Force use proxy to connect to trackers (disable, tor, ip:port)', default="disable")
|
||||
self.parser.add_argument('--use_openssl', help='Use OpenSSL liblary for speedup',
|
||||
type='bool', choices=[True, False], default=use_openssl)
|
||||
self.parser.add_argument('--disable_db', help='Disable database updating', action='store_true')
|
||||
|
|
|
@ -112,8 +112,14 @@ class Connection(object):
|
|||
self.sock = self.server.tor_manager.createSocket(self.ip, self.port)
|
||||
elif config.tor == "always" and helper.isPrivateIp(self.ip) and self.ip not in config.ip_local:
|
||||
raise Exception("Can't connect to local IPs in Tor: always mode")
|
||||
elif config.trackers_proxy == "tor" and self.cert_pin and "zero://%s#%s:%s" % (self.ip, self.cert_pin, self.port) in config.trackers:
|
||||
elif config.trackers_proxy != "disable" and self.cert_pin and "zero://%s#%s:%s" % (self.ip, self.cert_pin, self.port) in config.trackers:
|
||||
if config.trackers_proxy == "tor":
|
||||
self.sock = self.server.tor_manager.createSocket(self.ip, self.port)
|
||||
else:
|
||||
from lib.PySocks import socks
|
||||
self.sock = socks.socksocket()
|
||||
proxy_ip, proxy_port = config.trackers_proxy.split(":")
|
||||
self.sock.set_proxy(socks.PROXY_TYPE_SOCKS5, proxy_ip, int(proxy_port))
|
||||
else:
|
||||
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
|
|
|
@ -241,8 +241,13 @@ class SiteAnnouncer(object):
|
|||
handler = sockshandler.SocksiPyHandler(socks.SOCKS5, tor_manager.proxy_ip, tor_manager.proxy_port)
|
||||
opener = urllib2.build_opener(handler)
|
||||
return opener.open(url, timeout=50)
|
||||
else:
|
||||
elif config.trackers_proxy == "disable":
|
||||
return urllib2.urlopen(url, timeout=25)
|
||||
else:
|
||||
proxy_ip, proxy_port = config.trackers_proxy.split(":")
|
||||
handler = sockshandler.SocksiPyHandler(socks.SOCKS5, proxy_ip, int(proxy_port))
|
||||
opener = urllib2.build_opener(handler)
|
||||
return opener.open(url, timeout=50)
|
||||
|
||||
def announceTrackerHttp(self, tracker_address, mode="start", num_want=10):
|
||||
if "ip4" in self.getOpenedServiceTypes():
|
||||
|
|
Loading…
Reference in a new issue