Beispiel #1
0
def IDchanged(changes):
    s = set(changes)
    if s.intersection([
        'transport.transport-tcp.transport-tcp-enable',
        'transport.transport-tcp.transport-tcp-receiving-enable',
        'transport.transport-udp.transport-udp-enable',
        'transport.transport-udp.transport-udp-receiving-enable',
        'transport.transport-cspace.transport-cspace-enable',
        'transport.transport-cspace.transport-cspace-receiving-enable',
        # 'transport.transport-ssh.transport-ssh-enable',
        # 'transport.transport-http.transport-http-enable',
        # 'transport.transport-email.transport-email-enable',
        # 'transport.transport-q2q.transport-q2q-enable',
        # 'transport.transport-skype.transport-skype-enable',
        ]):
        return True
    if 'transport.transport-tcp.transport-tcp-port' in s and settings.enableTCP():
        return True
    if 'transport.transport-udp.transport-udp-port' in s and settings.enableUDP():
        return True
    if 'transport.transport-ssh.transport-ssh-port' in s and settings.enableSSH():
        return True
    if 'transport.transport-q2q.transport-q2q-username' in s and settings.enableQ2Q():
        return True
    if 'transport.transport-cspace.transport-cspace-key-id' in s and settings.enableCSpace():
        return True
    if 'transport.transport-http.transport-http-server-port' in s and settings.enableHTTP():
        return True
    if 'transport.transport-tcp.transport-tcp-port' in s and settings.enableTCP():
        return True
    return False
def CreateNewIdentity():
    global _NewIdentity
    
    dhncrypto.InitMyKey()
    misc.loadLocalIdentity()
    if misc.isLocalIdentityReady():
        try:
            lid = misc.getLocalIdentity()
            lid.sign()
            # misc.setLocalIdentity(lid)
            # misc.saveLocalIdentity()
            valid = lid.Valid()
        except:
            valid = False
            dhnio.DprintException()
        if valid:
            _NewIdentity = lid
            return
        dhnio.Dprint(2, 'identity_registrator.CreateNewIdentity existing local identity is not VALID')

    login = dhnio.ReadTextFile(settings.UserNameFilename())
    externalIP = dhnio.ReadTextFile(settings.ExternalIPFilename())
    localIP = dhnio.ReadTextFile(settings.LocalIPFilename())

    dhnio.Dprint(4, 'identity_registrator.CreateNewIdentity %s %s ' % (login, externalIP))
    
    idurl = 'http://'+settings.IdentityServerName()+'/'+login.lower()+'.xml'
    ident = identity.identity( )
    ident.sources.append(idurl)

    cdict = {}
    if settings.enableTCP():
        cdict['tcp'] = 'tcp://'+externalIP+':'+settings.getTCPPort()
    if settings.enableCSpace() and transport_control._TransportCSpaceEnable:
        cdict['cspace'] = 'cspace://'
        if settings.getCSpaceKeyID() != '':
            cdict['cspace'] += settings.getCSpaceKeyID()
    if settings.enableUDP() and transport_control._TransportUDPEnable:
        if stun.getUDPClient() is not None:
            if stun.getUDPClient().externalAddress is not None: # _altStunAddress
                cdict['udp'] = 'udp://'+stun.getUDPClient().externalAddress[0]+':'+str(stun.getUDPClient().externalAddress[1])
        
    for c in misc.validTransports:
        if cdict.has_key(c):
            ident.contacts.append(cdict[c])

    ident.publickey = dhncrypto.MyPublicKey()
    ident.date = time.ctime() #time.strftime('%b %d, %Y')

    revnum = dhnio.ReadTextFile(settings.RevisionNumberFile()).strip()
    repo, location = misc.ReadRepoLocation()
    ident.version = (revnum.strip() + ' ' + repo.strip() + ' ' + dhnio.osinfo().strip()).strip()

    ident.sign()
    
    dhnio.WriteFile(settings.LocalIdentityFilename()+'.new', ident.serialize())
    
    _NewIdentity = ident
Beispiel #3
0
 def _stop_transports():
     stoplist = []
     for proto in transport_control.ListSupportedProtocols():
         contact = misc.getLocalIdentity().getProtoContact(proto)
         if contact is None:
             dhnio.Dprint(4, 'p2p_connector.UpdateTransports want to stop transport %s because not present in local identity' % proto)
             stoplist.append(transport_control.StopProtocol(proto))
             continue
         proto_, host, port, filename = nameurl.UrlParse(contact)
         if host.strip() == '':
             continue
         opts = transport_control.ProtocolOptions(proto)
         if opts[0].strip() == '':
             continue
         if proto != proto_:
             dhnio.Dprint(8, 'p2p_connector.UpdateTransports WARNING identity contact is %s, but proto is %s' % (contact, proto))
             continue
         #---tcp---
         if proto == 'tcp':
             if opts[0] != host:
                 dhnio.Dprint(4, 'p2p_connector.UpdateTransports want to stop transport [tcp] because IP changed')
                 stoplist.append(transport_control.StopProtocol(proto))
                 continue
             if opts[1] != port:
                 dhnio.Dprint(4, 'p2p_connector.UpdateTransports want to stop transport [tcp] because port changed')
                 stoplist.append(transport_control.StopProtocol(proto))
                 continue
         #---cspace---
         if proto == 'cspace':
             if opts[0] != host:
                 dhnio.Dprint(4, 'p2p_connector.UpdateTransports want to stop transport [cspace] because keyID changed: %s to %s' % (
                     host, opts[0]))
                 stoplist.append(transport_control.StopProtocol(proto))
                 continue
         #---udp---
         if proto == 'udp':
             if opts[0] != host:
                 dhnio.Dprint(4, 'p2p_connector.UpdateTransports want to stop transport [udp] because IP were changed')
                 stoplist.append(transport_control.StopProtocol(proto))
                 continue
             if opts[1] != port:
                 dhnio.Dprint(4, 'p2p_connector.UpdateTransports want to stop transport [udp] because port were changed')
                 stoplist.append(transport_control.StopProtocol(proto))
                 continue
             if 'transport.transport-udp.transport-udp-port' in changes and settings.enableUDP():
                 dhnio.Dprint(4, 'p2p_connector.UpdateTransports want to stop transport [udp] because port were changed by user')
                 stoplist.append(transport_control.StopProtocol(proto))
                 continue
     #need to wait before all listeners will be stopped
     return DeferredList(stoplist)