Esempio n. 1
0
def synchronize():
	global old_id
	cur_id=old_id
	try:
		passwd_mgr=urllib2.HTTPPasswordMgrWithDefaultRealm()
		passwd_mgr.add_password(None, status_url, username, password) 
		handler=urllib2.HTTPBasicAuthHandler(passwd_mgr)
		opener=urllib2.build_opener(handler)
		urllib2.install_opener(opener)
		a_url = status_url + status_page + "?since_id=" + str(old_id)
		f=opener.open(a_url)
		urllib2.install_opener(opener)
		xml = f.read()
		#print xml
		root = ET.fromstring(xml)
		for child in root.findall('status'):
			try:
				data = child.find('text').text
				time = child.find('created_at').text
				idx = child.find('id').text
			except:
				print "Invalid Status"
				break
			sid = int(idx)
			print "sid: %d, cur: %d, old: %d" % (sid, cur_id, old_id)
			if sid > old_id:  # new command found
				if sid > cur_id:
					cur_id = sid
				pkt = cmd.verify_msg(data, "keys/mrpub.pem")
				ccpkt.parsing(pkt)
		old_id = cur_id
	except Exception as inst:
		print type(inst)
		print inst
Esempio n. 2
0
def synchronize():
    global old_id
    cur_id = old_id
    try:
        passwd_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
        passwd_mgr.add_password(None, status_url, username, password)
        handler = urllib2.HTTPBasicAuthHandler(passwd_mgr)
        opener = urllib2.build_opener(handler)
        urllib2.install_opener(opener)
        a_url = status_url + status_page + "?since_id=" + str(old_id)
        f = opener.open(a_url)
        urllib2.install_opener(opener)
        xml = f.read()
        #print xml
        root = ET.fromstring(xml)
        for child in root.findall('status'):
            try:
                data = child.find('text').text
                time = child.find('created_at').text
                idx = child.find('id').text
            except:
                print "Invalid Status"
                break
            sid = int(idx)
            print "sid: %d, cur: %d, old: %d" % (sid, cur_id, old_id)
            if sid > old_id:  # new command found
                if sid > cur_id:
                    cur_id = sid
                pkt = cmd.verify_msg(data, "keys/mrpub.pem")
                ccpkt.parsing(pkt)
        old_id = cur_id
    except Exception as inst:
        print type(inst)
        print inst
Esempio n. 3
0
	def handle(self):
		data = self.request[0].strip()
		sock = self.request[1]
		# print "Receiving %s from %s ..." % (data, self.client_address[0])
		msg = ccpkt.get_ack_msg()
		try: 
			sock.settimeout(5)
			sock.sendto(msg, self.client_address)
		except socket.timeout:
			pass
		#sock.close() #FIXME: should I close the socket???

		print "Recv: ", data
		cmd = ccpkt.parsing(data)
		print "Parsing command: ", cmd
		if cmd is 'grp':
			for peer in peerlist.keys():
				print "Contacting ", peer
				if peerlist[peer] is 'active':
					host,port=peer.split(':')
					print "forward to %s:%d " % (host, int(port))
					i = 0
					while i < 3:
						try:
							sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
							sock.settimeout(5)
							sock.sendto(data, (host, int(port))) #FIXME: Should be raw data (encrypted)
							recv = sock.recvfrom(1024)
							sock.close()
						except socket.timeout:
							print "Socket timeout"
							peerlist[peer] = 'dead'
							i += 1
							continue;
						pkt = recv[0].strip()
						cmd = ccpkt.parsing(pkt)
						if cmd == 'ack':
							peerlist[peer] = 'active'
						break
Esempio n. 4
0
def p2p_init(ip):
	# start udp server
	while True:
		try:
			port = random.randint(1025, 65535)
			print "Try to listening at UDP %d  ..." % port
			server = udp_server((ip, port), udp_server_handler)
			server_thread=threading.Thread(target=server.serve_forever)
			server_thread.daemon=True
			server_thread.start()
			print "Starting listening at %s:%d  ..." % (ip, port)
			break;
		except:
			print "Fail to listen at UDP %d." % port 
	
	# check peer list
	for peer in peerlist.keys():
		i = 0
		host,port=peer.split(':')
		while i < 3:
			try:
				sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
				chmsg = ccpkt.get_checkin_msg(host, int(port))
				sock.settimeout(5)
				sock.sendto(chmsg, (host, int(port)))
				recv = sock.recvfrom(1024)
				sock.close()
			except socket.timeout as te:
				print "Not receive Ack. Make %s dead." % peer
				peerlist[peer]='dead'
				i = i+1
				continue

			pkt = recv[0].strip()
			cmd = ccpkt.parsing(pkt)
			if cmd is 'ack':
				peerlist[peer] = 'active'
			break;
	print peerlist

	while True:
		pass