## Arno: FIXME _idprefix is also defined in BitTornado.__init__ and that's the one ## actually used in connections, so make sure they are defined in one place ## (here) and correct. ## version_id = '3.5.0' product_name = 'Tribler' version_short = 'Tribler_ABC-' + version_id version = version_short + ' (' + product_name + ' - BitTornado 0.3.13' report_email = 'triblersoft@gmail.com' from types import StringType from sha import sha from time import time, clock from string import strip import socket try: from os import getpid except ImportError: def getpid(): return 1 from base64 import decodestring mapbase64 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-' # Arno: looking at Azureus BTPeerIDByteDecoder this letter is free # 'T' is BitTornado, 'A' is ABC, 'TR' is Transmission _idprefix = 'R' #for subver in version_short[2:].split('.'): for subver in version_short.split('-')[1].split('.'): try: subver = int(subver) except: subver = 0 _idprefix += mapbase64[subver] _idprefix += ('-' * (6-len(_idprefix))) _idrandom = [None] def resetPeerIDs(): try: f = open('/dev/urandom', 'rb') x = f.read(20) f.close() except: x = '' l1 = 0 t = clock() while t == clock(): l1 += 1 l2 = 0 t = long(time()*100) while t == long(time()*100): l2 += 1 l3 = 0 if l2 < 1000: t = long(time()*10) while t == long(clock()*10): l3 += 1 x += ( repr(time()) + '/' + str(time()) + '/' + str(l1) + '/' + str(l2) + '/' + str(l3) + '/' + str(getpid()) ) s = '' for i in sha(x).digest()[-11:]: s += mapbase64[ord(i) & 0x3F] _idrandom[0] = s resetPeerIDs() def createPeerID(ins = '---'): assert type(ins) is StringType assert len(ins) == 3 return _idprefix + ins + _idrandom[0]