##// END OF EJS Templates
Don't rely on `get_ipython` in builtins in library code
Don't rely on `get_ipython` in builtins in library code

File last commit:

r10420:d1b349d4
r10580:9656bf9c
Show More
localinterfaces.py
55 lines | 1.9 KiB | text/x-python | PythonLexer
MinRK
added localinterfaces to utils
r3143 """Simple utility for building a list of local IPs using the socket module.
This module defines two constants:
Bernardo B. Marques
remove all trailling spaces
r4872 LOCALHOST : The loopback interface, or the first interface that points to this
MinRK
added localinterfaces to utils
r3143 machine. It will *almost* always be '127.0.0.1'
LOCAL_IPS : A list of IP addresses, loopback first, that point to this machine.
W. Trevor King
utils.localinterfaces: Add PUBLIC_IPS to consolidate socket logic...
r9250
PUBLIC_IPS : A list of public IP addresses that point to this machine.
Use these to tell remote clients where to find you.
MinRK
added localinterfaces to utils
r3143 """
#-----------------------------------------------------------------------------
Matthias BUSSONNIER
update copyright to 2011/20xx-2011...
r5390 # Copyright (C) 2010-2011 The IPython Development Team
MinRK
added localinterfaces to utils
r3143 #
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import socket
W. Trevor King
utils.localinterfaces: Uniquify LOCAL_IPS...
r9248 from .data import uniq_stable
MinRK
added localinterfaces to utils
r3143 #-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
LOCAL_IPS = []
try:
LOCAL_IPS = socket.gethostbyname_ex('localhost')[2]
except socket.gaierror:
pass
W. Trevor King
utils.localinterfaces: Add PUBLIC_IPS to consolidate socket logic...
r9250 PUBLIC_IPS = []
MinRK
added localinterfaces to utils
r3143 try:
MinRK
try hostname.local if hostname points to loopback
r10420 hostname = socket.gethostname()
PUBLIC_IPS = socket.gethostbyname_ex(hostname)[2]
# try hostname.local, in case hostname has been short-circuited to loopback
if not hostname.endswith('.local') and all(ip.startswith('127') for ip in PUBLIC_IPS):
PUBLIC_IPS = socket.gethostbyname_ex(socket.gethostname() + '.local')[2]
MinRK
added localinterfaces to utils
r3143 except socket.gaierror:
pass
W. Trevor King
utils.localinterfaces: Add PUBLIC_IPS to consolidate socket logic...
r9250 else:
PUBLIC_IPS = uniq_stable(PUBLIC_IPS)
LOCAL_IPS.extend(PUBLIC_IPS)
MinRK
added localinterfaces to utils
r3143
# include all-interface aliases: 0.0.0.0 and ''
LOCAL_IPS.extend(['0.0.0.0', ''])
W. Trevor King
utils.localinterfaces: Uniquify LOCAL_IPS...
r9248 LOCAL_IPS = uniq_stable(LOCAL_IPS)
MinRK
added localinterfaces to utils
r3143 LOCALHOST = LOCAL_IPS[0]