diff --git a/pproxy/server.py b/pproxy/server.py index f7c82be..8a3efc3 100644 --- a/pproxy/server.py +++ b/pproxy/server.py @@ -883,14 +883,25 @@ async def test_url(url, rserver): print(f'============ success ============') def print_server_started(option, server, print_fn): - for s in server.sockets: + sockets=[] + if hasattr(server, 'sockets'): # asyncio.Server or uvloop.loop.Server + sockets.extend(server.sockets) + elif hasattr(server, 'get_extra_info'): # asyncio.Transport or uvloop.loop.UDPTransport + sockets.append(server.get_extra_info('socket')) + elif hasattr(server, '_transport'): # aioquic.asyncio.server.QuicServer + sockets.append(server._transport.get_extra_info('socket')) + else: + print_fn(option, None) + return + for s in sockets: # https://github.com/MagicStack/uvloop/blob/master/uvloop/pseudosock.pyx - laddr = s.getsockname() # tuple size varies with protocol family - h = laddr[0] - p = laddr[1] - f = str(s.family) - ipversion = "ipv4" if f == "AddressFamily.AF_INET" else ("ipv6" if f == "AddressFamily.AF_INET6" else "ipv?") # TODO better - bind = ipversion+' '+h+':'+str(p) + host, port = s.getsockname()[:2] # tuple size varies with protocol family + ipversion = "ipv?" + if s.family == socket.AddressFamily.AF_INET: + ipversion = "ipv4" + elif s.family == socket.AddressFamily.AF_INET6: + ipversion = "ipv6" + bind = ipversion + ' ' + host + ':' + str(port) print_fn(option, bind) def main(args = None):