Py3 support in announce requests

This commit is contained in:
shortcutme 2019-03-16 00:33:12 +01:00
parent 16f29b65f2
commit 627edeb0f2
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -190,7 +190,7 @@ class SiteAnnouncer(object):
s = time.time() s = time.time()
address_parts = self.getAddressParts(tracker) address_parts = self.getAddressParts(tracker)
if not address_parts: if not address_parts:
self.site.log.warning("Tracker %s error: Invalid address" % tracker.decode("utf8", "ignore")) self.site.log.warning("Tracker %s error: Invalid address" % tracker)
return False return False
if tracker not in self.stats: if tracker not in self.stats:
@ -214,8 +214,8 @@ class SiteAnnouncer(object):
peers = handler(address_parts["address"], mode=mode, num_want=num_want) peers = handler(address_parts["address"], mode=mode, num_want=num_want)
else: else:
raise AnnounceError("Unknown protocol: %s" % address_parts["protocol"]) raise AnnounceError("Unknown protocol: %s" % address_parts["protocol"])
except Exception, err: except Exception as err:
self.site.log.warning("Tracker %s announce failed: %s in mode %s" % (tracker, str(err).decode("utf8", "ignore"), mode)) self.site.log.warning("Tracker %s announce failed: %s in mode %s" % (tracker, Debug.formatException(err), mode))
error = err error = err
if error: if error:
@ -282,7 +282,7 @@ class SiteAnnouncer(object):
tracker.connect() tracker.connect()
if not tracker.poll_once(): if not tracker.poll_once():
raise AnnounceError("Could not connect") raise AnnounceError("Could not connect")
tracker.announce(info_hash=hashlib.sha1(self.site.address).hexdigest(), num_want=num_want, left=431102370) tracker.announce(info_hash=self.site.address_sha1, num_want=num_want, left=431102370)
back = tracker.poll_once() back = tracker.poll_once()
if not back: if not back:
raise AnnounceError("No response after %.0fs" % (time.time() - s)) raise AnnounceError("No response after %.0fs" % (time.time() - s))
@ -303,19 +303,19 @@ class SiteAnnouncer(object):
'Connection': 'keep-alive' 'Connection': 'keep-alive'
} }
req = urllib2.Request(url, headers=headers) req = urllib.request.Request(url, headers=headers)
if config.trackers_proxy == "tor": if config.trackers_proxy == "tor":
tor_manager = self.site.connection_server.tor_manager tor_manager = self.site.connection_server.tor_manager
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 = urllib.request.build_opener(handler)
return opener.open(req, timeout=50) return opener.open(req, timeout=50)
elif config.trackers_proxy == "disable": elif config.trackers_proxy == "disable":
return urllib2.urlopen(req, timeout=25) return urllib.request.urlopen(req, timeout=25)
else: else:
proxy_ip, proxy_port = config.trackers_proxy.split(":") proxy_ip, proxy_port = config.trackers_proxy.split(":")
handler = sockshandler.SocksiPyHandler(socks.SOCKS5, proxy_ip, int(proxy_port)) handler = sockshandler.SocksiPyHandler(socks.SOCKS5, proxy_ip, int(proxy_port))
opener = urllib2.build_opener(handler) opener = urllib.request.build_opener(handler)
return opener.open(req, timeout=50) return opener.open(req, timeout=50)
def announceTrackerHttps(self, *args, **kwargs): def announceTrackerHttps(self, *args, **kwargs):
@ -329,7 +329,7 @@ class SiteAnnouncer(object):
else: else:
port = 1 port = 1
params = { params = {
'info_hash': hashlib.sha1(self.site.address).digest(), 'info_hash': self.site.address_sha1,
'peer_id': self.peer_id, 'port': port, 'peer_id': self.peer_id, 'port': port,
'uploaded': 0, 'downloaded': 0, 'left': 431102370, 'compact': 1, 'numwant': num_want, 'uploaded': 0, 'downloaded': 0, 'left': 431102370, 'compact': 1, 'numwant': num_want,
'event': 'started' 'event': 'started'
@ -348,7 +348,6 @@ class SiteAnnouncer(object):
with gevent.Timeout(timeout, False): # Make sure of timeout with gevent.Timeout(timeout, False): # Make sure of timeout
req = self.httpRequest(url) req = self.httpRequest(url)
response = req.read() response = req.read()
req.fp._sock.recv = None # Hacky avoidance of memory leak for older python versions
req.close() req.close()
req = None req = None