Merge pull request #25 from jaicis/py3convert

Solved python3 database issue and now network connection created via …
This commit is contained in:
jaicis 2020-01-10 19:08:51 +05:30 committed by GitHub
commit 03cb1c05ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 8 deletions

View File

@ -486,7 +486,7 @@ class BMProto(AdvancedDispatcher, ObjectTracker):
continue
except KeyError:
pass
if len(knownnodes.knownNodes[stream]) < BMConfigParser().safeGetInt("knownnodes", "maxnodes"):
if len(knownnodes.knownNodes[stream]) < int(BMConfigParser().safeGet("knownnodes", "maxnodes")):
with knownnodes.knownNodesLock:
try:
knownnodes.knownNodes[stream][peer]["lastseen"] = seenTime

View File

@ -326,7 +326,11 @@ class BMConnectionPool(object):
continue
try:
if chosen.host.endswith(".onion") and Proxy.onion_proxy:
if type(chosen.host) == bytes:
onion= '.onion'.encode()
else:
onion = '.onion'
if chosen.host.endswith(onion) and Proxy.onion_proxy:
if onionsocksproxytype == "SOCKS5":
self.addConnection(Socks5BMConnection(chosen))
elif onionsocksproxytype == "SOCKS4a":

View File

@ -69,9 +69,14 @@ class TCPConnection(BMProto, TLSDispatcher):
else:
self.destination = address
self.isOutbound = True
self.create_socket(
socket.AF_INET6 if ":" in address.host else socket.AF_INET,
socket.SOCK_STREAM)
try:
self.create_socket(
socket.AF_INET6 if ":" in address.host else socket.AF_INET,
socket.SOCK_STREAM)
except TypeError:
self.create_socket(
socket.AF_INET6 if ':'.encode() in address.host else socket.AF_INET,
socket.SOCK_STREAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
TLSDispatcher.__init__(self, sock, server_side=False)
self.connect(self.destination)

View File

@ -96,9 +96,17 @@ def isBitSetWithinBitfield(fourByteString, n):
def encodeHost(host):
"""Encode a given host to be used in low-level socket operations"""
if host.find('.onion') > -1:
return '\xfd\x87\xd8\x7e\xeb\x43'.encode('utf-8') + base64.b32decode(host.split(".")[0], True)
elif host.find(':') == -1:
if type(host) == bytes:
onion = 'onion'.encode()
colon = ':'.encode()
full_stop = '.'.encode()
else:
onion = 'onion'
colon = ':'
full_stop = '.'
if host.find(onion) > -1:
return '\xfd\x87\xd8\x7e\xeb\x43'.encode('raw_unicode_escape') + base64.b32decode(host.split(full_stop)[0], True)
elif host.find(colon) == -1:
return '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF'.encode('raw_unicode_escape') + \
socket.inet_aton(host)
return socket.inet_pton(socket.AF_INET6, host)