From 10e74165a827377ed3318d4d2b974fdbf0fab9db Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Wed, 8 Mar 2017 14:24:15 +0000 Subject: [PATCH] httpinstance: clean up /etc/httpd/alias on uninstall Restore cert8.db, key3.db, pwdfile.txt and secmod.db in /etc/httpd/alias from backup on uninstall. Files modified by IPA are kept with .ipasave suffix. https://pagure.io/freeipa/issue/4639 Reviewed-By: Martin Babinsky --- ipapython/certdb.py | 13 +++++++++++++ ipaserver/install/certs.py | 3 +++ ipaserver/install/httpinstance.py | 3 +++ 3 files changed, 19 insertions(+) diff --git a/ipapython/certdb.py b/ipapython/certdb.py index 6c89e778068d9ed1e9939077f7114463776e3516..f1410e5ae4290263573e9554ab4e66873d4344a1 100644 --- a/ipapython/certdb.py +++ b/ipapython/certdb.py @@ -169,6 +169,19 @@ class NSSDatabase(object): new_mode = filemode os.chmod(path, new_mode) + def restore(self): + for filename in NSS_FILES: + path = os.path.join(self.secdir, filename) + backup_path = path + '.orig' + save_path = path + '.ipasave' + try: + if os.path.exists(path): + os.rename(path, save_path) + if os.path.exists(backup_path): + os.rename(backup_path, path) + except OSError as e: + root_logger.debug(e) + def list_certs(self): """Return nicknames and cert flags for all certs in the database diff --git a/ipaserver/install/certs.py b/ipaserver/install/certs.py index 9f340b8678c55cffe2872df97c643c34857cfaa9..0ca971358030db6a6e7e410e58a984675bcf53ac 100644 --- a/ipaserver/install/certs.py +++ b/ipaserver/install/certs.py @@ -234,6 +234,9 @@ class CertDB(object): backup=True) self.set_perms(self.passwd_fname, write=True) + def restore(self): + self.nssdb.restore() + def list_certs(self): """ Return a tuple of tuples containing (nickname, trust) diff --git a/ipaserver/install/httpinstance.py b/ipaserver/install/httpinstance.py index ca3bcc87eec2c93a664db517df3eddecaaf565c2..f6f0b0c4f6acd648aa9f6f5d7400617613245473 100644 --- a/ipaserver/install/httpinstance.py +++ b/ipaserver/install/httpinstance.py @@ -555,6 +555,9 @@ class HTTPInstance(service.Service): ca_iface.Set('org.fedorahosted.certmonger.ca', 'external-helper', helper) + db = certs.CertDB(self.realm, paths.HTTPD_ALIAS_DIR) + db.restore() + for f in [paths.HTTPD_IPA_CONF, paths.HTTPD_SSL_CONF, paths.HTTPD_NSS_CONF]: try: self.fstore.restore_file(f) -- 2.12.1