示例#1
0
 def clearnet_identity(self):
     host = self.default('REPORT_HOST', None)
     if host is None:
         return None
     try:
         ip = ip_address(host)
     except ValueError:
         bad = (not lib_util.is_valid_hostname(host)
                or host.lower() == 'localhost')
     else:
         bad = (ip.is_multicast or ip.is_unspecified
                or (ip.is_private and self.peer_announce))
     if bad:
         raise self.Error('"{}" is not a valid REPORT_HOST'.format(host))
     tcp_port = self.integer('REPORT_TCP_PORT', self.tcp_port) or None
     ssl_port = self.integer('REPORT_SSL_PORT', self.ssl_port) or None
     if tcp_port == ssl_port:
         raise self.Error('REPORT_TCP_PORT and REPORT_SSL_PORT '
                          'both resolve to {}'.format(tcp_port))
     return NetIdentity(
         host,
         tcp_port,
         ssl_port,
         ''
     )
示例#2
0
 def is_valid(self):
     ip = self.ip_address
     if ip:
         return ((ip.is_global or ip.is_private)
                 and not (ip.is_multicast or ip.is_unspecified))
     return util.is_valid_hostname(self.host)