mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Parse netmasks in IP addresses passed to server install.
ticket 1212
This commit is contained in:
committed by
Martin Kosek
parent
868d4e734e
commit
80b4b3d44b
@@ -37,9 +37,10 @@ def parse_options():
|
||||
sensitive=True, help="admin password")
|
||||
parser.add_option("-d", "--debug", dest="debug", action="store_true",
|
||||
default=False, help="print debugging information")
|
||||
parser.add_option("--ip-address", dest="ip_address", help="Master Server IP Address")
|
||||
parser.add_option("--ip-address", dest="ip_address",
|
||||
type="ipnet", help="Master Server IP Address")
|
||||
parser.add_option("--forwarder", dest="forwarders", action="append",
|
||||
help="Add a DNS forwarder")
|
||||
type="ipaddr", help="Add a DNS forwarder")
|
||||
parser.add_option("--no-forwarders", dest="no_forwarders", action="store_true",
|
||||
default=False, help="Do not add any DNS forwarders, use root servers instead")
|
||||
parser.add_option("--no-reverse", dest="no_reverse",
|
||||
@@ -105,12 +106,14 @@ def main():
|
||||
if options.ip_address:
|
||||
ip_address = options.ip_address
|
||||
else:
|
||||
ip_address = resolve_host(api.env.host)
|
||||
hostaddr = resolve_host(api.env.host)
|
||||
ip_address = hostaddr and ipautil.CheckedIPAddress(hostaddr)
|
||||
if not ip_address or not verify_ip_address(ip_address):
|
||||
if options.unattended:
|
||||
sys.exit("Unable to resolve IP address for host name")
|
||||
else:
|
||||
ip_address = read_ip_address(api.env.host, fstore)
|
||||
ip_address = str(ip_address)
|
||||
logging.debug("will use ip_address: %s\n", ip_address)
|
||||
|
||||
if options.no_forwarders:
|
||||
|
||||
@@ -61,7 +61,7 @@ def parse_options():
|
||||
parser.add_option("--setup-dns", dest="setup_dns", action="store_true",
|
||||
default=False, help="configure bind with our zone")
|
||||
parser.add_option("--forwarder", dest="forwarders", action="append",
|
||||
help="Add a DNS forwarder")
|
||||
type="ipaddr", help="Add a DNS forwarder")
|
||||
parser.add_option("--no-forwarders", dest="no_forwarders", action="store_true",
|
||||
default=False, help="Do not add any DNS forwarders, use root servers instead")
|
||||
parser.add_option("--no-reverse", dest="no_reverse", action="store_true",
|
||||
@@ -270,6 +270,8 @@ def install_bind(config, options):
|
||||
ip_address = resolve_host(config.host_name)
|
||||
if not ip_address:
|
||||
sys.exit("Unable to resolve IP address for host name")
|
||||
ip = installutils.parse_ip_address(ip_address)
|
||||
ip_address = str(ip)
|
||||
|
||||
create_reverse = True
|
||||
if options.unattended:
|
||||
@@ -305,6 +307,8 @@ def install_dns_records(config, options):
|
||||
ip_address = resolve_host(config.host_name)
|
||||
if not ip_address:
|
||||
sys.exit("Unable to resolve IP address for host name")
|
||||
ip = installutils.parse_ip_address(ip_address)
|
||||
ip_address = str(ip)
|
||||
|
||||
bind.add_master_dns_records(config.host_name, ip_address,
|
||||
config.realm_name, config.domain_name,
|
||||
|
||||
@@ -24,7 +24,6 @@ import logging, tempfile, shutil, os, pwd
|
||||
import traceback
|
||||
from ConfigParser import SafeConfigParser
|
||||
import krbV
|
||||
from optparse import OptionParser
|
||||
|
||||
from ipapython import ipautil
|
||||
from ipaserver.install import bindinstance, dsinstance, installutils, certs
|
||||
@@ -33,11 +32,12 @@ from ipaserver.install.replication import check_replication_plugin, enable_repli
|
||||
from ipaserver.install.installutils import resolve_host
|
||||
from ipaserver.plugins.ldap2 import ldap2
|
||||
from ipapython import version
|
||||
from ipapython.config import IPAOptionParser
|
||||
from ipalib import api, errors, util
|
||||
|
||||
def parse_options():
|
||||
usage = "%prog [options] FQDN (e.g. replica.example.com)"
|
||||
parser = OptionParser(usage=usage, version=version.VERSION)
|
||||
parser = IPAOptionParser(usage=usage, version=version.VERSION)
|
||||
|
||||
parser.add_option("--dirsrv_pkcs12", dest="dirsrv_pkcs12",
|
||||
help="install certificate for the directory server")
|
||||
@@ -54,7 +54,7 @@ def parse_options():
|
||||
parser.add_option("-p", "--password", dest="password",
|
||||
help="Directory Manager (existing master) password")
|
||||
parser.add_option("--ip-address", dest="ip_address",
|
||||
help="Add A and PTR records of the future replica")
|
||||
type="ipnet", help="Add A and PTR records of the future replica")
|
||||
parser.add_option("--ca", dest="ca_file", default="/root/cacert.p12",
|
||||
help="Location of CA PKCS#12 file, default /root/cacert.p12")
|
||||
parser.add_option("--no-pkinit", dest="setup_pkinit", action="store_false",
|
||||
@@ -79,7 +79,7 @@ def parse_options():
|
||||
parser.error("All PKCS#12 options are required if any are used.")
|
||||
|
||||
if options.ip_address:
|
||||
if not installutils.verify_ip_address(options.ip_address):
|
||||
if not installutils.verify_ip_address(options.ip_address, match_local=False):
|
||||
parser.error("Bad IP address")
|
||||
sys.exit(1)
|
||||
|
||||
@@ -426,11 +426,12 @@ def main():
|
||||
name = domain.pop(0)
|
||||
domain = ".".join(domain)
|
||||
|
||||
zone = add_zone(domain, nsaddr=options.ip_address)
|
||||
add_rr(zone, name, "A", options.ip_address)
|
||||
ip_address = str(options.ip_address)
|
||||
zone = add_zone(domain, nsaddr=ip_address)
|
||||
add_rr(zone, name, "A", ip_address)
|
||||
ns_ip_address = resolve_host(api.env.host)
|
||||
add_reverse_zone(options.ip_address, ns_ip_address)
|
||||
add_ptr_rr(options.ip_address, replica_fqdn)
|
||||
add_reverse_zone(ip_address, ns_ip_address)
|
||||
add_ptr_rr(ip_address, replica_fqdn)
|
||||
|
||||
try:
|
||||
if not os.geteuid()==0:
|
||||
|
||||
@@ -99,11 +99,12 @@ def parse_options():
|
||||
parser.add_option("", "--external_ca_file", dest="external_ca_file",
|
||||
help="File containing PKCS#10 of the external CA chain")
|
||||
parser.add_option("--hostname", dest="host_name", help="fully qualified name of server")
|
||||
parser.add_option("--ip-address", dest="ip_address", help="Master Server IP Address")
|
||||
parser.add_option("--ip-address", dest="ip_address",
|
||||
type="ipnet", help="Master Server IP Address")
|
||||
parser.add_option("--setup-dns", dest="setup_dns", action="store_true",
|
||||
default=False, help="configure bind with our zone")
|
||||
parser.add_option("--forwarder", dest="forwarders", action="append",
|
||||
help="Add a DNS forwarder")
|
||||
type="ipaddr", help="Add a DNS forwarder")
|
||||
parser.add_option("--no-forwarders", dest="no_forwarders", action="store_true",
|
||||
default=False, help="Do not add any DNS forwarders, use root servers instead")
|
||||
parser.add_option("--no-reverse", dest="no_reverse", action="store_true",
|
||||
@@ -593,37 +594,34 @@ def main():
|
||||
domain_name = domain_name.lower()
|
||||
|
||||
# Check we have a public IP that is associated with the hostname
|
||||
ip = resolve_host(host_name)
|
||||
if ip is None:
|
||||
if options.ip_address:
|
||||
ip = options.ip_address
|
||||
hostaddr = resolve_host(host_name)
|
||||
if hostaddr is not None:
|
||||
ip = CheckedIPAddress(hostaddr)
|
||||
else:
|
||||
ip = options.ip_address
|
||||
if ip is None and options.unattended:
|
||||
sys.exit("Unable to resolve IP address for host name")
|
||||
|
||||
if not verify_ip_address(ip):
|
||||
ip = ""
|
||||
ip = None
|
||||
if options.unattended:
|
||||
sys.exit(1)
|
||||
|
||||
if options.ip_address and options.ip_address != ip:
|
||||
if options.setup_dns:
|
||||
if not verify_ip_address(options.ip_address):
|
||||
return 1
|
||||
ip = options.ip_address
|
||||
else:
|
||||
if options.ip_address:
|
||||
if options.ip_address != ip and not options.setup_dns:
|
||||
print >>sys.stderr, "Error: the hostname resolves to an IP address that is different"
|
||||
print >>sys.stderr, "from the one provided on the command line. Please fix your DNS"
|
||||
print >>sys.stderr, "or /etc/hosts file and restart the installation."
|
||||
return 1
|
||||
|
||||
if options.unattended:
|
||||
if not ip:
|
||||
sys.exit("Unable to resolve IP address")
|
||||
ip = options.ip_address
|
||||
if not verify_ip_address(ip):
|
||||
return 1
|
||||
|
||||
if not ip:
|
||||
if ip is None:
|
||||
ip = read_ip_address(host_name, fstore)
|
||||
logging.debug("read ip_address: %s\n" % ip)
|
||||
ip_address = ip
|
||||
logging.debug("read ip_address: %s\n" % str(ip))
|
||||
ip_address = str(ip)
|
||||
|
||||
print "The IPA Master Server will be configured with"
|
||||
print "Hostname: " + host_name
|
||||
|
||||
Reference in New Issue
Block a user