def _send_message(self, message, transport): g_logger.info("Sending a %s message to %s" % (message.DESCRIPTOR.name, transport.getPeer())) data = MessageFactory.encode(message) length = struct.pack('!I', len(data)) transport.write(length) transport.write(data)
def forward_message(self, target, message): request_msg = ForwardingMessage() request_msg.destination = target request_msg.identifier = "%s_%d" % \ (str(theApp.peer_info.ID), int(time.time() * 1000)) request_msg.encodedMessage = \ base64.b64encode(MessageFactory.encode(message)) defer_ = defer.Deferred() self.forwarding_defers[request_msg.identifier] = defer_ self._send_message(request_msg) return defer_
def save_event_to_db(self, event_entry): locs = [] for loc in event_entry.Locations: locs.append("%f,%f" % loc) loc_str = ';'.join(locs) wr_str = None if event_entry.WebsiteReport: wr_str = base64.b64encode( MessageFactory.encode(event_entry.WebsiteReport)) sr_str = None if event_entry.ServiceReport: sr_str = base64.b64encode( MessageFactory.encode(event_entry.ServiceReport)) sql_stmt = "insert into events (test_type, event_type, time, "\ "since_time, locations, website_report, service_report) "\ "values ('%s', '%s', %d, %d, '%s', '%s', '%s')" % \ (event_entry.TestType, event_entry.EventType, event_entry.TimeUTC, event_entry.SinceTimeUTC, loc_str, wr_str, sr_str) g_db_helper.execute(sql_stmt) g_db_helper.commit()
def test_mobile_agent_connect(self): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) s.connect(('127.0.0.1', self.listen_port)) request_msg = AuthenticatePeer() request_msg.agentID = random.randint(10000, 99999) request_msg.agentType = 4 request_msg.agentPort = random.randint(5900, 6000) request_msg.cipheredPublicKey = 'null' data = MessageFactory.encode(request_msg) length = struct.pack('!I', len(data)) s.send(length) s.send(data) length = struct.unpack('!i', s.recv(4))[0] data = s.recv(length) response_msg = MessageFactory.decode(data) s.close()
def save_report_to_db(self, table_name, report_entry): sql_stmt = "insert into %s (report_id, test_id, time_gen, content, "\ "source_id, source_ip, status) values "\ "('%s', '%s', '%s', '%s', '%s', '%s', '%s')" % \ (table_name, report_entry.ID, report_entry.TestID, datetime.datetime.fromtimestamp(report_entry.TimeGen), base64.b64encode(MessageFactory.encode(report_entry.Report)), report_entry.SourceID, report_entry.SourceIP, report_entry.Status) g_db_helper.execute(sql_stmt) g_db_helper.commit() g_logger.debug("Save report '%s' to table '%s'." % (report_entry.ID, table_name))
def build_super_connection(self,host=None,port=None): """ this method will connect to host:port, to get necessary super peer information, and add them into peer list and super peer session. we will get peer_id, token, ciphered_public_key from super peer """ if host == None or host == "" or port == None or port == "": g_logger.error("Wrong super peer conection information: host->%s, port->%d"%(host,port)) return from umit.icm.agent.rpc.message import * from umit.icm.agent.rpc.MessageFactory import MessageFactory g_logger.error('Try to connect to super peer...., to get necessary information!!!') from umit.icm.agent.utils.CreateDB import mod,exp try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) s.connect((host,port)) except: g_logger.error('Cannot connect to the super peer, maybe it down!') return request_msg = AuthenticatePeer() request_msg.agentID = self.application.peer_info.ID request_msg.agentType = 2 request_msg.agentPort = 5895 request_msg.cipheredPublicKey.mod = str(mod) request_msg.cipheredPublicKey.exp = str(exp) data = MessageFactory.encode(request_msg) length = struct.pack('!I', len(data)) s.send(length) s.send(data) length = struct.unpack('!i', s.recv(4))[0] data = s.recv(length) response_msg = MessageFactory.decode(data) g_logger.error('Get the super peer information (ip:%s,port:%s,agentID:%s)\ with build_super_connection process'%(host,port,response_msg.token)) self.application.peer_manager.add_super_peer(peer_id=response_msg.token,ip=host,port=port)
def _send_message(self, message): data = MessageFactory.encode(message) length = struct.pack('!I', len(data)) self.transport.write(length) self.transport.write(data)
response_msg = MessageFactory.decode(data) s.close() def test_mobile_agent_connect(self): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) s.connect(('127.0.0.1', self.listen_port)) request_msg = AuthenticatePeer() request_msg.agentID = random.randint(10000, 99999) request_msg.agentType = 4 request_msg.agentPort = random.randint(5900, 6000) request_msg.cipheredPublicKey = 'null' data = MessageFactory.encode(request_msg) length = struct.pack('!I', len(data)) s.send(length) s.send(data) length = struct.unpack('!i', s.recv(4))[0] data = s.recv(length) response_msg = MessageFactory.decode(data) s.close() if __name__ == "__main__": msg = AgentUpdate() msg.version = "1.0" msg.downloadURL = "http://202.206.64.11/icm-agent.temp.tar.gz" msg.checkCode = 0 data = MessageFactory.encode(msg) print(len(data)) print(data)
print("Error! This field is required.") value = raw_input("[%s] %s(%s): " % (labels[field.label], field.name, cpp_types[field.cpp_type])) if field.cpp_type < 5: request_msg._fields[field] = int(value) elif field.cpp_type < 7: request_msg._fields[field] = float(value) elif field.cpp_type == 7: request_msg._fields[field] = bool(value) elif field.cpp_type == 8: request_msg._fields[field] = float(value) elif field.cpp_type == 9: request_msg._fields[field] = value else: pass data = MessageFactory.encode(request_msg) print(data) length = struct.pack('!I', len(data)) s.send(length) s.send(data) print("----------Client Request End----------") print("Message has been sent. Now waiting for result.") print("---------Server Response Begin---------") length = struct.unpack('!i', s.recv(4))[0] data = s.recv(length) response_msg = MessageFactory.decode(data) print(response_msg) print("----------Server Response End----------") print("bye!")
def _send_message(self, message): data = MessageFactory.encode(message) length = struct.pack('!I', len(data)) self._transport.write(length) self._transport.write(data)
def send_forward_message_response(self, message, identifier): response_msg = ForwardingMessageResponse() response_msg.identifier = identifier response_msg.encodedMessage = \ base64.b64encode(MessageFactory.encode(message)) self._send_message(response_msg)
length = struct.unpack('!i', s.recv(4))[0] data = s.recv(length) response_msg = MessageFactory.decode(data) s.close() def test_mobile_agent_connect(self): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) s.connect(('127.0.0.1', self.listen_port)) request_msg = AuthenticatePeer() request_msg.agentID = random.randint(10000, 99999) request_msg.agentType = 4 request_msg.agentPort = random.randint(5900, 6000) request_msg.cipheredPublicKey = 'null' data = MessageFactory.encode(request_msg) length = struct.pack('!I', len(data)) s.send(length) s.send(data) length = struct.unpack('!i', s.recv(4))[0] data = s.recv(length) response_msg = MessageFactory.decode(data) s.close() if __name__ == "__main__": msg = AgentUpdate() msg.version = "1.0" msg.downloadURL = "http://202.206.64.11/icm-agent.temp.tar.gz" msg.checkCode = 0 data = MessageFactory.encode(msg) print(len(data)) print(data)