summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinstall/tools/ipa-replica-manage7
-rw-r--r--ipapython/config.py10
-rw-r--r--ipaserver/install/dsinstance.py6
-rw-r--r--ipaserver/install/replication.py2
4 files changed, 18 insertions, 7 deletions
diff --git a/install/tools/ipa-replica-manage b/install/tools/ipa-replica-manage
index b2e819d1e..cabc0106f 100755
--- a/install/tools/ipa-replica-manage
+++ b/install/tools/ipa-replica-manage
@@ -31,6 +31,7 @@ from ipapython import version
from ipalib import api, errors, util
from ipapython.ipa_log_manager import *
from ipapython.dn import DN
+from ipapython.config import IPAOptionParser
CACERT = "/etc/ipa/ca.crt"
@@ -48,16 +49,14 @@ commands = {
}
def parse_options():
- from optparse import OptionParser
-
- parser = OptionParser(version=version.VERSION)
+ parser = IPAOptionParser(version=version.VERSION)
parser.add_option("-H", "--host", dest="host", help="starting host")
parser.add_option("-p", "--password", dest="dirman_passwd", help="Directory Manager password")
parser.add_option("-v", "--verbose", dest="verbose", action="store_true", default=False,
help="provide additional information")
parser.add_option("-f", "--force", dest="force", action="store_true", default=False,
help="ignore some types of errors")
- parser.add_option("--binddn", dest="binddn", default=None,
+ parser.add_option("--binddn", dest="binddn", default=None, type="dn",
help="Bind DN to use with remote server")
parser.add_option("--bindpw", dest="bindpw", default=None,
help="Password for Bind DN to use with remote server")
diff --git a/ipapython/config.py b/ipapython/config.py
index 349c91767..b9b0b4e3d 100644
--- a/ipapython/config.py
+++ b/ipapython/config.py
@@ -22,6 +22,7 @@ from optparse import Option, Values, OptionParser, IndentedHelpFormatter, Option
from copy import copy
from dns import resolver, rdatatype
from dns.exception import DNSException
+from ipapython.dn import DN
import dns.name
import socket
@@ -59,15 +60,22 @@ def check_ip_option(option, opt, value):
except Exception as e:
raise OptionValueError("option %s: invalid IP address %s: %s" % (opt, value, e))
+def check_dn_option(option, opt, value):
+ try:
+ return DN(value)
+ except Exception, e:
+ raise OptionValueError("option %s: invalid DN: %s" % (opt, e))
+
class IPAOption(Option):
"""
optparse.Option subclass with support of options labeled as
security-sensitive such as passwords.
"""
ATTRS = Option.ATTRS + ["sensitive", "ip_local", "ip_netmask"]
- TYPES = Option.TYPES + ("ip",)
+ TYPES = Option.TYPES + ("ip", "dn")
TYPE_CHECKER = copy(Option.TYPE_CHECKER)
TYPE_CHECKER["ip"] = check_ip_option
+ TYPE_CHECKER["dn"] = check_dn_option
class IPAOptionParser(OptionParser):
"""
diff --git a/ipaserver/install/dsinstance.py b/ipaserver/install/dsinstance.py
index bf6677381..5e6aa0512 100644
--- a/ipaserver/install/dsinstance.py
+++ b/ipaserver/install/dsinstance.py
@@ -313,6 +313,10 @@ class DsInstance(service.Service):
def __setup_sub_dict(self):
server_root = find_server_root()
+ try:
+ idrange_size = self.idmax - self.idstart + 1
+ except TypeError:
+ idrange_size = None
self.sub_dict = dict(FQDN=self.fqdn, SERVERID=self.serverid,
PASSWORD=self.dm_password,
RANDOM_PASSWORD=self.generate_random(),
@@ -323,7 +327,7 @@ class DsInstance(service.Service):
IDMAX=self.idmax, HOST=self.fqdn,
ESCAPED_SUFFIX=str(self.suffix),
GROUP=DS_GROUP,
- IDRANGE_SIZE=self.idmax-self.idstart+1
+ IDRANGE_SIZE=idrange_size
)
def __create_ds_user(self):
diff --git a/ipaserver/install/replication.py b/ipaserver/install/replication.py
index 8fe73ca77..950e8ffc6 100644
--- a/ipaserver/install/replication.py
+++ b/ipaserver/install/replication.py
@@ -818,7 +818,7 @@ class ReplicationManager(object):
ad_conn.set_option(ldap.OPT_X_TLS_CACERTFILE, cacert)
ad_conn.set_option(ldap.OPT_X_TLS_NEWCTX, 0)
ad_conn.start_tls_s()
- ad_conn.simple_bind_s(ad_binddn, ad_pwd)
+ ad_conn.simple_bind_s(str(ad_binddn), ad_pwd)
res = ad_conn.search_s("", ldap.SCOPE_BASE, '(objectClass=*)',
['defaultNamingContext'])
for dn,entry in res: