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)
Example #2
0
 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)
Example #3
0
 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 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 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))
Example #9
0
 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))
Example #11
0
 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)
Example #13
0
        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!")
Example #15
0
 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)
 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)
                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!")
        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)