mirror of
https://github.com/samba-team/samba.git
synced 2025-07-16 20:59:12 +03:00
s4:provision.py - try to use other addresses than "127.0.0.x" and "::1"
On production systems a user for sure strongly disagrees to use local IP addresses (how should the server be accessible?). Therefore if the user didn't specify an IP as provision option and in the "/etc/hosts" file we have at least one not-local IP which resolves to our hostname use this or one of them. Notice: if a host has more public IP addresses with the same name assigned the behaviour is non-deterministic (well, okay - by the entries order it is). But then the user is invited to specify the host IP manually. This should address bug #5484.
This commit is contained in:
@ -1213,13 +1213,21 @@ def provision(setup_dir, message, session_info,
|
||||
|
||||
if hostip is None:
|
||||
try:
|
||||
hostip = socket.getaddrinfo(names.hostname, None, socket.AF_INET, socket.AI_CANONNAME, socket.IPPROTO_IP)[0][-1][0]
|
||||
for ip in socket.getaddrinfo(names.hostname, None, socket.AF_INET, socket.AI_CANONNAME, socket.IPPROTO_IP):
|
||||
if hostip is None:
|
||||
hostip = ip[-1][0]
|
||||
if hostip.startswith('127.0.0.') and (not ip[-1][0].startswith('127.0.0.')):
|
||||
hostip = ip[-1][0]
|
||||
except socket.gaierror, (socket.EAI_NODATA, msg):
|
||||
hostip = None
|
||||
|
||||
if hostip6 is None:
|
||||
try:
|
||||
hostip6 = socket.getaddrinfo(names.hostname, None, socket.AF_INET6, socket.AI_CANONNAME, socket.IPPROTO_IP)[0][-1][0]
|
||||
for ip in socket.getaddrinfo(names.hostname, None, socket.AF_INET6, socket.AI_CANONNAME, socket.IPPROTO_IP):
|
||||
if hostip6 is None:
|
||||
hostip6 = ip[-1][0]
|
||||
if hostip6 == '::1' and ip[-1][0] != '::1':
|
||||
hostip6 = ip[-1][0]
|
||||
except socket.gaierror, (socket.EAI_NODATA, msg):
|
||||
hostip6 = None
|
||||
|
||||
|
Reference in New Issue
Block a user