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
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)