55
def __init__(self, trackerlist, interval, sched, howmany, minpeers,
56
connect, externalsched, amount_left, up, down,
57
port, ip, myid, infohash, timeout, errorfunc, excfunc,
58
maxpeers, doneflag, upratefunc, downratefunc,
59
unpauseflag = fakeflag(True),
60
seed_id = '', seededfunc = None, force_rapid_update = False ):
55
def __init__( self, port, myid, infohash, trackerlist, config,
56
sched, externalsched, errorfunc, excfunc, connect,
57
howmany, amount_left, up, down, upratefunc, downratefunc,
58
doneflag, unpauseflag = fakeflag(True),
59
seededfunc = None, force_rapid_update = False ):
62
self.externalsched = externalsched
63
self.errorfunc = errorfunc
62
64
self.excfunc = excfunc
65
self.connect = connect
66
self.howmany = howmany
67
self.amount_left = amount_left
70
self.upratefunc = upratefunc
71
self.downratefunc = downratefunc
72
self.doneflag = doneflag
73
self.unpauseflag = unpauseflag
74
self.seededfunc = seededfunc
75
self.force_rapid_update = force_rapid_update
77
self.ip = config.get('ip','')
78
self.minpeers = config['min_peers']
79
self.maxpeers = config['max_initiate']
80
self.interval = config['rerequest_interval']
81
self.timeout = config['http_timeout']
63
83
newtrackerlist = []
64
84
for tier in trackerlist:
67
87
newtrackerlist += [tier]
68
88
self.trackerlist = newtrackerlist
69
90
self.lastsuccessful = ''
70
91
self.rejectedmessage = 'rejected by tracker - '
72
self.url = ('?info_hash=%s&peer_id=%s&port=%s' %
73
(quote(infohash), quote(myid), str(port)))
75
self.interval = interval
93
self.url = ('info_hash=%s&peer_id=%s' %
94
(quote(infohash), quote(myid)))
95
if not config.get('crypto_allowed'):
98
self.url += "&supportcrypto=1"
99
if not config.get('crypto_only'):
102
self.url += "&requirecrypto=1"
103
if not config.get('crypto_stealth'):
106
self.url += "&port=0&cryptoport="
107
self.url += str(port)
109
seed_id = config.get('dedicated_seed_id')
111
self.url += '&seed_id='+quote(seed_id)
113
self.url += '&check_seeded=1'
77
116
self.trackerid = None
78
117
self.announce_interval = 30 * 60
80
self.howmany = howmany
81
self.minpeers = minpeers
82
self.connect = connect
83
self.externalsched = externalsched
84
self.amount_left = amount_left
87
self.timeout = timeout
88
self.errorfunc = errorfunc
89
self.maxpeers = maxpeers
90
self.doneflag = doneflag
91
self.upratefunc = upratefunc
92
self.downratefunc = downratefunc
93
self.unpauseflag = unpauseflag
95
self.url += '&seed_id='+quote(seed_id)
96
self.seededfunc = seededfunc
98
self.url += '&check_seeded=1'
99
self.force_rapid_update = force_rapid_update
100
118
self.last_failed = True
101
119
self.never_succeeded = True
102
120
self.errorcodes = {}
339
363
if type(p) == type(''):
367
cflags = r.get('crypto_flags')
368
if type(cflags) != type('') or len(cflags) != lenpeers:
371
cflags = [None for i in xrange(lenpeers)]
373
cflags = [ord(x) for x in cflags]
374
if type(p) == type(''):
340
375
for x in xrange(0, len(p), 6):
341
376
ip = '.'.join([str(ord(i)) for i in p[x:x+4]])
342
377
port = (ord(p[x+4]) << 8) | ord(p[x+5])
343
peers.append(((ip, port), 0))
378
peers.append(((ip, port), 0, cflags[int(x/6)]))
346
peers.append(((x['ip'].strip(), x['port']), x.get('peer id',0)))
380
for i in xrange(len(p)):
382
peers.append(((x['ip'].strip(), x['port']),
383
x.get('peer id',0), cflags[i]))
347
384
ps = len(peers) + self.howmany()
348
385
if ps < self.maxpeers:
349
386
if self.doneflag.isSet():