示例#1
0
 def on_file_transfer_accepted(self, p2p, session, context, sender):
     '''callback for P2PUser file-transfer-accepted, sends a 200ok
     message starting the transfer'''
     if int(session) == int(self.session_id) and \
        context == self.context and \
        sender == self.from_:
         self.debug('accepting FT')
         self.emit('msnp2p-message-ready', msn_slp.ok(self), 0)
示例#2
0
 def __init__(self, p2p, bin_header, slp, data):
     Base.__init__(self, p2p)
     self.data = data
     self.via = slp.via
     self.call_id = slp.call_id
     self.session_id = slp.body['SessionID']
     self.connect_handler(p2p)
     self.emit('msnp2p-message-ready', msn_slp.ok(self), 0)
     self.emit('msnp2p-message-ready', '\0\0\0\0', self.session_id) #dpm
     self.emit('msnp2p-file-ready', bin_header.EACH_FLAG, self.data,
         Base.DP_FOOTER, self.on_transfer_complete)
示例#3
0
 def handle_invite(self, bin_header, slp):
     '''Handles a invite message'''
     if slp.content_type == msn_slp.SLPMessage.CONTENT_TRANS_REQ:
         message = msn_slp.ok(self)
         message.content_type = msn_slp.SLPMessage.CONTENT_TRANS_RESP
         message.body = {
             'Bridge': 'TCPv1',
             'Listening': 'false',
             'Nonce': '{00000000-0000-0000-0000-000000000000}',
         }
         self.emit('msnp2p-message-ready', message, 0)
     elif slp.content_type == msn_slp.SLPMessage.CONTENT_TRANS_RESP:
         pass
示例#4
0
    def handle_invite(self, bin_header, slp):
        '''Handles a invite message'''

        if slp.content_type == msn_slp.SLPMessage.CONTENT_TRANS_REQ:
            # params after \r\n\r\n:
            #Bridges: TRUDPv1 TCPv1 SBBridge TURNv1
            #NetID: -1689699384
            #Conn-Type: Port-Restrict-NAT
            #TCP-Conn-Type: Port-Restrict-NAT
            #UPnPNat: false
            #ICF: false
            #Hashed-Nonce: {44C4DB18-98AC-2025-1404-1998BEE1C437}
            #SessionID: 10958830
            #SChannelState: 0
            #Capabilities-Flags: 1

            message = msn_slp.ok(self)
            message.content_type = msn_slp.SLPMessage.CONTENT_TRANS_RESP
            message.body = {
                'Bridge': 'TCPv1',
                'Listening': 'false',
                'Nonce': '{00000000-0000-0000-0000-000000000000}',
            }
            self.emit('msnp2p-message-ready', message, 0)

        elif slp.content_type == msn_slp.SLPMessage.CONTENT_TRANS_RESP:
            # the second invite is a TRANSRESP. body:
            # 
            # Bridge: TCPv1
            # Listening: true
            # Conn-Type: Direct-Connect
            # TCP-Conn-Type: Direct-Connect
            # Nonce: {A10AE850-D3DD-4A4A-A69D-C41F01D41F94}
            # IPv4Internal-Addrs: 5.127.##.## 169.254.##.### 201.255.###.##
            # IPv4Internal-Port: 3660
            #  <alt>
            # IPv4Internal-Addrs: 190.183.##.##
            # IPv4Internal-Port: 1434
            # SessionID: 278241011
            # SChannelState: 0
            # Capabilities-Flags: 1

            # this is auto acked
            pass