Esempio n. 1
0
	def __init__(self, db, dbAuth):
		QtCore.QObject.__init__(self)
		self.db = db
		self.dbAuth = dbAuth
		self.connecter = Connecter(db, dbAuth)
		self.counter = 0
		self.pid = None
		self.serverMeta = None
		self._launchConnecter()
Esempio n. 2
0
class Checker(QtCore.QObject):

	def __init__(self, db, dbAuth):
		QtCore.QObject.__init__(self)
		self.db = db
		self.dbAuth = dbAuth
		self.connecter = Connecter(db, dbAuth)
		self.counter = 0
		self.pid = None
		self.serverMeta = None
		self._launchConnecter()

	def timerEvent(self, event):
		goodIp, ip = self._checkConnection()
		if not goodIp:
			p = subprocess.Popen(['./onFailed.sh', ip], shell=True)
			p.wait()
			self.counter += 1
			if self.counter > 2:
				self._stopConnecter(True)
				self._launchConnecter()
		else:
			p = subprocess.Popen(['./onSucceed.sh', ip], shell=True)
			p.wait()
			self.counter = 0
	
	def _checkConnection(self):
		ips = getInterfaceIp('tun0')
		if ips is None or len(ips) == 0:
			return False
		ipso = self.dbAuth.select(['ip'], 'addr')
		print 'ip:\n{%s} = {%s}' % (repr(ips), repr(ipso))
		ip = getMyIp()
		return (ip != ipso[0], ip)

	def _launchConnecter(self):
		if self.pid is not None:
			self._stopConnecter()
		self.pid, self.serverMeta = self.connecter.connect()

	def _stopConnecter(self, updateServer = False):
		if self.pid is not None:
			os.kill(self.pid, signal.SIGKILL)
			rowid, failed = self.serverMeta
			self.db.processQueries([('UPDATE servers SET failed=:failed WHERE ROWID=:rowid', {':rowid': rowid, ':failed': int(failed) + 1})])
			self.pid = None
			self.serverMeta = None
Esempio n. 3
0
         max_slice_length = config['max_slice_length'],
         max_rate_period = config['max_rate_period'],
         fudge = config['upload_rate_fudge']):
     return Upload(connection, choker, storagewrapper, 
         max_slice_length, max_rate_period, fudge)
 ratemeasure = RateMeasure(storagewrapper.get_amount_left())
 rm[0] = ratemeasure.data_rejected
 picker = PiecePicker(len(pieces), config['rarest_first_cutoff'])
 for i in xrange(len(pieces)):
     if storagewrapper.do_I_have(i):
         picker.complete(i)
 downloader = Downloader(storagewrapper, picker,
     config['request_backlog'], config['max_rate_period'],
     len(pieces), downmeasure, config['snub_time'], 
     ratemeasure.data_came_in)
 connecter = Connecter(make_upload, downloader, choker,
     len(pieces), upmeasure, config['max_upload_rate'] * 1024, rawserver.add_task)
 infohash = sha(bencode(info)).digest()
 encoder = Encoder(connecter, rawserver, 
     myid, config['max_message_length'], rawserver.add_task, 
     config['keepalive_interval'], infohash, config['max_initiate'])
 rerequest = Rerequester(response['announce'], config['rerequest_interval'], 
     rawserver.add_task, connecter.how_many_connections, 
     config['min_peers'], encoder.start_connection, 
     rawserver.add_task, storagewrapper.get_amount_left, 
     upmeasure.get_total, downmeasure.get_total, listen_port, 
     config['ip'], myid, infohash, config['http_timeout'], errorfunc, 
     config['max_initiate'], doneflag, upmeasure.get_rate, downmeasure.get_rate,
     encoder.ever_got_incoming)
 if config['spew']:
     spewflag.set()
 DownloaderFeedback(choker, rawserver.add_task, statusfunc,