Пример #1
0
 def isConnectionAlive(self, arg):
     # miss = 0
     if driver.is_on('service_udp_datagrams'):
         from lib import udp
         if time.time() - udp.get_last_datagram_time() < 60:
             if settings.enableUDP() and settings.enableUDPreceiving():
                 return True
     # else:
     #     miss += 1
     if driver.is_on('service_gateway'):
         from transport import gateway
         if time.time() - gateway.last_inbox_time() < 60:
             return True
         transport_states = map(lambda t: t.state,
                                gateway.transports().values())
         if 'LISTENING' in transport_states:
             return True
         if 'STARTING' in transport_states:
             return True
     # else:
     #     miss += 1
     # if miss >= 2:
     #     return True
     return True  # testing
     return False
Пример #2
0
 def isConnectionAlive(self, *args, **kwargs):
     # miss = 0
     if driver.is_on('service_udp_datagrams'):
         from lib import udp
         if time.time() - udp.get_last_datagram_time() < 60:
             if settings.enableUDP() and settings.enableUDPreceiving():
                 return True
     # else:
     #     miss += 1
     if driver.is_on('service_gateway'):
         from transport import gateway
         if time.time() - gateway.last_inbox_time() < 60:
             return True
         transport_states = [
             t.state for t in list(gateway.transports().values())
         ]
         if 'LISTENING' in transport_states:
             return True
         if 'STARTING' in transport_states:
             return True
     # else:
     #     miss += 1
     # if miss >= 2:
     #     return True
     # return False ... still testing that approach
     return True
Пример #3
0
 def _available_transports(self):
     from main import settings
     atransports = []
     if settings.enableTCP() and settings.enableTCPreceiving() and settings.enableTCPsending():
         atransports.append('service_tcp_transport')
     if settings.enableUDP() and settings.enableUDPreceiving() and settings.enableUDPsending():
         atransports.append('service_udp_transport')
     return atransports
 def _available_transports(self):
     from main import settings
     atransports = []
     if settings.enableTCP() and settings.enableTCPreceiving(
     ) and settings.enableTCPsending():
         atransports.append('service_tcp_transport')
     if settings.enableUDP() and settings.enableUDPreceiving(
     ) and settings.enableUDPsending():
         atransports.append('service_udp_transport')
     return atransports
Пример #5
0
def buildDefaultIdentity(name='', ip='', idurls=[]):
    """
    Use some local settings and config files to create some new identity.

    Nice to provide a user name or it will have a form like: [ip_address]_[date].
    """
    if not ip:
        ip = misc.readExternalIP()
    if not name:
        name = ip.replace('.', '-') + '_' + time.strftime('%M%S')
    lg.out(4, 'my_id.buildDefaultIdentity: %s %s' % (name, ip))
    # create a new identity object
    # it is stored in memory and another copy on disk drive
    ident = identity.identity(xmlsrc=identity.default_identity_src)
    # this is my IDURL address
    # you can have many IDURL locations for same identity
    # just need to keep all them synchronized
    # this is identity propagate procedure, see p2p/propagate.py
    if len(idurls) == 0:
        idurls.append(b'http://127.0.0.1/%s.xml' % strng.to_bin(name.lower()))
    for idurl in idurls:
        ident.sources.append(strng.to_bin(idurl.strip()))
    # create a full list of needed transport methods
    # to be able to accept incoming traffic from other nodes
    new_contacts, new_order = buildProtoContacts(ident)
    if len(new_contacts) == 0:
        if settings.enableTCP() and settings.enableTCPreceiving():
            new_contacts['tcp'] = b'tcp://' + strng.to_bin(
                ip) + b':' + strng.to_bin(str(settings.getTCPPort()))
            new_order.append('tcp')
        if settings.enableUDP() and settings.enableUDPreceiving():
            _, servername, _, _ = nameurl.UrlParse(ident.sources[0])
            new_contacts['udp'] = b'udp://' + strng.to_bin(
                name.lower()) + b'@' + strng.to_bin(servername)
            new_order.append('udp')
        if settings.enableHTTP() and settings.enableHTTPreceiving():
            new_contacts['http'] = b'http://' + strng.to_bin(
                ip) + b':' + strng.to_bin(str(settings.getHTTPPort()))
            new_order.append('http')
    # erase current contacts from my identity
    ident.clearContacts()
    # add contacts data to the local identity
    for proto in new_order:
        contact = new_contacts.get(proto, None)
        if contact is None:
            lg.warn('proto %s was not found in contacts' % proto)
            continue
        ident.setProtoContact(proto, contact)
    # set other info
    # ident.certificates = []
    ident.setDate(time.strftime('%b %d, %Y'))
    ident.setPostage(1)
    ident.setRevision(0)
    ident.setVersion('')  # TODO: put latest git commit hash here
    # update software version number
    # version_number = bpio.ReadTextFile(settings.VersionNumberFile()).strip()
    # repo, location = misc.ReadRepoLocation()
    # ident.version = (version_number.strip() + ' ' + repo.strip() + ' ' + bpio.osinfo().strip()).strip()
    # build a version info
    # vernum = bpio.ReadTextFile(settings.VersionNumberFile())
    # repo, location = misc.ReadRepoLocation()
    # ident.version = (vernum.strip() + ' ' + repo.strip() + ' ' + bpio.osinfo().strip()).strip()
    # put my public key in my identity
    ident.setPublicKey(key.MyPublicKey())
    # generate signature
    ident.sign()
    # validate new identity
    if not ident.Valid():
        lg.warn('generated identity is not valid !!!')
    return ident