diff options
Diffstat (limited to 'base/server')
-rw-r--r-- | base/server/python/pki/server/deployment/pkiparser.py | 47 | ||||
-rwxr-xr-x | base/server/sbin/pkispawn | 21 |
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) |