Example #1
0
def process_signoff(addr,packet):
    logging.info("LAN: Peer " + addr[0] + " has signed off")
    getmain = contacts.contact_by_li(packet[1:25])
    if(getmain != -1):
        contacts.Contactlist[getmain].del_transport("lan")
        logging.debug("LAN: Removing LAN transport from this peer")
    else:
        logging.debug("LAN: Peer not found on contact list")
Example #2
0
def process_signoff(addr,packet):
    logging.info("LAN: Peer " + addr[0] + " has signed off")

    if(len(packet)>24):
        if(packet[1:25]) == lan_uid:
            logging.debug("LAN: Own signoff packet received")
            return False
    
    getmain = contacts.contact_by_li(packet[1:25])
    if(getmain != -1):
        contacts.Contactlist[getmain].del_transport("lan")
        logging.debug("LAN: Removing LAN transport from this peer")
    else:
        logging.debug("LAN: Peer not found on contact list")
Example #3
0
def process_broadcast(addr,packet):
    uid = packet[3:27]
    interval = packet[1]

    #Flags (lsb=presence,1=bcast_request)
    flags = int(packet[2])
    status = flags & 1
    bcast_request = flags & 2
    
    nick = packet[27:]
    peer = peer_by_uid(uid)
    curcontact = (nick,addr[0],addr[1],uid)

    #Ignore packets from self 
    if(uid == lan_uid): return
    print("Incoming broadcast\n Nick:" + str(nick,'UTF-8') + "\nUID: " + str(binascii.hexlify(uid),'utf-8'))

    getmain = contacts.contact_by_li(uid)
    p_exists = peer_exists(uid)
    
    if (not p_exists and getmain == -1):
       #Create a brand new contact from scratch
       Contactobject = lancontact(nick,addr[0],addr[1],uid,status)
       Contactobject.addself()
    elif(not p_exists and getmain != -1):
        #Add transport to existing contact
        Contactobject = lancontact(nick,addr[0],addr[1],uid,status,getmain)
        Contactobject.addself()
    else:
        existing_peer = peer_by_uid(uid)
        lan_contacts[existing_peer].b_nick = nick
        lan_contacts[existing_peer].b_addr = addr[0] # Address
        lan_contacts[existing_peer].b_port = addr[1] #Port
        lan_contacts[existing_peer].b_lastrcvd = time.time()
        lan_contacts[existing_peer].b_status = status
        lan_contacts[existing_peer].update_maincontact()

        
    if(bcast_request): bcast_send() # Notify new peer that you are around
Example #4
0
def process_broadcast(addr,packet):
    uid = packet[3:27]
    interval = packet[1]
    #Flags (lsb=presence,1=bcast_request)
    flags = int(packet[2])
    status = flags & 1
    bcast_request = flags & 2
    nick = str(packet[27:],'UTF-8')

    LTO = Lan_Contact(addr[0],addr[1],interval)
    
    #Ignore packets from self 
    if(uid == lan_uid):
        logging.debug("LAN: Own broadcast received")
        return
    
    #print("Incoming broadcast\n Nick:" + str(nick,'UTF-8') + "\nUID: " + str(binascii.hexlify(uid),'utf-8'))
    getmain = contacts.contact_by_li(uid)

    if (getmain == -1):
        logging.debug("LAN: New broadcast contact detected")
       #Create a brand new contact from scratch
        Contactobject = contacts.Contact(nick,status)
        Contactobject.li = uid
    else:
        Contactobject = contacts.Contactlist[getmain]
        logging.debug("LAN: Existing contact detected")

    #Add LAN transport to this object
    Contactobject.Transports['lan'] = LTO
    Contactobject.nick = nick
    Contactobject.presence = status
    Contactobject.ui_update()

    
    if(bcast_request): bcast_send() # Notify new peer that you are around