def track(args): if len(args) == 0: print formatDefinitions(defaults, 80) return try: config, files = parseargs(args, defaults, 0, 0) except ValueError as e: print 'error: ' + str(e) print 'run with no arguments for parameter explanations' return r = RawServer(threading.Event(), config['timeout_check_interval'], config['socket_timeout'], ipv6_enable=config['ipv6_enabled']) t = Tracker(config, r) r.bind(config['port'], config['bind'], reuse=True, ipv6_socket_style=config['ipv6_binds_v4']) r.listen_forever( HTTPHandler(t.get, config['min_time_between_log_flushes'])) t.save_state() print '# Shutting down: ' + isotime()
def start(self): config = {k: v for k, v, _ in defaults} config['dfile'] = tempfile.mktemp() # Use temporary file since it won't be reused. config['port'] = self.port rawserver = RawServer( doneflag=Event(), timeout_check_interval=config['timeout_check_interval'], timeout=config['socket_timeout'], ipv6_enable=config['ipv6_enabled']) rawserver.bind( port=config['port'], bind=config['bind'], reuse=True, ipv6_socket_style=config['ipv6_binds_v4']) self._tracker = _Tracker(config, rawserver) # Spawn in separate thread. spawn(rawserver.listen_forever, HTTPHandler(self._tracker.get, config['min_time_between_log_flushes']))
def start(self): config = {k: v for k, v, _ in defaults} config['dfile'] = tempfile.mktemp( ) # Use temporary file since it won't be reused. config['port'] = self.port rawserver = RawServer( doneflag=Event(), timeout_check_interval=config['timeout_check_interval'], timeout=config['socket_timeout'], ipv6_enable=config['ipv6_enabled']) rawserver.bind(port=config['port'], bind=config['bind'], reuse=True, ipv6_socket_style=config['ipv6_binds_v4']) self._tracker = _Tracker(config, rawserver) # Spawn in separate thread. spawn( rawserver.listen_forever, HTTPHandler(self._tracker.get, config['min_time_between_log_flushes']))
def track(args): if len(args) == 0: print formatDefinitions(defaults, 80) return try: config, files = parseargs(args, defaults, 0, 0) except ValueError, e: print 'error: ' + str(e) print 'run with no arguments for parameter explanations' return r = RawServer(Event(), config['timeout_check_interval'], config['socket_timeout'], ipv6_enable = config['ipv6_enabled']) t = Tracker(config, r) r.bind(config['port'], config['bind'], reuse = True, ipv6_socket_style = config['ipv6_binds_v4']) r.listen_forever(HTTPHandler(t.get, config['min_time_between_log_flushes'])) t.save_dfile() print '# Shutting down: ' + isotime() def size_format(s): if (s < 1024): r = str(s) + 'B' elif (s < 1048576): r = str(int(s/1024)) + 'KiB' elif (s < 1073741824L): r = str(int(s/1048576)) + 'MiB' elif (s < 1099511627776L): r = str(int((s/1073741824.0)*100.0)/100.0) + 'GiB' else: r = str(int((s/1099511627776.0)*100.0)/100.0) + 'TiB'
def start(self): rawserver = None try: config = dict([(v[0], v[1]) for v in defaults]) config['ip'] = self.ip config['responsefile'] = self.torrent_file config['saveas'] = self.destination_file random.seed(self.id) rawserver = RawServer( doneflag=self.done_flag, timeout_check_interval=config['timeout_check_interval'], timeout=config['timeout'], ipv6_enable=config['ipv6_enabled'], failfunc=self.on_fail, errorfunc=self.on_exception) rawserver.bind(port=self.port, bind=config['bind'], reuse=True, ipv6_socket_style=config['ipv6_binds_v4']) # Download torrent metadata. response = get_response(file=config['responsefile'], url=config['url'], errorfunc=self.on_error) # Bail if tracker is done. if not response: return dow = BT1Download(statusfunc=self.on_status, finfunc=self.on_finish, errorfunc=self.on_error, excfunc=self.on_exception, doneflag=self.done_flag, config=config, response=response, infohash=hashlib.sha1(bencode( response['info'])).digest(), id=self.id, rawserver=rawserver, port=self.port) if not dow.saveAs(lambda default, size, saveas, dir: saveas if saveas else default): return if not dow.initFiles(old_style=True): return if not dow.startEngine(): dow.shutdown() return dow.startRerequester() dow.autoStats() if not dow.am_I_finished(): self.on_status(activity='connecting to peers') rawserver.listen_forever(dow.getPortHandler()) self.on_status(activity='shutting down') dow.shutdown() finally: if rawserver: rawserver.shutdown() if not self.finished_at: self.on_fail()
def start(self): rawserver = None try: config = dict([(v[0], v[1]) for v in defaults]) config['ip'] = self.ip config['responsefile'] = self.torrent_file config['saveas'] = self.destination_file random.seed(self.id) rawserver = RawServer( doneflag=self.done_flag, timeout_check_interval=config['timeout_check_interval'], timeout=config['timeout'], ipv6_enable=config['ipv6_enabled'], failfunc=self.on_fail, errorfunc=self.on_exception) rawserver.bind( port=self.port, bind=config['bind'], reuse=True, ipv6_socket_style=config['ipv6_binds_v4']) # Download torrent metadata. response = get_response( file=config['responsefile'], url=config['url'], errorfunc=self.on_error) # Bail if tracker is done. if not response: return dow = BT1Download( statusfunc=self.on_status, finfunc=self.on_finish, errorfunc=self.on_error, excfunc=self.on_exception, doneflag=self.done_flag, config=config, response=response, infohash=hashlib.sha1(bencode(response['info'])).digest(), id=self.id, rawserver=rawserver, port=self.port) if not dow.saveAs(lambda default, size, saveas, dir: saveas if saveas else default): return if not dow.initFiles(old_style=True): return if not dow.startEngine(): dow.shutdown() return dow.startRerequester() dow.autoStats() if not dow.am_I_finished(): self.on_status(activity='connecting to peers') rawserver.listen_forever(dow.getPortHandler()) self.on_status(activity='shutting down') dow.shutdown() finally: if rawserver: rawserver.shutdown() if not self.finished_at: self.on_fail()