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('--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', 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_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',
|
self.parser.add_argument('--use_openssl', help='Use OpenSSL liblary for speedup',
|
||||||
type='bool', choices=[True, False], default=use_openssl)
|
type='bool', choices=[True, False], default=use_openssl)
|
||||||
self.parser.add_argument('--disable_db', help='Disable database updating', action='store_true')
|
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)
|
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:
|
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")
|
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:
|
||||||
self.sock = self.server.tor_manager.createSocket(self.ip, self.port)
|
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:
|
else:
|
||||||
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
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)
|
handler = sockshandler.SocksiPyHandler(socks.SOCKS5, tor_manager.proxy_ip, tor_manager.proxy_port)
|
||||||
opener = urllib2.build_opener(handler)
|
opener = urllib2.build_opener(handler)
|
||||||
return opener.open(url, timeout=50)
|
return opener.open(url, timeout=50)
|
||||||
else:
|
elif config.trackers_proxy == "disable":
|
||||||
return urllib2.urlopen(url, timeout=25)
|
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):
|
def announceTrackerHttp(self, tracker_address, mode="start", num_want=10):
|
||||||
if "ip4" in self.getOpenedServiceTypes():
|
if "ip4" in self.getOpenedServiceTypes():
|
||||||
|
|
Loading…
Reference in a new issue