summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/server/python/pki/server/deployment/pkiparser.py47
-rwxr-xr-xbase/server/sbin/pkispawn21
2 files changed, 37 insertions, 31 deletions
diff --git a/base/server/python/pki/server/deployment/pkiparser.py b/base/server/python/pki/server/deployment/pkiparser.py
index b7cece722..dba1f50f1 100644
--- a/base/server/python/pki/server/deployment/pkiparser.py
+++ b/base/server/python/pki/server/deployment/pkiparser.py
@@ -405,29 +405,50 @@ class PKIConfigParser:
port = self.pki_master_dict['pki_ds_ldap_port']
self.ds_connection = ldap.initialize(protocol + '://' + hostname + ':' + port)
- self.ds_connection.search_s('', ldap.SCOPE_BASE)
def ds_bind(self):
self.ds_connection.simple_bind_s(
self.pki_master_dict['pki_ds_bind_dn'],
self.pki_master_dict['pki_ds_password'])
- def ds_base_dn_exists(self):
- try:
- results = self.ds_connection.search_s(
- self.pki_master_dict['pki_ds_base_dn'],
- ldap.SCOPE_BASE)
+ def ds_search(self, key=None):
+ if key is None:
+ key = ''
+ self.ds_connection.search_s(key, ldap.SCOPE_BASE)
- if results is None or len(results) == 0:
- return False
+ def ds_close(self):
+ self.ds_connection.unbind_s()
- return True
+ def ds_verify_configuration(self):
- except ldap.NO_SUCH_OBJECT:
- return False
+ try:
+ self.ds_connect()
+ self.ds_bind()
+ self.ds_search()
+ except:
+ raise
+ finally:
+ self.ds_close()
- def ds_close(self):
- self.ds_connection.unbind_s()
+ def ds_base_dn_exists(self):
+ base_dn_exists = True
+ try:
+ self.ds_connect()
+ self.ds_bind()
+ self.ds_search()
+ try:
+ results = self.ds_search(self.pki_master_dict['pki_ds_base_dn'])
+
+ if results is None or len(results) == 0:
+ base_dn_exists = False
+
+ except ldap.NO_SUCH_OBJECT:
+ base_dn_exists = False
+ except:
+ raise
+ finally:
+ self.ds_close()
+ return base_dn_exists
def sd_connect(self):
self.sd_connection = pki.client.PKIConnection(
diff --git a/base/server/sbin/pkispawn b/base/server/sbin/pkispawn
index d048147e3..8e56ad101 100755
--- a/base/server/sbin/pkispawn
+++ b/base/server/sbin/pkispawn
@@ -182,26 +182,16 @@ def main(argv):
while True:
parser.read_text('Hostname', config.pki_subsystem, 'pki_ds_hostname')
parser.read_text('Port', config.pki_subsystem, 'pki_ds_ldap_port')
-
- try:
- parser.ds_connect()
- break
-
- except ldap.LDAPError as e:
- parser.print_text('ERROR: ' + e.message['desc'])
-
- while True:
parser.read_text('Bind DN', config.pki_subsystem, 'pki_ds_bind_dn')
parser.read_password('Password', config.pki_subsystem, 'pki_ds_password')
try:
- parser.ds_bind()
- break
+ parser.ds_verify_configuration()
except ldap.LDAPError as e:
parser.print_text('ERROR: ' + e.message['desc'])
+ continue
- while True:
parser.read_text('Base DN', config.pki_subsystem, 'pki_ds_base_dn')
try:
if not parser.ds_base_dn_exists():
@@ -222,8 +212,6 @@ def main(argv):
if remove == 'y' or remove == 'yes':
break
- parser.ds_close()
-
print
print "Security Domain:"
@@ -402,16 +390,13 @@ def main(argv):
extra=config.PKI_INDENTATION_LEVEL_0)
sys.exit(1)
- parser.ds_connect()
- parser.ds_bind()
+ parser.ds_verify_configuration()
if parser.ds_base_dn_exists() and\
not config.str2bool(parser.pki_master_dict['pki_ds_remove_data']):
print 'ERROR: Base DN already exists.'
sys.exit(1)
- parser.ds_close()
-
except ldap.LDAPError as e:
print 'ERROR: Unable to access directory server: ' + e.message['desc']
sys.exit(1)