diff options
author | Martin Kosek <mkosek@redhat.com> | 2011-10-13 12:15:41 +0200 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2011-10-13 00:54:45 -0400 |
commit | 363c23a37c3631a0fb16df6b88bd5138677b818a (patch) | |
tree | ba48083177509119af8af8a74043c4cbfb923519 /ipaserver | |
parent | 77cc5e024601ae7be6ce706499d5f403c8b71408 (diff) | |
download | freeipa-363c23a37c3631a0fb16df6b88bd5138677b818a.tar.gz freeipa-363c23a37c3631a0fb16df6b88bd5138677b818a.tar.xz freeipa-363c23a37c3631a0fb16df6b88bd5138677b818a.zip |
Check /etc/hosts file in ipa-server-install
There may already be a record in /etc/hosts for chosen IP address
which may not be detected under some circumstances. Make sure
that /etc/hosts is checked properly.
https://fedorahosted.org/freeipa/ticket/1923
Diffstat (limited to 'ipaserver')
-rw-r--r-- | ipaserver/install/bindinstance.py | 2 | ||||
-rw-r--r-- | ipaserver/install/installutils.py | 28 |
2 files changed, 20 insertions, 10 deletions
diff --git a/ipaserver/install/bindinstance.py b/ipaserver/install/bindinstance.py index 8dbcdbd9..ddf54977 100644 --- a/ipaserver/install/bindinstance.py +++ b/ipaserver/install/bindinstance.py @@ -394,7 +394,7 @@ class BindInstance(service.Service): # get a connection to the DS self.ldap_connect() - if not installutils.record_in_hosts(self.ip_address, self.fqdn): + if installutils.record_in_hosts(self.ip_address, self.fqdn) is None: installutils.add_record_to_hosts(self.ip_address, self.fqdn) if not dns_container_exists(self.fqdn, self.suffix, realm=self.realm, diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py index ea629e5e..ca9a8261 100644 --- a/ipaserver/install/installutils.py +++ b/ipaserver/install/installutils.py @@ -203,7 +203,18 @@ def verify_fqdn(host_name, no_host_dns=False, local_hostname=True): else: print "Warning: Hostname (%s) not found in DNS" % host_name -def record_in_hosts(ip, host_name, file="/etc/hosts"): +def record_in_hosts(ip, host_name=None, file="/etc/hosts"): + """ + Search record in /etc/hosts - static table lookup for hostnames + + In case of match, returns a tuple of ip address and a list of + hostname aliases + When no record is matched, None is returned + + :param ip: IP address + :param host_name: Optional hostname to search + :param file: Optional path to the lookup table + """ hosts = open(file, 'r').readlines() for line in hosts: line = line.rstrip('\n') @@ -217,13 +228,17 @@ def record_in_hosts(ip, host_name, file="/etc/hosts"): if hosts_ip != ip: continue - if host_name in names: - return True + if host_name is not None: + if host_name in names: + return (hosts_ip, names) + else: + return None + return (hosts_ip, names) except IndexError: print "Warning: Erroneous line '%s' in %s" % (line, file) continue - return False + return None def add_record_to_hosts(ip, host_name, file="/etc/hosts"): hosts_fd = open(file, 'r+') @@ -242,11 +257,6 @@ def read_ip_address(host_name, fstore): else: break - ip = str(ip_parsed) - print "Adding ["+ip+" "+host_name+"] to your /etc/hosts file" - fstore.backup_file("/etc/hosts") - add_record_to_hosts(ip, host_name) - return ip_parsed def read_dns_forwarders(): |