diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2d87067 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/freeipa-4.7.90.pre1.tar.gz diff --git a/.ipa.metadata b/.ipa.metadata new file mode 100644 index 0000000..ff45819 --- /dev/null +++ b/.ipa.metadata @@ -0,0 +1 @@ +a61a3e7f174a021934368252c4773da6238de820 SOURCES/freeipa-4.7.90.pre1.tar.gz diff --git a/SOURCES/0001-Correct-default-fontawesome-path-broken-by-da2cf1c5.patch b/SOURCES/0001-Correct-default-fontawesome-path-broken-by-da2cf1c5.patch new file mode 100644 index 0000000..5d479d6 --- /dev/null +++ b/SOURCES/0001-Correct-default-fontawesome-path-broken-by-da2cf1c5.patch @@ -0,0 +1,30 @@ +From 486ba017ceab1fb240f2fc48fea6169bc8c97319 Mon Sep 17 00:00:00 2001 +From: Adam Williamson <awilliam@redhat.com> +Date: Wed, 1 May 2019 16:19:53 -0700 +Subject: [PATCH] Correct default fontawesome path (broken by da2cf1c5) + +On Fedora/RHEL, it does not have a dash in it. The changes in +da2cf1c5 inadvertently added a dash to the path in the 'base' +paths definition (used on Fedora/RHEL), so the font wasn't found. + +Signed-off-by: Adam Williamson <awilliam@redhat.com> +--- + ipaplatform/base/paths.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaplatform/base/paths.py b/ipaplatform/base/paths.py +index 1cd2591bc..e1d396690 100644 +--- a/ipaplatform/base/paths.py ++++ b/ipaplatform/base/paths.py +@@ -249,7 +249,7 @@ class BasePathNamespace: + USERADD = "/usr/sbin/useradd" + FONTS_DIR = "/usr/share/fonts" + FONTS_OPENSANS_DIR = "/usr/share/fonts/open-sans" +- FONTS_FONTAWESOME_DIR = "/usr/share/fonts/font-awesome" ++ FONTS_FONTAWESOME_DIR = "/usr/share/fonts/fontawesome" + USR_SHARE_IPA_DIR = "/usr/share/ipa/" + USR_SHARE_IPA_CLIENT_DIR = "/usr/share/ipa/client" + CA_TOPOLOGY_ULDIF = "/usr/share/ipa/ca-topology.uldif" +-- +2.21.0 + diff --git a/SOURCES/0001-No-need-to-call-rhel-specific-domainname-service.patch b/SOURCES/0001-No-need-to-call-rhel-specific-domainname-service.patch new file mode 100644 index 0000000..bcc4ceb --- /dev/null +++ b/SOURCES/0001-No-need-to-call-rhel-specific-domainname-service.patch @@ -0,0 +1,32 @@ +From b3378c32603e83ea3d4651cee3af99e644a30457 Mon Sep 17 00:00:00 2001 +From: Rob Crittenden <rcritten@redhat.com> +Date: Fri, 20 Jul 2018 11:06:55 -0400 +Subject: [PATCH] No need to call rhel-specific domainname service + +It was moved upstream into hostname package which named it +nis-domainname. When it was in the initscripts package there were +separate fedora-domainname and rhel-domainname services. + +From F29+ it will be nis-domainname. We can use that as well in +RHEL 8. +--- + ipaplatform/rhel/services.py | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/ipaplatform/rhel/services.py b/ipaplatform/rhel/services.py +index 1403d08..06fa633 100644 +--- a/ipaplatform/rhel/services.py ++++ b/ipaplatform/rhel/services.py +@@ -30,9 +30,6 @@ from ipaplatform.redhat import services as redhat_services + # to their actual systemd service names + rhel_system_units = redhat_services.redhat_system_units + +-# Service that sets domainname on RHEL is called rhel-domainname.service +-rhel_system_units['domainname'] = 'rhel-domainname.service' +- + + # Service classes that implement RHEL-specific behaviour + +-- +2.13.6 + diff --git a/SOURCES/0001-revert-minssf-defaults.patch b/SOURCES/0001-revert-minssf-defaults.patch new file mode 100644 index 0000000..777c13e --- /dev/null +++ b/SOURCES/0001-revert-minssf-defaults.patch @@ -0,0 +1,136 @@ +From 8177734d3b6c141c251c74ee29d223a7d414ab13 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Wed, 1 May 2019 21:25:31 +0300 +Subject: [PATCH] Revert "Require a minimum SASL security factor of 56" + +This reverts commit 350954589774499d99bf87cb5631c664bb0707c4. +--- + install/share/Makefile.am | 1 - + install/share/min-ssf.ldif | 14 -------------- + ipalib/constants.py | 3 --- + ipapython/ipaldap.py | 17 ++--------------- + ipaserver/install/dsinstance.py | 5 ----- + 5 files changed, 2 insertions(+), 38 deletions(-) + delete mode 100644 install/share/min-ssf.ldif + +diff --git a/install/share/Makefile.am b/install/share/Makefile.am +index be83bdf75..8d039d95c 100644 +--- a/install/share/Makefile.am ++++ b/install/share/Makefile.am +@@ -94,7 +94,6 @@ dist_app_DATA = \ + ipa-kdc-proxy.conf.template \ + ipa-pki-proxy.conf.template \ + ipa-rewrite.conf.template \ +- min-ssf.ldif \ + ipaca_default.ini \ + ipaca_customize.ini \ + ipaca_softhsm2.ini \ +diff --git a/install/share/min-ssf.ldif b/install/share/min-ssf.ldif +deleted file mode 100644 +index 1c2566f84..000000000 +--- a/install/share/min-ssf.ldif ++++ /dev/null +@@ -1,14 +0,0 @@ +-# config +-# pretend SSF for LDAPI connections +-# nsslapd-localssf must be equal to or greater than nsslapd-minssf +-dn: cn=config +-changetype: modify +-replace: nsslapd-localssf +-nsslapd-localssf: 256 +- +-# minimum security strength factor for SASL and TLS +-# 56 is considered weak, but some old clients announce wrong SSF. +-dn: cn=config +-changetype: modify +-replace: nsslapd-minssf +-nsslapd-minssf: 56 +diff --git a/ipalib/constants.py b/ipalib/constants.py +index bcf6f3373..c22dd26ae 100644 +--- a/ipalib/constants.py ++++ b/ipalib/constants.py +@@ -311,9 +311,6 @@ TLS_VERSIONS = [ + ] + TLS_VERSION_MINIMAL = "tls1.0" + +-# minimum SASL secure strength factor for LDAP connections +-# 56 provides backwards compatibility with old libraries. +-LDAP_SSF_MIN_THRESHOLD = 56 + + # Use cache path + USER_CACHE_PATH = ( +diff --git a/ipapython/ipaldap.py b/ipapython/ipaldap.py +index d9d67be1d..9ff443fe4 100644 +--- a/ipapython/ipaldap.py ++++ b/ipapython/ipaldap.py +@@ -43,9 +43,7 @@ import six + + # pylint: disable=ipa-forbidden-import + from ipalib import errors, x509, _ +-from ipalib.constants import ( +- LDAP_GENERALIZED_TIME_FORMAT, LDAP_SSF_MIN_THRESHOLD +-) ++from ipalib.constants import LDAP_GENERALIZED_TIME_FORMAT + # pylint: enable=ipa-forbidden-import + from ipaplatform.paths import paths + from ipapython.ipautil import format_netloc, CIDict +@@ -105,8 +103,7 @@ def realm_to_ldapi_uri(realm_name): + return 'ldapi://' + ldapurl.ldapUrlEscape(socketname) + + +-def ldap_initialize(uri, cacertfile=None, +- ssf_min_threshold=LDAP_SSF_MIN_THRESHOLD): ++def ldap_initialize(uri, cacertfile=None): + """Wrapper around ldap.initialize() + + The function undoes global and local ldap.conf settings that may cause +@@ -117,10 +114,6 @@ def ldap_initialize(uri, cacertfile=None, + locations, also known as system-wide trust store. + * Cert validation is enforced. + * SSLv2 and SSLv3 are disabled. +- * Require a minimum SASL security factor of 56. That level ensures +- data integrity and confidentiality. Although at least AES128 is +- enforced pretty much everywhere, 56 is required for backwards +- compatibility with systems that announce wrong SSF. + """ + conn = ldap.initialize(uri) + +@@ -128,12 +121,6 @@ def ldap_initialize(uri, cacertfile=None, + conn.set_option(ldap.OPT_X_SASL_NOCANON, ldap.OPT_ON) + + if not uri.startswith('ldapi://'): +- # require a minimum SSF for TCP connections, but don't lower SSF_MIN +- # if the current value is already larger. +- cur_min_ssf = conn.get_option(ldap.OPT_X_SASL_SSF_MIN) +- if cur_min_ssf < ssf_min_threshold: +- conn.set_option(ldap.OPT_X_SASL_SSF_MIN, ssf_min_threshold) +- + if cacertfile: + if not os.path.isfile(cacertfile): + raise IOError(errno.ENOENT, cacertfile) +diff --git a/ipaserver/install/dsinstance.py b/ipaserver/install/dsinstance.py +index 8240e3043..9f05db1db 100644 +--- a/ipaserver/install/dsinstance.py ++++ b/ipaserver/install/dsinstance.py +@@ -324,8 +324,6 @@ class DsInstance(service.Service): + else: + self.step("importing CA certificates from LDAP", + self.__import_ca_certs) +- # set min SSF after DS is configured for TLS +- self.step("require minimal SSF", self.__min_ssf) + self.step("restarting directory server", self.__restart_instance) + + self.start_creation() +@@ -1243,9 +1241,6 @@ class DsInstance(service.Service): + dm_password=self.dm_password + ) + +- def __min_ssf(self): +- self._ldap_mod("min-ssf.ldif") +- + def __add_sudo_binduser(self): + self._ldap_mod("sudobind.ldif", self.sub_dict) + +-- +2.21.0 + diff --git a/SOURCES/0002-upgrade-adtrust-when-no-trusts.patch b/SOURCES/0002-upgrade-adtrust-when-no-trusts.patch new file mode 100644 index 0000000..b98c49f --- /dev/null +++ b/SOURCES/0002-upgrade-adtrust-when-no-trusts.patch @@ -0,0 +1,44 @@ +From 528a21996734467be193673e4f987e7e3acc3ad9 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sat, 11 May 2019 11:54:40 +0300 +Subject: [PATCH] upgrade: adtrust - catch empty result when retrieving list of + trusts + +Upgrade failure when ipa-server-upgrade is being run on a system with no +trust established but trust configured + +Fixes: https://pagure.io/freeipa/issue/7939 +--- + ipaserver/install/plugins/adtrust.py | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/ipaserver/install/plugins/adtrust.py b/ipaserver/install/plugins/adtrust.py +index 6b4e2caa2..cdc3a8b04 100644 +--- a/ipaserver/install/plugins/adtrust.py ++++ b/ipaserver/install/plugins/adtrust.py +@@ -609,11 +609,17 @@ class update_tdo_to_new_layout(Updater): + + trusts_dn = self.api.env.container_adtrusts + self.api.env.basedn + +- trusts = ldap.get_entries( +- base_dn=trusts_dn, +- scope=ldap.SCOPE_ONELEVEL, +- filter=self.trust_filter, +- attrs_list=self.trust_attrs) ++ # We might be in a situation when no trusts exist yet ++ # In such case there is nothing to upgrade but we have to catch ++ # an exception or it will abort the whole upgrade process ++ try: ++ trusts = ldap.get_entries( ++ base_dn=trusts_dn, ++ scope=ldap.SCOPE_ONELEVEL, ++ filter=self.trust_filter, ++ attrs_list=self.trust_attrs) ++ except errors.EmptyResult: ++ trusts = [] + + # For every trust, retrieve its principals and convert + for t_entry in trusts: +-- +2.21.0 + diff --git a/SOURCES/1001-Change-branding-to-IPA-and-Identity-Management.patch b/SOURCES/1001-Change-branding-to-IPA-and-Identity-Management.patch new file mode 100644 index 0000000..dd6dc07 --- /dev/null +++ b/SOURCES/1001-Change-branding-to-IPA-and-Identity-Management.patch @@ -0,0 +1,2748 @@ +From 63b3030e2e2f6411ad29448746b96bb9658467f8 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 02/72] client/man/default.conf.5: Change branding to IPA + and Identity Management + +--- + client/man/default.conf.5 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/client/man/default.conf.5 b/client/man/default.conf.5 +index f21d9d5b7..d6c1e42d1 100644 +--- a/client/man/default.conf.5 ++++ b/client/man/default.conf.5 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@@redhat.com> + .\" +-.TH "default.conf" "5" "Feb 21 2011" "FreeIPA" "FreeIPA Manual Pages" ++.TH "default.conf" "5" "Feb 21 2011" "IPA" "IPA Manual Pages" + .SH "NAME" + default.conf \- IPA configuration file + .SH "SYNOPSIS" +-- +2.17.1 + + +From 3fe816976ea30d363ae5c6086b8daaaadaa5d7f7 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 03/72] client/man/ipa-certupdate.1: Change branding to IPA + and Identity Management + +--- + client/man/ipa-certupdate.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/client/man/ipa-certupdate.1 b/client/man/ipa-certupdate.1 +index d95790a36..431b395a9 100644 +--- a/client/man/ipa-certupdate.1 ++++ b/client/man/ipa-certupdate.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Jan Cholasta <jcholast@redhat.com> + .\" +-.TH "ipa-certupdate" "1" "Jul 2 2014" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-certupdate" "1" "Jul 2 2014" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-certupdate \- Update local IPA certificate databases with certificates from the server + .SH "SYNOPSIS" +-- +2.17.1 + + +From eca4cf0eabb4dee96ca01c02910153147e58ec4d Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 04/72] client/man/ipa-client-automount.1: Change branding + to IPA and Identity Management + +--- + client/man/ipa-client-automount.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/client/man/ipa-client-automount.1 b/client/man/ipa-client-automount.1 +index 343f64160..3f7c7d506 100644 +--- a/client/man/ipa-client-automount.1 ++++ b/client/man/ipa-client-automount.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-client-automount" "1" "May 25 2012" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-client-automount" "1" "May 25 2012" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-client\-automount \- Configure automount and NFS for IPA + .SH "SYNOPSIS" +-- +2.17.1 + + +From e4097608a167f41998e863dfed0e3d135c54b6a0 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 05/72] client/man/ipa-client-install.1: Change branding to + IPA and Identity Management + +--- + client/man/ipa-client-install.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/client/man/ipa-client-install.1 b/client/man/ipa-client-install.1 +index a20bec9a1..d7347ed37 100644 +--- a/client/man/ipa-client-install.1 ++++ b/client/man/ipa-client-install.1 +@@ -1,7 +1,7 @@ + .\" A man page for ipa-client-install + .\" Copyright (C) 2008-2016 FreeIPA Contributors see COPYING for license + .\" +-.TH "ipa-client-install" "1" "Dec 19 2016" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-client-install" "1" "Dec 19 2016" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-client\-install \- Configure an IPA client + .SH "SYNOPSIS" +-- +2.17.1 + + +From 3bfd21f6778e288b5094262aa481a835b49cc0f4 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 06/72] client/man/ipa-getkeytab.1: Change branding to IPA + and Identity Management + +--- + client/man/ipa-getkeytab.1 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/client/man/ipa-getkeytab.1 b/client/man/ipa-getkeytab.1 +index 20ceee2e6..061798693 100644 +--- a/client/man/ipa-getkeytab.1 ++++ b/client/man/ipa-getkeytab.1 +@@ -17,7 +17,7 @@ + .\" Author: Karl MacMillan <kmacmill@redhat.com> + .\" Author: Simo Sorce <ssorce@redhat.com> + .\" +-.TH "ipa-getkeytab" "1" "Oct 10 2007" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-getkeytab" "1" "Oct 10 2007" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-getkeytab \- Get a keytab for a Kerberos principal + .SH "SYNOPSIS" +@@ -117,7 +117,7 @@ GSSAPI or EXTERNAL. + \fB\-r\fR + Retrieve mode. Retrieve an existing key from the server instead of generating a + new one. This is incompatible with the \-\-password option, and will work only +-against a FreeIPA server more recent than version 3.3. The user requesting the ++against a IPA server more recent than version 3.3. The user requesting the + keytab must have access to the keys for this operation to succeed. + .SH "EXAMPLES" + Add and retrieve a keytab for the NFS service principal on +-- +2.17.1 + + +From 812ccffd549367cac3e4d2896b231b7b278e0b92 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 07/72] client/man/ipa-join.1: Change branding to IPA and + Identity Management + +--- + client/man/ipa-join.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/client/man/ipa-join.1 b/client/man/ipa-join.1 +index d88160784..30b667558 100644 +--- a/client/man/ipa-join.1 ++++ b/client/man/ipa-join.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-join" "1" "Oct 8 2009" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-join" "1" "Oct 8 2009" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-join \- Join a machine to an IPA realm and get a keytab for the host service principal + .SH "SYNOPSIS" +-- +2.17.1 + + +From 3cac7f131059c01306b1db34fc30345add3fcf11 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 08/72] client/man/ipa-rmkeytab.1: Change branding to IPA + and Identity Management + +--- + client/man/ipa-rmkeytab.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/client/man/ipa-rmkeytab.1 b/client/man/ipa-rmkeytab.1 +index 53f775439..2c8218c94 100644 +--- a/client/man/ipa-rmkeytab.1 ++++ b/client/man/ipa-rmkeytab.1 +@@ -17,7 +17,7 @@ + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" + .\" +-.TH "ipa-rmkeytab" "1" "Oct 30 2009" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-rmkeytab" "1" "Oct 30 2009" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-rmkeytab \- Remove a kerberos principal from a keytab + .SH "SYNOPSIS" +-- +2.17.1 + + +From 0373bb1499f50bf4c04becabf2e773dd5977060e Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 09/72] client/man/ipa.1: Change branding to IPA and + Identity Management + +--- + client/man/ipa.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/client/man/ipa.1 b/client/man/ipa.1 +index f9fae7c0d..2fb21b52d 100644 +--- a/client/man/ipa.1 ++++ b/client/man/ipa.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Pavel Zuna <pzuna@redhat.com> + .\" +-.TH "ipa" "1" "Apr 29 2016" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa" "1" "Apr 29 2016" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa \- IPA command\-line interface + .SH "SYNOPSIS" +-- +2.17.1 + + +From 36b7dce706ec2b0b650c51cea24be0655fd0c096 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 10/72] install/html/ssbrowser.html: Change branding to IPA + and Identity Management + +--- + install/html/ssbrowser.html | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/html/ssbrowser.html b/install/html/ssbrowser.html +index faa7e657b..89ada7cb1 100644 +--- a/install/html/ssbrowser.html ++++ b/install/html/ssbrowser.html +@@ -2,7 +2,7 @@ + <html> + <head> + <meta charset="utf-8"> +- <title>IPA: Identity Policy Audit</title> ++ <title>Identity Management</title> + <script type="text/javascript" src="../ui/js/libs/loader.js"></script> + <script type="text/javascript"> + var dojoConfig = { +@@ -69,7 +69,7 @@ + + <nav class="navbar navbar-default navbar-pf" role="navigation"> + <div class="navbar-header"> +- <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="FreeIPA"></a> ++ <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="Identity Management"></a> + </div> + </nav> + +-- +2.17.1 + + +From 9273d2fdee9baef212eeaac941b7c8b497d50728 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 11/72] install/html/unauthorized.html: Change branding to + IPA and Identity Management + +--- + install/html/unauthorized.html | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/html/unauthorized.html b/install/html/unauthorized.html +index 630982da8..b8c64d69d 100644 +--- a/install/html/unauthorized.html ++++ b/install/html/unauthorized.html +@@ -2,7 +2,7 @@ + <html> + <head> + <meta charset="utf-8"> +- <title>IPA: Identity Policy Audit</title> ++ <title>Identity Management</title> + <script type="text/javascript" src="../ui/js/libs/loader.js"></script> + <script type="text/javascript"> + var dojoConfig = { +@@ -62,7 +62,7 @@ + + <nav class="navbar navbar-default navbar-pf" role="navigation"> + <div class="navbar-header"> +- <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="FreeIPA"></a> ++ <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="Identity Management"></a> + </div> + </nav> + +-- +2.17.1 + + +From b9d7e2a0d08d8d03f1fbaaae6268292934f894f0 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 12/72] install/migration/index.html: Change branding to IPA + and Identity Management + +--- + install/migration/index.html | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/migration/index.html b/install/migration/index.html +index fca517cdc..b5ac1f6df 100644 +--- a/install/migration/index.html ++++ b/install/migration/index.html +@@ -2,7 +2,7 @@ + <html> + <head> + <meta charset="utf-8"> +- <title>IPA: Identity Policy Audit</title> ++ <title>Identity Management</title> + + <!--[if IE]> + <meta id="ie-detector"> +-- +2.17.1 + + +From 9a2d23539ec1d3e72f2bcfda319c78994d8c8b73 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 13/72] install/share/schema.d/README: Change branding to + IPA and Identity Management + +--- + install/share/schema.d/README | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/share/schema.d/README b/install/share/schema.d/README +index 19e3e6832..2a92ec6ae 100644 +--- a/install/share/schema.d/README ++++ b/install/share/schema.d/README +@@ -7,8 +7,8 @@ schema files during the run of ipa-server-upgrade utility. Therefore, they are + also installed when upgrade happens within the process of ipa-server-install. + + The directory is installed as /usr/share/ipa/schema.d and is owned by a +-freeipa-server-common package. Therefore, a 3rd-party plugin would need to +-depend on the freeipa-server-common package if it delivers the schema file(s). ++ipa-server-common package. Therefore, a 3rd-party plugin would need to ++depend on the ipa-server-common package if it delivers the schema file(s). + + You may place your schema files in a subdirectory too, the code that loads + schema files processes recursively all subdirectories of schema.d. +-- +2.17.1 + + +From 8cdc33d0bfc113d4391c75470b262c82ddf39a51 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 14/72] install/tools/ipa-adtrust-install.in: Change + branding to IPA and Identity Management + +--- + install/tools/ipa-adtrust-install.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/tools/ipa-adtrust-install.in b/install/tools/ipa-adtrust-install.in +index cb0b1a17a..3cc680f3a 100644 +--- a/install/tools/ipa-adtrust-install.in ++++ b/install/tools/ipa-adtrust-install.in +@@ -141,11 +141,11 @@ def main(): + "==============") + print("This program will setup components needed to establish trust to " + "AD domains for") +- print("the FreeIPA Server.") ++ print("the IPA Server.") + print("") + print("This includes:") + print(" * Configure Samba") +- print(" * Add trust related objects to FreeIPA LDAP server") ++ print(" * Add trust related objects to IPA LDAP server") + # TODO: + # print " * Add a SID to all users and Posix groups" + print("") +-- +2.17.1 + + +From 8eabc86504ea14b8b0c9f7dfd03e9964782a6707 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 15/72] install/tools/ipa-replica-conncheck.in: Change + branding to IPA and Identity Management + +--- + install/tools/ipa-replica-conncheck.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/ipa-replica-conncheck.in b/install/tools/ipa-replica-conncheck.in +index 82fa170c6..413d2cb66 100644 +--- a/install/tools/ipa-replica-conncheck.in ++++ b/install/tools/ipa-replica-conncheck.in +@@ -290,7 +290,7 @@ class PortResponder(threading.Thread): + self._sockets = [] + self._close = False + self._close_lock = threading.Lock() +- self.responder_data = b'FreeIPA' ++ self.responder_data = b'IPA' + self.ports_opened = False + self.ports_open_cond = threading.Condition() + +-- +2.17.1 + + +From 54fe67b68c08a617748d5ab46201141cf0d3f39a Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 16/72] install/tools/man/ipa-adtrust-install.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-adtrust-install.1 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/tools/man/ipa-adtrust-install.1 b/install/tools/man/ipa-adtrust-install.1 +index b11065806..f70f316f6 100644 +--- a/install/tools/man/ipa-adtrust-install.1 ++++ b/install/tools/man/ipa-adtrust-install.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Sumit Bose <sbose@redhat.com> + .\" +-.TH "ipa-adtrust-install" "1" "April 11 2017" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-adtrust-install" "1" "April 11 2017" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-adtrust\-install \- Prepare an IPA server to be able to establish trust relationships with AD domains + .SH "SYNOPSIS" +@@ -87,7 +87,7 @@ ldapmodify command info the directory server. + .TP + \fB\-\-add\-agents\fR + Add IPA masters to the list that allows to serve information about +-users from trusted forests. Starting with FreeIPA 4.2, a regular IPA master ++users from trusted forests. Starting with IPA 4.2, a regular IPA master + can provide this information to SSSD clients. IPA masters aren't added + to the list automatically as restart of the LDAP service on each of them + is required. The host where ipa\-adtrust\-install is being run is added +-- +2.17.1 + + +From bcedaa67083688b766a713b392cb5a3df350fe41 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:39 +0300 +Subject: [PATCH 17/72] install/tools/man/ipa-advise.1: Change branding to + IPA and Identity Management + +--- + install/tools/man/ipa-advise.1 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/tools/man/ipa-advise.1 b/install/tools/man/ipa-advise.1 +index 4c494aab9..515bbddbe 100644 +--- a/install/tools/man/ipa-advise.1 ++++ b/install/tools/man/ipa-advise.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Tomas Babej <tbabej@redhat.com> + .\" +-.TH "ipa-advise" "1" "Jun 10 2013" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-advise" "1" "Jun 10 2013" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-advise \- Provide configurations advice for various use cases. + .SH "SYNOPSIS" +@@ -41,4 +41,4 @@ Log to the given file + .SH "EXIT STATUS" + 0 if the command was successful + +-1 if an error occurred +\ No newline at end of file ++1 if an error occurred +-- +2.17.1 + + +From 610ffd04d15ab82fb34abd068785cdbfa7bd094c Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 18/72] install/tools/man/ipa-backup.1: Change branding to + IPA and Identity Management + +--- + install/tools/man/ipa-backup.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-backup.1 b/install/tools/man/ipa-backup.1 +index 77081b61d..8f3f71282 100644 +--- a/install/tools/man/ipa-backup.1 ++++ b/install/tools/man/ipa-backup.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-backup" "1" "Mar 22 2013" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-backup" "1" "Mar 22 2013" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-backup \- Back up an IPA master + .SH "SYNOPSIS" +-- +2.17.1 + + +From 1b71763bbf751b932118aa79b79c8dbd21e00ed6 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 19/72] install/tools/man/ipa-ca-install.1: Change branding + to IPA and Identity Management + +--- + install/tools/man/ipa-ca-install.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-ca-install.1 b/install/tools/man/ipa-ca-install.1 +index 5ac7e2b75..edb25be70 100644 +--- a/install/tools/man/ipa-ca-install.1 ++++ b/install/tools/man/ipa-ca-install.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-ca-install" "1" "Mar 30 2017" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-ca-install" "1" "Mar 30 2017" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-ca\-install \- Install a CA on a server + .SH "SYNOPSIS" +-- +2.17.1 + + +From 352f373c2daefa96fd46906d9fbeac0a6817c4c7 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 20/72] install/tools/man/ipa-cacert-manage.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-cacert-manage.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-cacert-manage.1 b/install/tools/man/ipa-cacert-manage.1 +index bacd56b5a..ed69e8435 100644 +--- a/install/tools/man/ipa-cacert-manage.1 ++++ b/install/tools/man/ipa-cacert-manage.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Jan Cholasta <jcholast@redhat.com> + .\" +-.TH "ipa-cacert-manage" "1" "Aug 12 2013" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-cacert-manage" "1" "Aug 12 2013" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-cacert\-manage \- Manage CA certificates in IPA + .SH "SYNOPSIS" +-- +2.17.1 + + +From 0f35caa7b5ffce35f85c99e0fac3fe16a92050a1 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 21/72] install/tools/man/ipa-compat-manage.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-compat-manage.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-compat-manage.1 b/install/tools/man/ipa-compat-manage.1 +index f22b1743e..26470331a 100644 +--- a/install/tools/man/ipa-compat-manage.1 ++++ b/install/tools/man/ipa-compat-manage.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Simo Sorce <ssorce@redhat.com> + .\" +-.TH "ipa-compat-manage" "1" "Dec 2 2008" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-compat-manage" "1" "Dec 2 2008" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-compat\-manage \- Enables or disables the schema compatibility plugin + .SH "SYNOPSIS" +-- +2.17.1 + + +From 915fad2b79ca214fe311d6d44945847c751265f5 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 22/72] install/tools/man/ipa-csreplica-manage.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-csreplica-manage.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-csreplica-manage.1 b/install/tools/man/ipa-csreplica-manage.1 +index ab5bfddd8..6d039751e 100644 +--- a/install/tools/man/ipa-csreplica-manage.1 ++++ b/install/tools/man/ipa-csreplica-manage.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-csreplica-manage" "1" "Jul 14 2011" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-csreplica-manage" "1" "Jul 14 2011" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-csreplica\-manage \- Manage an IPA CS replica + .SH "SYNOPSIS" +-- +2.17.1 + + +From 82567551b768c027993dba4a3a31fa0c144dcbd1 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 23/72] install/tools/man/ipa-dns-install.1: Change branding + to IPA and Identity Management + +--- + install/tools/man/ipa-dns-install.1 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/tools/man/ipa-dns-install.1 b/install/tools/man/ipa-dns-install.1 +index 14e4cd51f..029001eca 100644 +--- a/install/tools/man/ipa-dns-install.1 ++++ b/install/tools/man/ipa-dns-install.1 +@@ -1,7 +1,7 @@ + .\" A man page for ipa-dns-install + .\" Copyright (C) 2010-2016 FreeIPA Contributors see COPYING for license + .\" +-.TH "ipa-dns-install" "1" "Jun 28, 2012" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-dns-install" "1" "Jun 28, 2012" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-dns\-install \- Add DNS as a service to an IPA server + .SH "SYNOPSIS" +@@ -12,7 +12,7 @@ In cases where the IPA server name does not belong to the primary DNS domain and + + IPA provides an integrated DNS server which can be used to simplify IPA deployment. If you decide to use it, IPA will automatically maintain SRV and other service records when you change your topology. + +-The DNS component in FreeIPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. ++The DNS component in IPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. + + This command requires that an IPA server is already installed and configured. + +-- +2.17.1 + + +From 3296a366d3b1fd542af4141830796a1535df03ea Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 24/72] install/tools/man/ipa-kra-install.1: Change branding + to IPA and Identity Management + +--- + install/tools/man/ipa-kra-install.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-kra-install.1 b/install/tools/man/ipa-kra-install.1 +index b7661f7cc..8e71e4669 100644 +--- a/install/tools/man/ipa-kra-install.1 ++++ b/install/tools/man/ipa-kra-install.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Ade Lee <alee@redhat.com> + .\" +-.TH "ipa-kra-install" "1" "May 10 2017" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-kra-install" "1" "May 10 2017" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-kra\-install \- Install a KRA on a server + .SH "SYNOPSIS" +-- +2.17.1 + + +From 73785bf8c3c95d3118ea0d2cad2d9ea035cd0bd7 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 25/72] install/tools/man/ipa-ldap-updater.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-ldap-updater.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-ldap-updater.1 b/install/tools/man/ipa-ldap-updater.1 +index 4893802c2..7ead55bd9 100644 +--- a/install/tools/man/ipa-ldap-updater.1 ++++ b/install/tools/man/ipa-ldap-updater.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-ldap-updater" "1" "Sep 12 2008" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-ldap-updater" "1" "Sep 12 2008" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-ldap\-updater \- Update the IPA LDAP configuration + .SH "SYNOPSIS" +-- +2.17.1 + + +From 15e96eb03dad223c7dde208ec5e324c1867de484 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 26/72] install/tools/man/ipa-managed-entries.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-managed-entries.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-managed-entries.1 b/install/tools/man/ipa-managed-entries.1 +index 3d5ca22b8..edaa0a90d 100644 +--- a/install/tools/man/ipa-managed-entries.1 ++++ b/install/tools/man/ipa-managed-entries.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Jr Aquino <jr.aquino@citrix.com> + .\" +-.TH "ipa-managed-entries" "1" "Feb 06 2012" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-managed-entries" "1" "Feb 06 2012" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-managed\-entries \- Enables or disables the schema Managed Entry plugins + .SH "SYNOPSIS" +-- +2.17.1 + + +From a69685a751bf537e3a696d1da592290deb95a014 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 27/72] install/tools/man/ipa-nis-manage.1: Change branding + to IPA and Identity Management + +--- + install/tools/man/ipa-nis-manage.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-nis-manage.1 b/install/tools/man/ipa-nis-manage.1 +index 93278487c..1107b7790 100644 +--- a/install/tools/man/ipa-nis-manage.1 ++++ b/install/tools/man/ipa-nis-manage.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-nis-manage" "1" "April 25 2016" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-nis-manage" "1" "April 25 2016" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-nis\-manage \- Enables or disables the NIS listener plugin + .SH "SYNOPSIS" +-- +2.17.1 + + +From d39335717d55d7da36eb24399c1684fdc980f747 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 28/72] install/tools/man/ipa-otptoken-import.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-otptoken-import.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-otptoken-import.1 b/install/tools/man/ipa-otptoken-import.1 +index 920a08ca2..fe91040fa 100644 +--- a/install/tools/man/ipa-otptoken-import.1 ++++ b/install/tools/man/ipa-otptoken-import.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Nathaniel McCallum <npmccallum@redhat.com> + .\" +-.TH "ipa-otptoken-import" "1" "Jun 12 2014" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-otptoken-import" "1" "Jun 12 2014" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-otptoken\-import \- Imports OTP tokens from RFC 6030 XML file + .SH "SYNOPSIS" +-- +2.17.1 + + +From f5614518de761b7897c156876f76e685be401127 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 29/72] install/tools/man/ipa-pkinit-manage.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-pkinit-manage.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-pkinit-manage.1 b/install/tools/man/ipa-pkinit-manage.1 +index 5018ce8aa..50d63e921 100644 +--- a/install/tools/man/ipa-pkinit-manage.1 ++++ b/install/tools/man/ipa-pkinit-manage.1 +@@ -1,7 +1,7 @@ + .\" + .\" Copyright (C) 2017 FreeIPA Contributors see COPYING for license + .\" +-.TH "ipa-pkinit-manage" "1" "Jun 05 2017" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-pkinit-manage" "1" "Jun 05 2017" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-pkinit\-manage \- Enables or disables PKINIT + .SH "SYNOPSIS" +-- +2.17.1 + + +From 4188427191d4b736b6492a942e713d9703bc0901 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 30/72] install/tools/man/ipa-replica-conncheck.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-replica-conncheck.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-replica-conncheck.1 b/install/tools/man/ipa-replica-conncheck.1 +index 6451f3545..ed441e3be 100644 +--- a/install/tools/man/ipa-replica-conncheck.1 ++++ b/install/tools/man/ipa-replica-conncheck.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Martin Kosek <mkosek@redhat.com> + .\" +-.TH "ipa-replica-conncheck" "1" "Jun 2 2011" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-replica-conncheck" "1" "Jun 2 2011" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-replica\-conncheck \- Check a replica\-master network connection before installation + .SH "SYNOPSIS" +-- +2.17.1 + + +From 067c2df8cc7535a1863f30f3581c3018f98f5e3f Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 31/72] install/tools/man/ipa-replica-install.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-replica-install.1 | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/install/tools/man/ipa-replica-install.1 b/install/tools/man/ipa-replica-install.1 +index 7f6ca57e5..dd4cfea24 100644 +--- a/install/tools/man/ipa-replica-install.1 ++++ b/install/tools/man/ipa-replica-install.1 +@@ -1,7 +1,7 @@ + .\" A man page for ipa-replica-install + .\" Copyright (C) 2008-2016 FreeIPA Contributors see COPYING for license + .\" +-.TH "ipa-replica-install" "1" "Dec 19 2016" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-replica-install" "1" "Dec 19 2016" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-replica\-install \- Create an IPA replica + .SH "SYNOPSIS" +@@ -12,7 +12,7 @@ Configures a new IPA server that is a replica of the server. Once it has been cr + + Domain level 0 is not supported anymore. + +-To create a replica, the machine only needs to be enrolled in the FreeIPA domain first. This process of turning the IPA client into a replica is also referred to as replica promotion. ++To create a replica, the machine only needs to be enrolled in the IPA domain first. This process of turning the IPA client into a replica is also referred to as replica promotion. + + If you're starting with an existing IPA client, simply run ipa\-replica\-install to have it promoted into a replica. + +@@ -226,7 +226,7 @@ ldapmodify command info the directory server. + .TP + \fB\-\-add\-agents\fR + Add IPA masters to the list that allows to serve information about +-users from trusted forests. Starting with FreeIPA 4.2, a regular IPA master ++users from trusted forests. Starting with IPA 4.2, a regular IPA master + can provide this information to SSSD clients. IPA masters aren't added + to the list automatically as restart of the LDAP service on each of them + is required. The host where ipa\-adtrust\-install is being run is added +-- +2.17.1 + + +From ea5e08cd996e75472a58dfd45fff06b747324817 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 32/72] install/tools/man/ipa-replica-manage.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-replica-manage.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-replica-manage.1 b/install/tools/man/ipa-replica-manage.1 +index 239f1591c..2c94278ca 100644 +--- a/install/tools/man/ipa-replica-manage.1 ++++ b/install/tools/man/ipa-replica-manage.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-replica-manage" "1" "Jul 12 2016" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-replica-manage" "1" "Jul 12 2016" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-replica\-manage \- Manage an IPA replica + .SH "SYNOPSIS" +-- +2.17.1 + + +From 9202123a94ca41cb41d2cf255bffa96c776145ef Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 33/72] install/tools/man/ipa-restore.1: Change branding to + IPA and Identity Management + +--- + install/tools/man/ipa-restore.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-restore.1 b/install/tools/man/ipa-restore.1 +index 5843d5546..bc0755baa 100644 +--- a/install/tools/man/ipa-restore.1 ++++ b/install/tools/man/ipa-restore.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-restore" "1" "Mar 22 2013" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-restore" "1" "Mar 22 2013" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-restore \- Restore an IPA master + .SH "SYNOPSIS" +-- +2.17.1 + + +From 953314e5afa0502a11200d54d1296425c4e51d82 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 34/72] install/tools/man/ipa-server-certinstall.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-server-certinstall.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-server-certinstall.1 b/install/tools/man/ipa-server-certinstall.1 +index 00fd03b6b..aa9bb7b85 100644 +--- a/install/tools/man/ipa-server-certinstall.1 ++++ b/install/tools/man/ipa-server-certinstall.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipa-server-certinstall" "1" "Mar 14 2008" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-server-certinstall" "1" "Mar 14 2008" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-server\-certinstall \- Install new SSL server certificates + .SH "SYNOPSIS" +-- +2.17.1 + + +From 17368ed31bfee73d7cb0b93909b9cd8aca425716 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 35/72] install/tools/man/ipa-server-install.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-server-install.1 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/tools/man/ipa-server-install.1 b/install/tools/man/ipa-server-install.1 +index 019c157fa..a8aeeb26d 100644 +--- a/install/tools/man/ipa-server-install.1 ++++ b/install/tools/man/ipa-server-install.1 +@@ -1,7 +1,7 @@ + .\" A man page for ipa-server-install + .\" Copyright (C) 2008-2017 FreeIPA Contributors see COPYING for license + .\" +-.TH "ipa-server-install" "1" "Feb 17 2017" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-server-install" "1" "Feb 17 2017" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-server\-install \- Configure an IPA server + .SH "SYNOPSIS" +@@ -169,7 +169,7 @@ Install and configure a KRA on this server. + .SS "DNS OPTIONS" + IPA provides an integrated DNS server which can be used to simplify IPA deployment. If you decide to use it, IPA will automatically maintain SRV and other service records when you change your topology. + +-The DNS component in FreeIPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. ++The DNS component in IPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. + + .TP + \fB\-\-setup\-dns\fR +-- +2.17.1 + + +From 630167ac51b80853225d4057db46a74ac416bc29 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 36/72] install/tools/man/ipa-server-upgrade.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-server-upgrade.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-server-upgrade.1 b/install/tools/man/ipa-server-upgrade.1 +index cbbdc5901..3db19b0f1 100644 +--- a/install/tools/man/ipa-server-upgrade.1 ++++ b/install/tools/man/ipa-server-upgrade.1 +@@ -2,7 +2,7 @@ + .\" Copyright (C) 2015 FreeIPA Contributors see COPYING for license + .\" + +-.TH "ipa-server-upgrade" "1" "April 02 2015" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-server-upgrade" "1" "April 02 2015" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-server\-upgrade \- upgrade IPA server + .SH "SYNOPSIS" +-- +2.17.1 + + +From 9119708871268a9401bd491b819e17292be8be15 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 37/72] install/tools/man/ipa-winsync-migrate.1: Change + branding to IPA and Identity Management + +--- + install/tools/man/ipa-winsync-migrate.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipa-winsync-migrate.1 b/install/tools/man/ipa-winsync-migrate.1 +index 88702bad6..1812f6348 100644 +--- a/install/tools/man/ipa-winsync-migrate.1 ++++ b/install/tools/man/ipa-winsync-migrate.1 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Tomas Babej <tbabej@redhat.com> + .\" +-.TH "ipa-winsync-migrate" "1" "Mar 10 2015" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipa-winsync-migrate" "1" "Mar 10 2015" "IPA" "IPA Manual Pages" + .SH "NAME" + ipa\-winsync\-migrate \- Seamless migration of AD users created by winsync to native AD users. + .SH "SYNOPSIS" +-- +2.17.1 + + +From 6149bf9ee37f3a341db2b14e8186b0e1294ad1e7 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 38/72] install/tools/man/ipactl.8: Change branding to IPA + and Identity Management + +--- + install/tools/man/ipactl.8 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/tools/man/ipactl.8 b/install/tools/man/ipactl.8 +index fb533aae2..d7aaaf8ed 100644 +--- a/install/tools/man/ipactl.8 ++++ b/install/tools/man/ipactl.8 +@@ -16,7 +16,7 @@ + .\" + .\" Author: Rob Crittenden <rcritten@redhat.com> + .\" +-.TH "ipactl" "8" "Mar 14 2008" "FreeIPA" "FreeIPA Manual Pages" ++.TH "ipactl" "8" "Mar 14 2008" "IPA" "IPA Manual Pages" + .SH "NAME" + ipactl \- IPA Server Control Interface + .SH "SYNOPSIS" +-- +2.17.1 + + +From f978206e28449fa5946a76cbd79f422df0d72725 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 39/72] install/ui/css/patternfly.css: Change branding to + IPA and Identity Management + +--- + install/ui/css/patternfly.css | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/ui/css/patternfly.css b/install/ui/css/patternfly.css +index ee920530b..de574a84c 100644 +--- a/install/ui/css/patternfly.css ++++ b/install/ui/css/patternfly.css +@@ -4,4 +4,4 @@ + * + * Copyright 2013 bootstrap-select + * Licensed under the MIT license +- */.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*=span]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*=span].pull-right,.row-fluid .bootstrap-select.btn-group[class*=span].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*=span]):not([class*=col-]):not([class*=form-control]){width:220px}.bootstrap-select{width:220px\9}.bootstrap-select.form-control:not([class*=span]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu li.disabled>a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group[class*=span] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small{color:#64b1d8;color:rgba(255,255,255,.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0}.alert{border-width:1px;padding-left:47px;padding-right:14px;position:relative}.alert .alert-link{color:#0088ce}.alert .alert-link:hover{color:#00659c}.alert>.btn.pull-right{margin-top:-3px}.alert>.pficon{font-size:22px;position:absolute;left:13px;top:10px}.alert .close{opacity:.85;filter:alpha(opacity=85)}.alert .close:focus,.alert .close:hover{opacity:1;filter:alpha(opacity=100)}.alert .pficon-info{color:#4d5258}.alert-dismissable{padding-right:28px}.alert-dismissable .close{right:-13px;top:1px}.badge{margin-left:6px}.nav-pills>li>a>.badge{margin-left:6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7dc3e8}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#0088ce;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6);box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6)}.has-error .bootstrap-select.btn-group .btn{border-color:#c00}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#900;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#ededed!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#8b8d8f;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small{color:#9c9c9c}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#9c9c9c}.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:PatternFlyIcons-webfont}.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;position:relative}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e5e5e5;border-color:#a9a9a9}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#f1f1f1;border-color:#bbb}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#def3ff!important;border-color:#bee1f4!important}.treeview .list-group-item.node-selected{background:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#9c9c9c;content:"\f101";font-family:FontAwesome;font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(3,3,3,.1);box-shadow:0 2px 3px rgba(3,3,3,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#670000}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#8b0000}.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e5e5e5;border-color:#a9a9a9}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f1f1f1;border-color:#bbb}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0,#0088ce 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0088ce;background-image:none;border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0077b5;border-color:#004e78}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0088ce;border-color:#00659c}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs{font-weight:400}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.ColVis_Button:active:focus{outline:0}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #bbb;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #d1d1d1 #f5f5f5;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ededed;border-right-color:#ededed;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d1d1d1;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075);box-shadow:inset 0 1px 1px rgba(3,3,3,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0088ce;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{color:#0088ce!important;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:FontAwesome;font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0088ce;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}table.datatable th:active{outline:0}.caret{font-family:FontAwesome;font-weight:400;height:9px;position:relative;vertical-align:baseline;width:12px}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;text-align:center;top:-1px;right:0}.dropup .caret:before{content:"\f106"}.dropdown-menu .divider{background-color:#ededed;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#bee1f4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0088ce;border-color:#0088ce;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0088ce!important;border-color:#0088ce!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.dropdown>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#def3ff;border-color:#bee1f4}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.dropdown-kebab-pf .btn-link{color:#252525;font-size:16px;line-height:1;padding:4px 0}.dropdown-kebab-pf .btn-link:active,.dropdown-kebab-pf .btn-link:focus,.dropdown-kebab-pf .btn-link:hover{color:#0088ce}.dropdown-kebab-pf .dropdown-menu{left:-15px;margin-top:11px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right{left:auto;right:-15px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:after,.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:before{left:auto;right:6px}.dropdown-kebab-pf .dropdown-menu:after,.dropdown-kebab-pf .dropdown-menu:before{border-bottom-color:#bbb;border-bottom-style:solid;border-bottom-width:10px;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:inline-block;left:6px;position:absolute;top:-11px}.dropdown-kebab-pf .dropdown-menu:after{border-bottom-color:#fff;top:-10px}.dropdown-kebab-pf.dropup .dropdown-menu{margin-bottom:11px;margin-top:0}.dropdown-kebab-pf.dropup .dropdown-menu:after,.dropdown-kebab-pf.dropup .dropdown-menu:before{border-bottom:none;border-top-color:#bbb;border-top-style:solid;border-top-width:10px;bottom:-11px;top:auto}.dropdown-kebab-pf.dropup .dropdown-menu:after{border-top-color:#fff;bottom:-10px}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../fonts/open-sans/OpenSans-Regular.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('OpenSans-Light'),local('Open Sans Light'),url(../fonts/open-sans/OpenSans-Light.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(../fonts/open-sans/OpenSans-Semibold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../fonts/open-sans/OpenSans-Bold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local('Open Sans Extrabold'),local('OpenSans-Extrabold'),url(../fonts/open-sans/OpenSans-ExtraBold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(../fonts/open-sans/OpenSans-LightItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../fonts/open-sans/OpenSans-Italic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(../fonts/open-sans/OpenSans-SemiboldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../fonts/open-sans/OpenSans-BoldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local('Open Sans Extrabold Italic'),local('OpenSans-ExtraboldItalic'),url(../fonts/open-sans/OpenSans-ExtraBoldItalic.ttf) format('truetype')}.chars-remaining-pf span{font-weight:600;padding-right:5px}.chars-warn-remaining-pf{color:#c00}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f}.form-control[disabled]:hover,.form-control[readonly]:hover,fieldset[disabled] .form-control:hover{border-color:#bbb}.form-control:hover{border-color:#7dc3e8}.has-error .form-control:hover{border-color:#900}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label,.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label,.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#363636}.help-block{margin-bottom:0}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}label{font-weight:600}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0088ce}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#999;border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.right .arrow{border-left-width:0;border-right-color:#999;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{bottom:-10px;border-left-width:0;border-right-color:#fff;content:" ";left:1px}.infotip.left .arrow{border-left-color:#999;border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;bottom:-10px;content:" ";right:1px}.label{border-radius:0;font-size:100%;font-weight:600}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #ededed}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-top:0;border-left:0;border-right:0;margin-bottom:0}.list-group-item-heading{font-weight:600}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{border-top:solid 1px #39a5dc;margin-top:-1px;z-index:auto}.list-group-item.active:first-child{border-top:1px solid #39a5dc!important;margin-top:-1px}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}}.login-pf body{background:#030303 url(../img/bg-login.jpg) repeat-x 50% 0;background-size:auto}@media (min-width:768px){.login-pf body{background-size:100% auto}}.login-pf .container{background-color:rgba(255,255,255,.055);clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid rgba(255,255,255,.3);padding-top:25px;margin-top:25px}@media (min-width:768px){.login-pf .container .details{border-left:1px solid rgba(255,255,255,.3);padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child{margin-bottom:0}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.modal-header{background-color:#f5f5f5;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px;font-weight:700}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.navbar-pf{background:#030303;border:0;border-radius:0;border-top:3px solid #39a5dc;margin-bottom:0;min-height:0}.navbar-pf .navbar-brand{color:#f5f5f5;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #292929;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#232323;color:#f5f5f5}.navbar-pf .navbar-nav>li>a{color:#d1d1d1;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#f5f5f5}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#232323;color:#f5f5f5}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#171717!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#1f1f1f!important;color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#d1d1d1;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#292929;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle{color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#363636;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#9c9c9c}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #292929}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:FontAwesome;font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #292929}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #292929}}@media (min-width:768px){.navbar-pf .navbar-brand{padding:8px 0 7px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:-o-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:linear-gradient(to bottom,#1d1d1d 0,#030303 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f5f5f5;border-bottom:1px solid #d1d1d1;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0088ce!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#f5f5f5}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#1d1d1d;border-top-color:#5c5c5c;color:#d1d1d1;background-image:-webkit-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:-o-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:linear-gradient(to bottom,#363636 0,#1d1d1d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#303030;border-bottom-color:#303030;border-top-color:#696969;-webkit-box-shadow:none;box-shadow:none;color:#f5f5f5;background-image:-webkit-linear-gradient(top,#434343 0,#303030 100%);background-image:-o-linear-gradient(top,#434343 0,#303030 100%);background-image:linear-gradient(to bottom,#434343 0,#303030 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#1f1f1f;border-bottom-color:#3e3e3e;border-right:1px solid #3e3e3e;border-top-color:#3b3b3b;font-weight:600;background-image:-webkit-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:-o-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:linear-gradient(to bottom,#323232 0,#1f1f1f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#323232;border-bottom-color:#4a4a4a;border-right-color:#4a4a4a;border-top-color:#4a4a4a;background-image:-webkit-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:-o-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:linear-gradient(to bottom,#3f3f3f 0,#323232 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#454545;border-bottom-color:#575757;border-right-color:#575757;border-top-color:#5a5a5a;background-image:-webkit-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:-o-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:linear-gradient(to bottom,#4c4c4c 0,#454545 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#363636;color:#d1d1d1}.navbar-pf .navbar-utility>li>a{border-left:1px solid #2b2b2b;color:#d1d1d1!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#232323;border-left-color:#373737}.navbar-pf .navbar-utility>li.open>a{border-left-color:#444;color:#f5f5f5!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .navbar-utility .open .dropdown-menu{border-top-width:0}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.drawer-pf{background-color:#fafafa;border:1px solid #d1d1d1;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);overflow-y:auto;position:absolute;right:0;width:320px;z-index:2}.drawer-pf .panel{border-bottom:none;border-left:none;border-right:none}.drawer-pf .panel-group .panel-heading+.panel-collapse .panel-body{border-top:none;border-bottom:1px solid #d1d1d1;padding:0}.drawer-pf .panel-counter{display:block;font-style:italic;line-height:1.2;padding-left:18px;padding-top:5px}.drawer-pf .panel-heading{border-bottom:1px solid #d1d1d1}.drawer-pf .panel-group{bottom:0;margin-bottom:0;position:absolute;top:25px;width:100%}.drawer-pf .panel-title a{cursor:pointer;display:block}.drawer-pf.drawer-pf-expanded{left:270px;width:inherit}.drawer-pf.drawer-pf-expanded .drawer-pf-toggle-expand:before{content:"\f101"}.drawer-pf-toggle-expand{color:inherit;cursor:pointer;left:0;padding:2px 5px;position:absolute}.drawer-pf-toggle-expand:before{content:"\f100";font-family:FontAwesome}.drawer-pf-toggle-expand:focus,.drawer-pf-toggle-expand:hover{color:inherit;text-decoration:none}.drawer-pf-action .btn-link{color:#0088ce;padding:10px 0}.drawer-pf-action .btn-link:hover{color:#00659c}.drawer-pf-loading{color:#4d5258;font-size:14px;padding:20px 15px}.drawer-pf-notification{border-bottom:1px solid #d1d1d1;padding:15px}.drawer-pf-notification .date{border-right:1px solid #aaa;display:inline-block;line-height:1;margin-right:5px;padding-right:9px}.drawer-pf-notification .pficon{font-size:14px;margin-top:3px}.drawer-pf-notification:last-of-type{border-bottom:none}.drawer-pf-notification:hover{background-color:#def3ff}.drawer-pf-notification.unread .drawer-pf-notification-message{font-weight:700}.drawer-pf-notification.expanded-notification .date{border-right:none;padding-right:0}.drawer-pf-notification-info,.drawer-pf-notification-message{display:block;padding-left:27px;padding-right:19px}.expanded-notification .drawer-pf-notification-info,.expanded-notification .drawer-pf-notification-message{display:inline-block}.drawer-pf-notifications-non-clickable .drawer-pf-notification:hover{background-color:#fff}.drawer-pf-title{background-color:#fafafa;border-bottom:1px solid #d1d1d1;position:absolute;width:318px}.drawer-pf-title h3{font-size:12px;margin:0;padding:6px 15px}.navbar-pf-vertical .drawer-pf{height:calc(100vh - 80px);top:58px}.navbar-pf-vertical .nav .drawer-pf-trigger .drawer-pf-trigger-icon{border-left:1px solid #2b2b2b;border-right:1px solid #2b2b2b;padding-left:15px;padding-right:15px}.navbar-pf-vertical .nav .drawer-pf-trigger.open .drawer-pf-trigger-icon{background-color:#232323}.navbar-pf .drawer-pf{height:calc(100vh - 46px);top:26px}.navbar-pf .drawer-pf-trigger-icon{cursor:pointer}.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(3,3,3,.125);box-shadow:inset 0 3px 5px rgba(3,3,3,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#f1f1f1;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2);color:#4d5258;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{font-weight:400}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#bbb;border-top-color:#bbb}.panel-group .panel-heading{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #d1d1d1}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";display:inline-block;font-family:FontAwesome;font-size:13px;margin-right:5px;text-align:center;vertical-align:0;width:8px}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105"}.popover{-webkit-box-shadow:0 2px 2px rgba(3,3,3,.08);box-shadow:0 2px 2px rgba(3,3,3,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(3,3,3,.25);box-shadow:inset 0 0 1px rgba(3,3,3,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{color:#363636;position:absolute;text-align:right}.progress-label-left .progress-bar span{font-size:14px;left:-40px;top:0;width:35px}.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{font-size:11px;overflow:hidden;right:0;text-overflow:ellipsis;white-space:nowrap}.progress-label-right .progress-bar span strong,.progress-label-top-right .progress-bar span strong{font-weight:600}.progress-label-right .progress-bar span{max-width:85px;top:0}.progress-label-top-right .progress-bar span{max-width:47%;top:-30px}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-bar-remaining{background:0 0}.progress-container{position:relative}.progress-container.progress-description-left{padding-left:90px}.progress-container.progress-label-right{padding-right:90px}.progress-description{margin-bottom:10px;max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description-left .progress-description{left:0;margin-bottom:0;max-width:85px;position:absolute;top:0}.progress-description .tooltip{white-space:normal}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .clear:focus{outline:0}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #ececec;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#ececec;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#9c9c9c;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0088ce!important;border-color:#0088ce!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#363636;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#def3ff;border-color:#bee1f4}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions{margin-right:20px}.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d1d1d1}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d1d1d1}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(3,3,3,.25);border-left:4px solid rgba(3,3,3,.25);border-right:4px solid rgba(3,3,3,.25);border-radius:100%;border-top:4px solid rgba(3,3,3,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.spinner.spinner-inverse{border-bottom-color:rgba(255,255,255,.25);border-left-color:rgba(255,255,255,.25);border-right-color:rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.75)}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-inverse{background-image:url(../img/spinner-inverse.gif)}.ie9 .spinner.spinner-inverse-lg{background-image:url(../img/spinner-inverse-lg.gif)}.ie9 .spinner.spinner-inverse-sm{background-image:url(../img/spinner-inverse-sm.gif)}.ie9 .spinner.spinner-inverse-xs{background-image:url(../img/spinner-inverse-xs.gif)}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#363636}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#00659c}.prettyprint ol.linenums{margin-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.table-bordered{border:1px solid #d1d1d1}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#def3ff;border-bottom-color:#7dc3e8}.table-treegrid span.indent{margin-left:10px;margin-right:10px}.table-treegrid span.icon{display:inline-block;font-size:13px;margin-right:5px;min-width:10px;text-align:center}.table-treegrid span.collapse-icon,.table-treegrid span.expand-icon{cursor:pointer}.table-treegrid>tbody>tr.odd{background-color:#f5f5f5}.nav-tabs{font-size:14px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#ededed;color:#252525}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#ededed}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf{font-size:12px}.nav-tabs+.nav-tabs-pf>li:first-child>a{padding-left:15px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#ededed}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #ededed}}.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0088ce}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0088ce}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{font-size:12px;line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}} +\ No newline at end of file ++ */.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*=span]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*=span].pull-right,.row-fluid .bootstrap-select.btn-group[class*=span].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*=span]):not([class*=col-]):not([class*=form-control]){width:220px}.bootstrap-select{width:220px\9}.bootstrap-select.form-control:not([class*=span]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu li.disabled>a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group[class*=span] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small{color:#64b1d8;color:rgba(255,255,255,.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0}.alert{border-width:1px;padding-left:47px;padding-right:14px;position:relative}.alert .alert-link{color:#0088ce}.alert .alert-link:hover{color:#00659c}.alert>.btn.pull-right{margin-top:-3px}.alert>.pficon{font-size:22px;position:absolute;left:13px;top:10px}.alert .close{opacity:.85;filter:alpha(opacity=85)}.alert .close:focus,.alert .close:hover{opacity:1;filter:alpha(opacity=100)}.alert .pficon-info{color:#4d5258}.alert-dismissable{padding-right:28px}.alert-dismissable .close{right:-13px;top:1px}.badge{margin-left:6px}.nav-pills>li>a>.badge{margin-left:6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7dc3e8}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#0088ce;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6);box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6)}.has-error .bootstrap-select.btn-group .btn{border-color:#c00}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#900;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#ededed!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#8b8d8f;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small{color:#9c9c9c}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#9c9c9c}.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:PatternFlyIcons-webfont}.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;position:relative}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e5e5e5;border-color:#a9a9a9}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#f1f1f1;border-color:#bbb}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#def3ff!important;border-color:#bee1f4!important}.treeview .list-group-item.node-selected{background:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#9c9c9c;content:"\f101";font-family:FontAwesome;font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(3,3,3,.1);box-shadow:0 2px 3px rgba(3,3,3,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#670000}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#8b0000}.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e5e5e5;border-color:#a9a9a9}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f1f1f1;border-color:#bbb}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0,#0088ce 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0088ce;background-image:none;border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0077b5;border-color:#004e78}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0088ce;border-color:#00659c}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs{font-weight:400}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.ColVis_Button:active:focus{outline:0}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #bbb;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #d1d1d1 #f5f5f5;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ededed;border-right-color:#ededed;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d1d1d1;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075);box-shadow:inset 0 1px 1px rgba(3,3,3,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0088ce;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{color:#0088ce!important;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:FontAwesome;font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0088ce;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}table.datatable th:active{outline:0}.caret{font-family:FontAwesome;font-weight:400;height:9px;position:relative;vertical-align:baseline;width:12px}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;text-align:center;top:-1px;right:0}.dropup .caret:before{content:"\f106"}.dropdown-menu .divider{background-color:#ededed;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#bee1f4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0088ce;border-color:#0088ce;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0088ce!important;border-color:#0088ce!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.dropdown>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#def3ff;border-color:#bee1f4}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.dropdown-kebab-pf .btn-link{color:#252525;font-size:16px;line-height:1;padding:4px 0}.dropdown-kebab-pf .btn-link:active,.dropdown-kebab-pf .btn-link:focus,.dropdown-kebab-pf .btn-link:hover{color:#0088ce}.dropdown-kebab-pf .dropdown-menu{left:-15px;margin-top:11px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right{left:auto;right:-15px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:after,.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:before{left:auto;right:6px}.dropdown-kebab-pf .dropdown-menu:after,.dropdown-kebab-pf .dropdown-menu:before{border-bottom-color:#bbb;border-bottom-style:solid;border-bottom-width:10px;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:inline-block;left:6px;position:absolute;top:-11px}.dropdown-kebab-pf .dropdown-menu:after{border-bottom-color:#fff;top:-10px}.dropdown-kebab-pf.dropup .dropdown-menu{margin-bottom:11px;margin-top:0}.dropdown-kebab-pf.dropup .dropdown-menu:after,.dropdown-kebab-pf.dropup .dropdown-menu:before{border-bottom:none;border-top-color:#bbb;border-top-style:solid;border-top-width:10px;bottom:-11px;top:auto}.dropdown-kebab-pf.dropup .dropdown-menu:after{border-top-color:#fff;bottom:-10px}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../fonts/open-sans/OpenSans-Regular.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('OpenSans-Light'),local('Open Sans Light'),url(../fonts/open-sans/OpenSans-Light.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(../fonts/open-sans/OpenSans-Semibold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../fonts/open-sans/OpenSans-Bold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local('Open Sans Extrabold'),local('OpenSans-Extrabold'),url(../fonts/open-sans/OpenSans-ExtraBold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(../fonts/open-sans/OpenSans-LightItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../fonts/open-sans/OpenSans-Italic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(../fonts/open-sans/OpenSans-SemiboldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../fonts/open-sans/OpenSans-BoldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local('Open Sans Extrabold Italic'),local('OpenSans-ExtraboldItalic'),url(../fonts/open-sans/OpenSans-ExtraBoldItalic.ttf) format('truetype')}.chars-remaining-pf span{font-weight:600;padding-right:5px}.chars-warn-remaining-pf{color:#c00}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f}.form-control[disabled]:hover,.form-control[readonly]:hover,fieldset[disabled] .form-control:hover{border-color:#bbb}.form-control:hover{border-color:#7dc3e8}.has-error .form-control:hover{border-color:#900}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label,.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label,.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#363636}.help-block{margin-bottom:0}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}label{font-weight:600}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0088ce}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#999;border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.right .arrow{border-left-width:0;border-right-color:#999;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{bottom:-10px;border-left-width:0;border-right-color:#fff;content:" ";left:1px}.infotip.left .arrow{border-left-color:#999;border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;bottom:-10px;content:" ";right:1px}.label{border-radius:0;font-size:100%;font-weight:600}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #ededed}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-top:0;border-left:0;border-right:0;margin-bottom:0}.list-group-item-heading{font-weight:600}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{border-top:solid 1px #39a5dc;margin-top:-1px;z-index:auto}.list-group-item.active:first-child{border-top:1px solid #39a5dc!important;margin-top:-1px}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}}.login-pf body{background:#1a1a1a url(../img/bg-login.jpg) repeat-x 50% 0;background-size:auto}@media (min-width:768px){.login-pf body{background-size:100% auto}}.login-pf .container{background-color:transparent;clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid rgba(255,255,255,.3);padding-top:25px;margin-top:25px}@media (min-width:768px){.login-pf .container .details{border-left:1px solid rgba(255,255,255,.3);padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child{margin-bottom:0}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.modal-header{background-color:#f5f5f5;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px;font-weight:700}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.navbar-pf{background:#393F45;border:0;border-radius:0;border-top:3px solid #c00;margin-bottom:0;min-height:0}.navbar-pf .navbar-brand{color:#fff;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #53565b;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#454C53;color:#fff}.navbar-pf .navbar-nav>li>a{color:#dbdada;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#fff}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#454C53;color:#fff}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#3c434a!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#424950!important;color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#dbdada;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#53565b;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle{color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#363636;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#9c9c9c}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #53565b}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:FontAwesome;font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #53565b}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #53565b}}@media (min-width:768px){.navbar-pf .navbar-brand{padding:7px 0 8px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#474c50 0,#383f43 100%);background-image:-o-linear-gradient(top,#474c50 0,#383f43 100%);background-image:linear-gradient(to bottom,#474c50 0,#383f43 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff474c50', endColorstr='#ff383f43', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f6f6f6;border-bottom:1px solid #cecdcd;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0088ce!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#fff}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#4b5053;border-top-color:#949699;color:#dbdada;background-image:-webkit-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:-o-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:linear-gradient(to bottom,#5c6165 0,#4b5053 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5c6165', endColorstr='#ff4b5053', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#64686c;border-bottom-color:#64686c;border-top-color:#949699;-webkit-box-shadow:none;box-shadow:none;color:#fff;background-image:-webkit-linear-gradient(top,#72757a 0,#64686c 100%);background-image:-o-linear-gradient(top,#72757a 0,#64686c 100%);background-image:linear-gradient(to bottom,#72757a 0,#64686c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff72757a', endColorstr='#ff64686c', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#505458;border-bottom-color:#65696d;border-right:1px solid #65696d;border-top-color:#64696d;font-weight:600;background-image:-webkit-linear-gradient(top,#585d61 0,#505458 100%);background-image:-o-linear-gradient(top,#585d61 0,#505458 100%);background-image:linear-gradient(to bottom,#585d61 0,#505458 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff585d61', endColorstr='#ff505458', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#5a5e62;border-bottom-color:#6e7276;border-right-color:#6e7276;border-top-color:#6c7276;background-image:-webkit-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:-o-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:linear-gradient(to bottom,#62676b 0,#5a5e62 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62676b', endColorstr='#ff5a5e62', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#65696d;border-bottom-color:#6e7276;border-right-color:#777a7e;border-top-color:#767a7e;background-image:-webkit-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:-o-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:linear-gradient(to bottom,#6b7175 0,#65696d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6b7175', endColorstr='#ff65696d', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#5b6165;color:#fff}.navbar-pf .navbar-utility>li>a{border-left:1px solid #53565b;color:#fff!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#4a5053;border-left-color:#636466}.navbar-pf .navbar-utility>li.open>a{border-left-color:#6c6e70;color:#fff!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .navbar-utility .open .dropdown-menu{border-top-width:0}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.drawer-pf{background-color:#fafafa;border:1px solid #d1d1d1;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);overflow-y:auto;position:absolute;right:0;width:320px;z-index:2}.drawer-pf .panel{border-bottom:none;border-left:none;border-right:none}.drawer-pf .panel-group .panel-heading+.panel-collapse .panel-body{border-top:none;border-bottom:1px solid #d1d1d1;padding:0}.drawer-pf .panel-counter{display:block;font-style:italic;line-height:1.2;padding-left:18px;padding-top:5px}.drawer-pf .panel-heading{border-bottom:1px solid #d1d1d1}.drawer-pf .panel-group{bottom:0;margin-bottom:0;position:absolute;top:25px;width:100%}.drawer-pf .panel-title a{cursor:pointer;display:block}.drawer-pf.drawer-pf-expanded{left:270px;width:inherit}.drawer-pf.drawer-pf-expanded .drawer-pf-toggle-expand:before{content:"\f101"}.drawer-pf-toggle-expand{color:inherit;cursor:pointer;left:0;padding:2px 5px;position:absolute}.drawer-pf-toggle-expand:before{content:"\f100";font-family:FontAwesome}.drawer-pf-toggle-expand:focus,.drawer-pf-toggle-expand:hover{color:inherit;text-decoration:none}.drawer-pf-action .btn-link{color:#0088ce;padding:10px 0}.drawer-pf-action .btn-link:hover{color:#00659c}.drawer-pf-loading{color:#4d5258;font-size:14px;padding:20px 15px}.drawer-pf-notification{border-bottom:1px solid #d1d1d1;padding:15px}.drawer-pf-notification .date{border-right:1px solid #aaa;display:inline-block;line-height:1;margin-right:5px;padding-right:9px}.drawer-pf-notification .pficon{font-size:14px;margin-top:3px}.drawer-pf-notification:last-of-type{border-bottom:none}.drawer-pf-notification:hover{background-color:#def3ff}.drawer-pf-notification.unread .drawer-pf-notification-message{font-weight:700}.drawer-pf-notification.expanded-notification .date{border-right:none;padding-right:0}.drawer-pf-notification-info,.drawer-pf-notification-message{display:block;padding-left:27px;padding-right:19px}.expanded-notification .drawer-pf-notification-info,.expanded-notification .drawer-pf-notification-message{display:inline-block}.drawer-pf-notifications-non-clickable .drawer-pf-notification:hover{background-color:#fff}.drawer-pf-title{background-color:#fafafa;border-bottom:1px solid #d1d1d1;position:absolute;width:318px}.drawer-pf-title h3{font-size:12px;margin:0;padding:6px 15px}.navbar-pf-vertical .drawer-pf{height:calc(100vh - 80px);top:58px}.navbar-pf-vertical .nav .drawer-pf-trigger .drawer-pf-trigger-icon{border-left:1px solid #53565b;border-right:1px solid #53565b;padding-left:15px;padding-right:15px}.navbar-pf-vertical .nav .drawer-pf-trigger.open .drawer-pf-trigger-icon{background-color:#4a5053}.navbar-pf .drawer-pf{height:calc(100vh - 46px);top:26px}.navbar-pf .drawer-pf-trigger-icon{cursor:pointer}.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(3,3,3,.125);box-shadow:inset 0 3px 5px rgba(3,3,3,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#f1f1f1;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2);color:#4d5258;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{font-weight:400}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#bbb;border-top-color:#bbb}.panel-group .panel-heading{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #d1d1d1}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";display:inline-block;font-family:FontAwesome;font-size:13px;margin-right:5px;text-align:center;vertical-align:0;width:8px}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105"}.popover{-webkit-box-shadow:0 2px 2px rgba(3,3,3,.08);box-shadow:0 2px 2px rgba(3,3,3,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(3,3,3,.25);box-shadow:inset 0 0 1px rgba(3,3,3,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{color:#363636;position:absolute;text-align:right}.progress-label-left .progress-bar span{font-size:14px;left:-40px;top:0;width:35px}.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{font-size:11px;overflow:hidden;right:0;text-overflow:ellipsis;white-space:nowrap}.progress-label-right .progress-bar span strong,.progress-label-top-right .progress-bar span strong{font-weight:600}.progress-label-right .progress-bar span{max-width:85px;top:0}.progress-label-top-right .progress-bar span{max-width:47%;top:-30px}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-bar-remaining{background:0 0}.progress-container{position:relative}.progress-container.progress-description-left{padding-left:90px}.progress-container.progress-label-right{padding-right:90px}.progress-description{margin-bottom:10px;max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description-left .progress-description{left:0;margin-bottom:0;max-width:85px;position:absolute;top:0}.progress-description .tooltip{white-space:normal}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .clear:focus{outline:0}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #ececec;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#ececec;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#9c9c9c;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0088ce!important;border-color:#0088ce!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#363636;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#def3ff;border-color:#bee1f4}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions{margin-right:20px}.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d1d1d1}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d1d1d1}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(3,3,3,.25);border-left:4px solid rgba(3,3,3,.25);border-right:4px solid rgba(3,3,3,.25);border-radius:100%;border-top:4px solid rgba(3,3,3,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.spinner.spinner-inverse{border-bottom-color:rgba(255,255,255,.25);border-left-color:rgba(255,255,255,.25);border-right-color:rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.75)}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-inverse{background-image:url(../img/spinner-inverse.gif)}.ie9 .spinner.spinner-inverse-lg{background-image:url(../img/spinner-inverse-lg.gif)}.ie9 .spinner.spinner-inverse-sm{background-image:url(../img/spinner-inverse-sm.gif)}.ie9 .spinner.spinner-inverse-xs{background-image:url(../img/spinner-inverse-xs.gif)}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#363636}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#00659c}.prettyprint ol.linenums{margin-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.table-bordered{border:1px solid #d1d1d1}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#def3ff;border-bottom-color:#7dc3e8}.table-treegrid span.indent{margin-left:10px;margin-right:10px}.table-treegrid span.icon{display:inline-block;font-size:13px;margin-right:5px;min-width:10px;text-align:center}.table-treegrid span.collapse-icon,.table-treegrid span.expand-icon{cursor:pointer}.table-treegrid>tbody>tr.odd{background-color:#f5f5f5}.nav-tabs{font-size:14px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#ededed;color:#252525}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#ededed}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf{font-size:12px}.nav-tabs+.nav-tabs-pf>li:first-child>a{padding-left:15px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#ededed}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #ededed}}.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0088ce}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0088ce}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{font-size:12px;line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}} +\ No newline at end of file +-- +2.17.1 + + +From 9a69911b0024aebad69a1317532e77afe6427576 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 40/72] install/ui/index.html: Change branding to IPA and + Identity Management + +--- + install/ui/index.html | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/ui/index.html b/install/ui/index.html +index bc0f0cd1e..d1eacaf53 100644 +--- a/install/ui/index.html ++++ b/install/ui/index.html +@@ -2,7 +2,7 @@ + <html> + <head> + <meta charset="utf-8"> +- <title>IPA: Identity Policy Audit</title> ++ <title>Identity Management</title> + + <!--[if IE]> + <meta id="ie-detector"> +-- +2.17.1 + + +From 206d1889cd8a9225f1d637e228aba54836cc3adf Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 41/72] install/ui/less/brand.less: Change branding to IPA + and Identity Management + +--- + install/ui/less/brand.less | 103 ++++++++++++++++++------------------- + 1 file changed, 50 insertions(+), 53 deletions(-) + +diff --git a/install/ui/less/brand.less b/install/ui/less/brand.less +index c9030bb0b..7488eaf91 100644 +--- a/install/ui/less/brand.less ++++ b/install/ui/less/brand.less +@@ -20,58 +20,55 @@ + + // this file should be overridden with brand/platform specific content + +-@login-details-border: #777777; ++@img-badge-ie8-height: 44px; ++@img-badge-ie8-width: 137px; ++// @img-bg-login: "bg-login.png"; ++// @img-bg-login-2: "bg-login-2.png"; ++@login-bg-color: #1a1a1a; ++@login-container-bg-color: transparent; ++@login-container-bg-color-rgba: transparent; ++@navbar-pf-bg-color: #393F45; ++@navbar-pf-border-color: #cc0000; ++@navbar-pf-active-color: #fff; ++@navbar-pf-color: #dbdada; ++@navbar-pf-icon-bar-bg-color: #fff; ++@navbar-pf-navbar-header-border-color: #53565b; ++@navbar-pf-navbar-nav-active-bg-color: #454C53; ++@navbar-pf-navbar-nav-active-active-bg-color: #3c434a; ++@navbar-pf-navbar-nav-active-active-open-bg-color: #424950; ++@navbar-pf-navbar-navbar-brand-min-width: 300px; ++@navbar-pf-navbar-navbar-brand-padding: 7px 0 8px; ++@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6; ++@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd; ++@navbar-pf-navbar-primary-active-bg-color-start: #72757a; ++@navbar-pf-navbar-primary-active-bg-color-stop: #64686c; ++@navbar-pf-navbar-primary-active-border-color: #949699; ++@navbar-pf-navbar-primary-bg-color-start: #474c50; ++@navbar-pf-navbar-primary-bg-color-stop: #383f43; ++@navbar-pf-navbar-primary-hover-bg-color-start: #5c6165; ++@navbar-pf-navbar-primary-hover-bg-color-stop: #4b5053; ++@navbar-pf-navbar-primary-hover-border-color: #949699; ++@navbar-pf-navbar-primary-context-active-bg-color-start: #6b7175; ++@navbar-pf-navbar-primary-context-active-bg-color-stop: #65696d; ++@navbar-pf-navbar-primary-context-active-border-color: #6e7276; ++@navbar-pf-navbar-primary-context-active-border-right-color: #777a7e; ++@navbar-pf-navbar-primary-context-active-border-top-color: #767a7e; ++@navbar-pf-navbar-primary-context-bg-color-start: #585d61; ++@navbar-pf-navbar-primary-context-bg-color-stop: #505458; ++@navbar-pf-navbar-primary-context-border-color: #65696d; ++@navbar-pf-navbar-primary-context-border-top-color: #64696d; ++@navbar-pf-navbar-primary-context-hover-bg-color-start: #62676b; ++@navbar-pf-navbar-primary-context-hover-bg-color-stop: #5a5e62; ++@navbar-pf-navbar-primary-context-hover-border-color: #6e7276; ++@navbar-pf-navbar-primary-context-hover-border-top-color: #6c7276; ++@navbar-pf-navbar-utility-border-color: #53565b; ++@navbar-pf-navbar-utility-color: #fff; ++@navbar-pf-navbar-utility-hover-bg-color: #4a5053; ++@navbar-pf-navbar-utility-hover-border-color: #636466; ++@navbar-pf-navbar-utility-open-bg-color: #5b6165; ++@navbar-pf-navbar-utility-open-border-color: #6c6e70; + +-.login-pf { +- +- .login-pf-body { +- padding-top: 50px; +- } +- +- #badge img { +- display: none; +- } +- +- #brand { +- position: absolute; +- top: -135px; +- img { +- height: auto; +- } +- } +- +- .container { +- padding-top: 40px; +- +- .details p:first-child { +- border-top: 1px solid @login-details-border; +- } +- } +-} +- +-// 768px == @screen-sm-min +-@media (min-width: 768px) { +- .navbar-pf .navbar-brand { +- padding: 2px 0 3px; +- } +- +- .login-pf .container .details { +- p:first-child { +- border-top: 0; +- } +- border-left: 1px solid @login-details-border; +- } +-} +- +-@media (max-height: 520px) { +- .reset-login-pf-height; +- .login-pf { +- .login-pf-body { +- padding-top: 0; +- } +- #badge { +- margin-top: 0; +- height: 70px; +- } +- } ++.info-page .navbar-header { ++ line-height: inherit; ++ margin-left: 20px; + } +\ No newline at end of file +-- +2.17.1 + + +From d9b08ebc53dca899cffb75e413b5472f35c107b8 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 42/72] install/ui/less/patternfly.less: Change branding to + IPA and Identity Management + +--- + install/ui/less/patternfly.less | 48 +++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +diff --git a/install/ui/less/patternfly.less b/install/ui/less/patternfly.less +index a2e30c85b..97a8d5c26 100644 +--- a/install/ui/less/patternfly.less ++++ b/install/ui/less/patternfly.less +@@ -129,3 +129,51 @@ + + // our overrides + @fa-font-path: "../fonts/fontawesome"; ++ ++@img-badge-ie8-height: 44px; ++@img-badge-ie8-width: 137px; ++// @img-bg-login: "bg-login.png"; ++// @img-bg-login-2: "bg-login-2.png"; ++@login-bg-color: #1a1a1a; ++@login-container-bg-color: transparent; ++@login-container-bg-color-rgba: transparent; ++@navbar-pf-bg-color: #393F45; ++@navbar-pf-border-color: #cc0000; ++@navbar-pf-active-color: #fff; ++@navbar-pf-color: #dbdada; ++@navbar-pf-icon-bar-bg-color: #fff; ++@navbar-pf-navbar-header-border-color: #53565b; ++@navbar-pf-navbar-nav-active-bg-color: #454C53; ++@navbar-pf-navbar-nav-active-active-bg-color: #3c434a; ++@navbar-pf-navbar-nav-active-active-open-bg-color: #424950; ++@navbar-pf-navbar-navbar-brand-min-width: 300px; ++@navbar-pf-navbar-navbar-brand-padding: 7px 0 8px; ++@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6; ++@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd; ++@navbar-pf-navbar-primary-active-bg-color-start: #72757a; ++@navbar-pf-navbar-primary-active-bg-color-stop: #64686c; ++@navbar-pf-navbar-primary-active-border-color: #949699; ++@navbar-pf-navbar-primary-bg-color-start: #474c50; ++@navbar-pf-navbar-primary-bg-color-stop: #383f43; ++@navbar-pf-navbar-primary-hover-bg-color-start: #5c6165; ++@navbar-pf-navbar-primary-hover-bg-color-stop: #4b5053; ++@navbar-pf-navbar-primary-hover-border-color: #949699; ++@navbar-pf-navbar-primary-context-active-bg-color-start: #6b7175; ++@navbar-pf-navbar-primary-context-active-bg-color-stop: #65696d; ++@navbar-pf-navbar-primary-context-active-border-color: #6e7276; ++@navbar-pf-navbar-primary-context-active-border-right-color: #777a7e; ++@navbar-pf-navbar-primary-context-active-border-top-color: #767a7e; ++@navbar-pf-navbar-primary-context-bg-color-start: #585d61; ++@navbar-pf-navbar-primary-context-bg-color-stop: #505458; ++@navbar-pf-navbar-primary-context-border-color: #65696d; ++@navbar-pf-navbar-primary-context-border-top-color: #64696d; ++@navbar-pf-navbar-primary-context-hover-bg-color-start: #62676b; ++@navbar-pf-navbar-primary-context-hover-bg-color-stop: #5a5e62; ++@navbar-pf-navbar-primary-context-hover-border-color: #6e7276; ++@navbar-pf-navbar-primary-context-hover-border-top-color: #6c7276; ++@navbar-pf-navbar-utility-border-color: #53565b; ++@navbar-pf-navbar-utility-color: #fff; ++@navbar-pf-navbar-utility-hover-bg-color: #4a5053; ++@navbar-pf-navbar-utility-hover-border-color: #636466; ++@navbar-pf-navbar-utility-open-bg-color: #5b6165; ++@navbar-pf-navbar-utility-open-border-color: #6c6e70; +-- +2.17.1 + + +From 1b1455e451ed00fd1f3ecfd3d807ca5935e6c272 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 43/72] install/ui/reset_password.html: Change branding to + IPA and Identity Management + +--- + install/ui/reset_password.html | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/ui/reset_password.html b/install/ui/reset_password.html +index e5700c964..a4ea1ce0e 100644 +--- a/install/ui/reset_password.html ++++ b/install/ui/reset_password.html +@@ -2,7 +2,7 @@ + <html> + <head> + <meta charset="utf-8"> +- <title>IPA: Identity Policy Audit</title> ++ <title>Identity Management</title> + + <!--[if IE]> + <meta id="ie-detector"> +-- +2.17.1 + + +From 217b850ac3437e4d285adafbc5d4afb5fffbf6bf Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 44/72] install/ui/src/freeipa/widgets/App.js: Change + branding to IPA and Identity Management + +--- + install/ui/src/freeipa/widgets/App.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/ui/src/freeipa/widgets/App.js b/install/ui/src/freeipa/widgets/App.js +index 3a139555a..b0f75885d 100644 +--- a/install/ui/src/freeipa/widgets/App.js ++++ b/install/ui/src/freeipa/widgets/App.js +@@ -187,7 +187,7 @@ define(['dojo/_base/declare', + + construct.create('img', { + src: 'images/header-logo.png', +- alt: 'FreeIPA' // TODO: replace with configuration value ++ alt: 'Identity Management' // TODO: replace with configuration value + }, this.brand_node); + + return this.brand_node; +-- +2.17.1 + + +From adacee4e1fe7239049adc2eeeee088311d6f2bb2 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 45/72] install/ui/sync_otp.html: Change branding to IPA and + Identity Management + +--- + install/ui/sync_otp.html | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/ui/sync_otp.html b/install/ui/sync_otp.html +index 5814b6c57..36a51ca62 100644 +--- a/install/ui/sync_otp.html ++++ b/install/ui/sync_otp.html +@@ -2,7 +2,7 @@ + <html> + <head> + <meta charset="utf-8"> +- <title>IPA: Identity Policy Audit</title> ++ <title>Identity Management</title> + + <!--[if IE]> + <meta id="ie-detector"> +-- +2.17.1 + + +From 188e41152183e7e0e1c6936df600330981553bdc Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 46/72] install/ui/test/data/ipa_init_commands.json: Change + branding to IPA and Identity Management + +--- + install/ui/test/data/ipa_init_commands.json | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/ui/test/data/ipa_init_commands.json b/install/ui/test/data/ipa_init_commands.json +index c35946b34..6d3667473 100644 +--- a/install/ui/test/data/ipa_init_commands.json ++++ b/install/ui/test/data/ipa_init_commands.json +@@ -8689,7 +8689,7 @@ + "label" : "Clock offset", + "confirm" : true, + "alwaysask" : false, +- "doc" : "TOTP token / FreeIPA server time difference", ++ "doc" : "TOTP token / IPA server time difference", + "deprecated" : false, + "flags" : [ + "no_update" +@@ -29875,7 +29875,7 @@ + "primary_key" : false, + "alwaysask" : false, + "deprecated" : false, +- "doc" : "TOTP token / FreeIPA server time difference", ++ "doc" : "TOTP token / IPA server time difference", + "flags" : [ + "no_update" + ], +-- +2.17.1 + + +From 3d6a1fa157e3da072ef1cf557788ad536e6c88d6 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 47/72] install/ui/test/data/ipa_init_objects.json: Change + branding to IPA and Identity Management + +--- + install/ui/test/data/ipa_init_objects.json | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/ui/test/data/ipa_init_objects.json b/install/ui/test/data/ipa_init_objects.json +index 6f9b13e92..08aaafd61 100644 +--- a/install/ui/test/data/ipa_init_objects.json ++++ b/install/ui/test/data/ipa_init_objects.json +@@ -21190,7 +21190,7 @@ + "autofill" : true, + "multivalue" : false, + "deprecated" : false, +- "doc" : "TOTP token / FreeIPA server time difference", ++ "doc" : "TOTP token / IPA server time difference", + "primary_key" : false, + "cli_metavar" : "INT", + "default" : 0, +-- +2.17.1 + + +From 9a629a06c87b1b3436d92937035de6ce66ca6d69 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 48/72] ipaclient/install/client.py: Change branding to IPA + and Identity Management + +--- + ipaclient/install/client.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaclient/install/client.py b/ipaclient/install/client.py +index 5787d03cf..cc3916648 100644 +--- a/ipaclient/install/client.py ++++ b/ipaclient/install/client.py +@@ -2022,7 +2022,7 @@ def install_check(options): + global client_domain + global cli_basedn + +- print("This program will set up FreeIPA client.") ++ print("This program will set up IPA client.") + print("Version {}".format(version.VERSION)) + print("") + +-- +2.17.1 + + +From 86ae50ed5e3466bae9481a516c5c2486161ac10d Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 49/72] ipaclient/remote_plugins/2_114/otptoken.py: Change + branding to IPA and Identity Management + +--- + ipaclient/remote_plugins/2_114/otptoken.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ipaclient/remote_plugins/2_114/otptoken.py b/ipaclient/remote_plugins/2_114/otptoken.py +index 632c97ea2..d3edb589d 100644 +--- a/ipaclient/remote_plugins/2_114/otptoken.py ++++ b/ipaclient/remote_plugins/2_114/otptoken.py +@@ -132,7 +132,7 @@ class otptoken(Object): + 'ipatokentotpclockoffset', + required=False, + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + ), + parameters.Int( + 'ipatokentotptimestep', +@@ -263,7 +263,7 @@ class otptoken_add(Method): + required=False, + cli_name='offset', + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + default=0, + autofill=True, + ), +@@ -553,7 +553,7 @@ class otptoken_find(Method): + required=False, + cli_name='offset', + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + default=0, + ), + parameters.Int( +-- +2.17.1 + + +From 1aee68b9138cbf57571494ac84a078ebff942be2 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 50/72] ipaclient/remote_plugins/2_156/otptoken.py: Change + branding to IPA and Identity Management + +--- + ipaclient/remote_plugins/2_156/otptoken.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ipaclient/remote_plugins/2_156/otptoken.py b/ipaclient/remote_plugins/2_156/otptoken.py +index 0b2b54c6e..e674d465d 100644 +--- a/ipaclient/remote_plugins/2_156/otptoken.py ++++ b/ipaclient/remote_plugins/2_156/otptoken.py +@@ -132,7 +132,7 @@ class otptoken(Object): + 'ipatokentotpclockoffset', + required=False, + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + ), + parameters.Int( + 'ipatokentotptimestep', +@@ -263,7 +263,7 @@ class otptoken_add(Method): + required=False, + cli_name='offset', + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + default=0, + autofill=True, + ), +@@ -553,7 +553,7 @@ class otptoken_find(Method): + required=False, + cli_name='offset', + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + default=0, + ), + parameters.Int( +-- +2.17.1 + + +From 14aa8dc4b66e09e4bf344ec79732eff96c952df0 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 51/72] ipaclient/remote_plugins/2_164/otptoken.py: Change + branding to IPA and Identity Management + +--- + ipaclient/remote_plugins/2_164/otptoken.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ipaclient/remote_plugins/2_164/otptoken.py b/ipaclient/remote_plugins/2_164/otptoken.py +index 0b2b54c6e..e674d465d 100644 +--- a/ipaclient/remote_plugins/2_164/otptoken.py ++++ b/ipaclient/remote_plugins/2_164/otptoken.py +@@ -132,7 +132,7 @@ class otptoken(Object): + 'ipatokentotpclockoffset', + required=False, + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + ), + parameters.Int( + 'ipatokentotptimestep', +@@ -263,7 +263,7 @@ class otptoken_add(Method): + required=False, + cli_name='offset', + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + default=0, + autofill=True, + ), +@@ -553,7 +553,7 @@ class otptoken_find(Method): + required=False, + cli_name='offset', + label=_(u'Clock offset'), +- doc=_(u'TOTP token / FreeIPA server time difference'), ++ doc=_(u'TOTP token / IPA server time difference'), + default=0, + ), + parameters.Int( +-- +2.17.1 + + +From 5be234c16ddcf8684c3d41c985f98ff6485c89db Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 52/72] ipalib/pkcs10.py: Change branding to IPA and + Identity Management + +--- + ipalib/pkcs10.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipalib/pkcs10.py b/ipalib/pkcs10.py +index 2756c8568..590ce0757 100644 +--- a/ipalib/pkcs10.py ++++ b/ipalib/pkcs10.py +@@ -2,7 +2,7 @@ from __future__ import print_function + import sys + + print( +- "ipalib.pkcs10 module is deprecated and will be removed in FreeIPA 4.6. " ++ "ipalib.pkcs10 module is deprecated and will be removed in IPA 4.6. " + "To load CSRs, please, use python-cryptography instead.", + file=sys.stderr + ) +-- +2.17.1 + + +From cd983cb830b66bfd35c353cda8eb8c83053847eb Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 53/72] ipalib/rpc.py: Change branding to IPA and Identity + Management + +--- + ipalib/rpc.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipalib/rpc.py b/ipalib/rpc.py +index b27f3cef9..f2a697199 100644 +--- a/ipalib/rpc.py ++++ b/ipalib/rpc.py +@@ -284,7 +284,7 @@ class _JSONPrimer(dict): + + Prepare a data structure for JSON serialization. In an ideal world, priming + could be handled by the default hook of json.dumps(). Unfortunately the +- hook treats Python 2 str as text while FreeIPA considers str as bytes. ++ hook treats Python 2 str as text while IPA considers str as bytes. + + The primer uses a couple of tricks to archive maximum performance: + +-- +2.17.1 + + +From 8b5459b80408929c1593895e00f37a011aa09723 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 54/72] ipalib/util.py: Change branding to IPA and Identity + Management + +--- + ipalib/util.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipalib/util.py b/ipalib/util.py +index 3e8fab49d..0aac1c799 100644 +--- a/ipalib/util.py ++++ b/ipalib/util.py +@@ -234,7 +234,7 @@ def normalize_zone(zone): + def get_proper_tls_version_span(tls_version_min, tls_version_max): + """ + This function checks whether the given TLS versions are known in +- FreeIPA and that these versions fulfill the requirements for minimal ++ IPA and that these versions fulfill the requirements for minimal + TLS version (see + `ipalib.constants: TLS_VERSIONS, TLS_VERSION_MINIMAL`). + +-- +2.17.1 + + +From 0fd0f26cbb7ff344f24acfedda97d11f46717b78 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 55/72] ipalib/x509.py: Change branding to IPA and Identity + Management + +--- + ipalib/x509.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipalib/x509.py b/ipalib/x509.py +index bc78a8058..57a7e18df 100644 +--- a/ipalib/x509.py ++++ b/ipalib/x509.py +@@ -86,7 +86,7 @@ SAN_KRB5PRINCIPALNAME = '1.3.6.1.5.2.2' + class IPACertificate(object): + """ + A proxy class wrapping a python-cryptography certificate representation for +- FreeIPA purposes ++ IPA purposes + """ + def __init__(self, cert, backend=None): + """ +-- +2.17.1 + + +From 08aaff17e615d159da73a4a254ca8d43cc05b82d Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 56/72] ipaserver/advise/plugins/legacy_clients.py: Change + branding to IPA and Identity Management + +--- + ipaserver/advise/plugins/legacy_clients.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ipaserver/advise/plugins/legacy_clients.py b/ipaserver/advise/plugins/legacy_clients.py +index 7916965dd..c0d6c73f4 100644 +--- a/ipaserver/advise/plugins/legacy_clients.py ++++ b/ipaserver/advise/plugins/legacy_clients.py +@@ -92,7 +92,7 @@ class config_redhat_sssd_before_1_9(config_base_legacy_client): + Legacy client configuration for Red Hat based systems, using SSSD. + """ + description = ('Instructions for configuring a system with an old version ' +- 'of SSSD (1.5-1.8) as a FreeIPA client. This set of ' ++ 'of SSSD (1.5-1.8) as a IPA client. This set of ' + 'instructions is targeted for platforms that include ' + 'the authconfig utility, which are all Red Hat based ' + 'platforms.') +@@ -127,7 +127,7 @@ class config_generic_linux_sssd_before_1_9(config_base_legacy_client): + using SSSD. + """ + description = ('Instructions for configuring a system with an old version ' +- 'of SSSD (1.5-1.8) as a FreeIPA client. This set of ' ++ 'of SSSD (1.5-1.8) as a IPA client. This set of ' + 'instructions is targeted for linux systems that do not ' + 'include the authconfig utility.') + +@@ -182,7 +182,7 @@ class config_redhat_nss_pam_ldapd(config_base_legacy_client): + using nss-pam-ldapd. + """ + description = ('Instructions for configuring a system with nss-pam-ldapd ' +- 'as a FreeIPA client. This set of instructions is targeted ' ++ 'as a IPA client. This set of instructions is targeted ' + 'for platforms that include the authconfig utility, which ' + 'are all Red Hat based platforms.') + +@@ -350,7 +350,7 @@ class config_redhat_nss_ldap(config_base_legacy_client): + using nss-ldap. + """ + description = ('Instructions for configuring a system with nss-ldap ' +- 'as a FreeIPA client. This set of instructions is targeted ' ++ 'as a IPA client. This set of instructions is targeted ' + 'for platforms that include the authconfig utility, which ' + 'are all Red Hat based platforms.') + +-- +2.17.1 + + +From c4c9d5687b29ee387356899151c7a64d9100f0e2 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 57/72] ipaserver/advise/plugins/smart_card_auth.py: Change + branding to IPA and Identity Management + +--- + ipaserver/advise/plugins/smart_card_auth.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ipaserver/advise/plugins/smart_card_auth.py b/ipaserver/advise/plugins/smart_card_auth.py +index 2f2e7aec9..5795f0f75 100644 +--- a/ipaserver/advise/plugins/smart_card_auth.py ++++ b/ipaserver/advise/plugins/smart_card_auth.py +@@ -95,7 +95,7 @@ class config_server_for_smart_card_auth(common_smart_card_auth_config): + """ + + description = ("Instructions for enabling Smart Card authentication on " +- " a single FreeIPA server. Includes Apache configuration, " ++ " a single IPA server. Includes Apache configuration, " + "enabling PKINIT on KDC and configuring WebUI to accept " + "Smart Card auth requests. To enable the feature in the " + "whole topology you have to run the script on each master") +@@ -222,11 +222,11 @@ class config_server_for_smart_card_auth(common_smart_card_auth_config): + @register() + class config_client_for_smart_card_auth(common_smart_card_auth_config): + """ +- Configures smart card authentication on FreeIPA client ++ Configures smart card authentication on IPA client + """ + + description = ("Instructions for enabling Smart Card authentication on " +- " a single FreeIPA client. Configures Smart Card daemon, " ++ " a single IPA client. Configures Smart Card daemon, " + "set the system-wide trust store and configures SSSD to " + "allow smart card logins to desktop") + +-- +2.17.1 + + +From 382d2f94b43410a6caefa7e8bec4f41455d7cc2b Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 58/72] ipaserver/install/dns.py: Change branding to IPA and + Identity Management + +--- + ipaserver/install/dns.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaserver/install/dns.py b/ipaserver/install/dns.py +index 80e81bbe0..c0ce42ab0 100644 +--- a/ipaserver/install/dns.py ++++ b/ipaserver/install/dns.py +@@ -149,7 +149,7 @@ def install_check(standalone, api, replica, options, hostname): + + if standalone: + print("==============================================================================") +- print("This program will setup DNS for the FreeIPA Server.") ++ print("This program will setup DNS for the IPA Server.") + print("") + print("This includes:") + print(" * Configure DNS (bind)") +-- +2.17.1 + + +From 2091272e23144e854045eec4c090311231ae6de7 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 59/72] ipaserver/install/ipa_kra_install.py: Change + branding to IPA and Identity Management + +--- + ipaserver/install/ipa_kra_install.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ipaserver/install/ipa_kra_install.py b/ipaserver/install/ipa_kra_install.py +index 45a3b09f0..9f28bb0d1 100644 +--- a/ipaserver/install/ipa_kra_install.py ++++ b/ipaserver/install/ipa_kra_install.py +@@ -87,7 +87,7 @@ class KRAInstall(admintool.AdminTool): + if options.uninstall: + sys.exit( + 'ERROR: Standalone KRA uninstallation was removed in ' +- 'FreeIPA 4.5 as it had never worked properly and only caused ' ++ 'IPA 4.5 as it had never worked properly and only caused ' + 'issues.') + else: + return KRAInstaller +@@ -98,7 +98,7 @@ class KRAInstaller(KRAInstall): + + INSTALLER_START_MESSAGE = ''' + =================================================================== +- This program will setup Dogtag KRA for the FreeIPA Server. ++ This program will setup Dogtag KRA for the IPA Server. + + ''' + +-- +2.17.1 + + +From 574f21b25242c0dd32683443eaea24a3a88529ce Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 60/72] ipaserver/install/plugins/dns.py: Change branding to + IPA and Identity Management + +--- + ipaserver/install/plugins/dns.py | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/ipaserver/install/plugins/dns.py b/ipaserver/install/plugins/dns.py +index baa19c38e..a7a1748d9 100644 +--- a/ipaserver/install/plugins/dns.py ++++ b/ipaserver/install/plugins/dns.py +@@ -161,11 +161,11 @@ class update_ipaconfigstring_dnsversion_to_ipadnsversion(Updater): + @register() + class update_dnszones(Updater): + """ +- Update all zones to meet requirements in the new FreeIPA versions ++ Update all zones to meet requirements in the new IPA versions + + 1) AllowQuery and AllowTransfer + Set AllowQuery and AllowTransfer ACLs in all zones that may be configured +- in an upgraded FreeIPA instance. ++ in an upgraded IPA instance. + + Upgrading to new version of bind-dyndb-ldap and having these ACLs empty + would result in a leak of potentially sensitive DNS information as +@@ -173,7 +173,7 @@ class update_dnszones(Updater): + or LDAP. + + This plugin disables the zone transfer by default so that it needs to be +- explicitly enabled by FreeIPA Administrator. ++ explicitly enabled by IPA Administrator. + + 2) Update policy + SSH public key support includes a feature to automatically add/update +@@ -272,7 +272,7 @@ class update_dns_limits(Updater): + @register() + class update_master_to_dnsforwardzones(DNSUpdater): + """ +- Update all zones to meet requirements in the new FreeIPA versions ++ Update all zones to meet requirements in the new IPA versions + + All masters zones with specified forwarders, and forward-policy different + than none, will be tranformed to forward zones. +@@ -420,7 +420,7 @@ class update_dnsforward_emptyzones(DNSUpdater): + + BIND ignores conflicting forwarding configuration + when forwarding policy != only. +- bind-dyndb-ldap 9.0+ will do the same so we have to adjust FreeIPA zones ++ bind-dyndb-ldap 9.0+ will do the same so we have to adjust IPA zones + accordingly. + """ + backup_filename = u'dns-forwarding-empty-zones-%Y-%m-%d-%H-%M-%S.ldif' +-- +2.17.1 + + +From 7d7cbc6f104a837678ee56bd6a66c12c80a4100e Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 61/72] ipaserver/install/replication.py: Change branding to + IPA and Identity Management + +--- + ipaserver/install/replication.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaserver/install/replication.py b/ipaserver/install/replication.py +index 92a99cd94..d77193092 100644 +--- a/ipaserver/install/replication.py ++++ b/ipaserver/install/replication.py +@@ -1693,7 +1693,7 @@ class ReplicationManager(object): + Ensure that the 'cn=replication managers,cn=sysaccounts' group exists + and contains the principals for master and remote replica + +- On FreeIPA 3.x masters lacking support for nsds5ReplicaBinddnGroup ++ On IPA 3.x masters lacking support for nsds5ReplicaBinddnGroup + attribute, add replica bind DN directly into the replica entry. + """ + my_dn = DN( +-- +2.17.1 + + +From 3c2401a5414090a8deb7e6e2d439a4094dc66eb4 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 62/72] ipaserver/install/server/install.py: Change branding + to IPA and Identity Management + +--- + ipaserver/install/server/install.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaserver/install/server/install.py b/ipaserver/install/server/install.py +index efccca77b..0a2774a6a 100644 +--- a/ipaserver/install/server/install.py ++++ b/ipaserver/install/server/install.py +@@ -381,7 +381,7 @@ def install_check(installer): + + print("=======================================" + "=======================================") +- print("This program will set up the FreeIPA Server.") ++ print("This program will set up the IPA Server.") + print("Version {}".format(version.VERSION)) + print("") + print("This includes:") +-- +2.17.1 + + +From 6bf9c6a5db6526e2126c352c6bb8e9d117a14c1a Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 63/72] ipaserver/install/server/replicainstall.py: Change + branding to IPA and Identity Management + +--- + ipaserver/install/server/replicainstall.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaserver/install/server/replicainstall.py b/ipaserver/install/server/replicainstall.py +index aaa1943f9..878c01e99 100644 +--- a/ipaserver/install/server/replicainstall.py ++++ b/ipaserver/install/server/replicainstall.py +@@ -612,7 +612,7 @@ def check_domain_level_is_supported(current): + above_upper_bound = current > constants.MAX_DOMAIN_LEVEL + + if under_lower_bound or above_upper_bound: +- message = ("This version of FreeIPA does not support " ++ message = ("This version of IPA does not support " + "the Domain Level which is currently set for " + "this domain. The Domain Level needs to be " + "raised before installing a replica with " +-- +2.17.1 + + +From 5502cd648cb527fba8c32e9cb92b6d821fcb5cb0 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 64/72] ipaserver/plugins/certmap.py: Change branding to IPA + and Identity Management + +--- + ipaserver/plugins/certmap.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaserver/plugins/certmap.py b/ipaserver/plugins/certmap.py +index 8705e4290..558c3987e 100644 +--- a/ipaserver/plugins/certmap.py ++++ b/ipaserver/plugins/certmap.py +@@ -541,7 +541,7 @@ class certmap_match(Search): + The search is performed using SSSD's DBus interface + Users.ListByCertificate. + SSSD does the lookup based on certificate mapping rules, using +- FreeIPA domain and trusted domains. ++ IPA domain and trusted domains. + :raise RemoteRetrieveError: if DBus returns an exception + """ + sssd = _sssd() +-- +2.17.1 + + +From f0176f97e82a727ee0a057838478ee8789c116c4 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 65/72] ipaserver/plugins/otptoken.py: Change branding to + IPA and Identity Management + +--- + ipaserver/plugins/otptoken.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaserver/plugins/otptoken.py b/ipaserver/plugins/otptoken.py +index 17b32094d..cf5de1cca 100644 +--- a/ipaserver/plugins/otptoken.py ++++ b/ipaserver/plugins/otptoken.py +@@ -245,7 +245,7 @@ class otptoken(LDAPObject): + Int('ipatokentotpclockoffset?', + cli_name='offset', + label=_('Clock offset'), +- doc=_('TOTP token / FreeIPA server time difference'), ++ doc=_('TOTP token / IPA server time difference'), + default=0, + autofill=True, + flags=('no_update'), +-- +2.17.1 + + +From 3f01ae64c482a63d06bb8114943f41585a605ec5 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 66/72] ipaserver/plugins/sudorule.py: Change branding to + IPA and Identity Management + +--- + ipaserver/plugins/sudorule.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ipaserver/plugins/sudorule.py b/ipaserver/plugins/sudorule.py +index 643215985..68baa0174 100644 +--- a/ipaserver/plugins/sudorule.py ++++ b/ipaserver/plugins/sudorule.py +@@ -47,7 +47,7 @@ give certain users (or groups of users) the ability to run some (or all) + commands as root or another user while providing an audit trail of the + commands and their arguments. + """) + _(""" +-FreeIPA provides a means to configure the various aspects of Sudo: ++IPA provides a means to configure the various aspects of Sudo: + Users: The user(s)/group(s) allowed to invoke Sudo. + Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke Sudo. + Allow Command: The specific command(s) permitted to be run via Sudo. +@@ -60,7 +60,7 @@ An order can be added to a sudorule to control the order in which they + are evaluated (if the client supports it). This order is an integer and + must be unique. + """) + _(""" +-FreeIPA provides a designated binddn to use with Sudo located at: ++IPA provides a designated binddn to use with Sudo located at: + uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com + """) + _(""" + To enable the binddn run the following command to set the password: +-- +2.17.1 + + +From bb3d8b2541764a92a580f7333c5fe2e966b5b07d Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 67/72] po/de.po: Change branding to IPA and Identity + Management + +--- + po/de.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/po/de.po b/po/de.po +index bc1c822c6..7a928f3ba 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -3677,7 +3677,7 @@ msgstr "TOTP Sychnronisierungsfenster" + msgid "TOTP authentication Window" + msgstr "TOTP Authentifizierungsfenster" + +-msgid "TOTP token / FreeIPA server time difference" ++msgid "TOTP token / IPA server time difference" + msgstr "Differenz zwischen Token und Serverzeit" + + msgid "Target" +-- +2.17.1 + + +From 5f8baa253864020ca013288470e19ac0f720eda4 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 68/72] po/es.po: Change branding to IPA and Identity + Management + +--- + po/es.po | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/po/es.po b/po/es.po +index 46404dac9..a4aa0fed3 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -1152,7 +1152,7 @@ msgid "" + "The profile configuration format is the raw property-list format\n" + "used by Dogtag Certificate System. The XML format is not supported.\n" + "\n" +-"The following restrictions apply to profiles managed by FreeIPA:\n" ++"The following restrictions apply to profiles managed by IPA:\n" + "\n" + "- When importing a profile the \"profileId\" field, if present, must\n" + " match the ID given on the command line.\n" +@@ -1210,7 +1210,7 @@ msgstr "" + "propiedad\n" + "usado por Dogtag Certificate System. No está soportado el formato XML.\n" + "\n" +-"A los perfiles manejados por FreeIPA se les aplican las siguientes " ++"A los perfiles manejados por IPA se les aplican las siguientes " + "restricciones:\n" + "\n" + "- Cuando se importa un perfil el campo \"profileId\", si está presente, debe " +@@ -1964,7 +1964,7 @@ msgid "" + "commands as root or another user while providing an audit trail of the\n" + "commands and their arguments.\n" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -1979,7 +1979,7 @@ msgid "" + "are evaluated (if the client supports it). This order is an integer and\n" + "must be unique.\n" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" + "To enable the binddn run the following command to set the password:\n" +@@ -1987,7 +1987,7 @@ msgid "" + "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," + "dc=com\n" + "\n" +-"For more information, see the FreeIPA Documentation to Sudo.\n" ++"For more information, see the IPA Documentation to Sudo.\n" + msgstr "" + "\n" + "Reglas Sudo\n" +@@ -2000,7 +2000,7 @@ msgstr "" + "auditoria de\n" + " los comandos y sus argumentos.\n" + "\n" +-"FreeIPA proporciona un medio para configurar diversos aspectos de Sudo:\n" ++"IPA proporciona un medio para configurar diversos aspectos de Sudo:\n" + " Users: Los usuario(s)/grupos(s) que tienen permitido llamar a Sudo.\n" + " Hosts: Loshost(s)/grupo(s) de host a los que el usuario permite llamar a " + "Sudo.\n" +@@ -2018,7 +2018,7 @@ msgstr "" + "será evaluada\n" + "(si el cliente lo soporta). Este orden es un entero y debe ser único.\n" + "\n" +-"FreeIPA suministra un binddn designado para usar con Sudo situado en :\n" ++"IPA suministra un binddn designado para usar con Sudo situado en :\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" + "Para habilitar el binddn ejecute el siguiente comando para fijar la " +@@ -2027,7 +2027,7 @@ msgstr "" + "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," + "dc=com\n" + "\n" +-"Para más información, vea la Documentación FreeIPA para Sudo.\n" ++"Para más información, vea la Documentación IPA para Sudo.\n" + + msgid "" + "\n" +-- +2.17.1 + + +From df92542ae86b04a6f9d03eb93e41105a4cf7ea34 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 69/72] po/fr.po: Change branding to IPA and Identity + Management + +--- + po/fr.po | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index 42cd3d25f..cd2ea9f9b 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -2575,17 +2575,17 @@ msgstr "" + + msgid "" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + msgstr "" + "\n" +-"FreeIPA permet la désignation d'un « binddn » à utiliser avec sudo situé " ++"IPA permet la désignation d'un « binddn » à utiliser avec sudo situé " + "à :\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + + msgid "" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -2597,7 +2597,7 @@ msgid "" + " Options: The various Sudoers Options that can modify Sudo's behavior.\n" + msgstr "" + "\n" +-"FreeIPA offre les moyens de configurer les divers aspects de sudo :\n" ++"IPA offre les moyens de configurer les divers aspects de sudo :\n" + " Users : utilisateur/groupe autorisés à invoquer sudo.\n" + " Hosts : hôte/groupe d'hôte dont l'utilisateur peut invoquer sudo.\n" + " Allow Command : commande donnée pouvant être exécutée via sudo.\n" +@@ -3708,7 +3708,7 @@ msgid "" + "The profile configuration format is the raw property-list format\n" + "used by Dogtag Certificate System. The XML format is not supported.\n" + "\n" +-"The following restrictions apply to profiles managed by FreeIPA:\n" ++"The following restrictions apply to profiles managed by IPA:\n" + "\n" + "- When importing a profile the \"profileId\" field, if present, must\n" + " match the ID given on the command line.\n" +@@ -3770,7 +3770,7 @@ msgstr "" + "propriété utilisé par Dogtag Certificate System. Le format XML n'est\n" + "pas pris en charge.\n" + "\n" +-"Les restrictions suivantes s'appliquent aux profils gérés par FreeIPA :\n" ++"Les restrictions suivantes s'appliquent aux profils gérés par IPA :\n" + "\n" + "- Lors de l'import d'un profil, le champ « profileId » s'il est présent " + "doit\n" +@@ -15762,8 +15762,8 @@ msgstr "Durée de la fenêtre d'authentification TOTP (secondes)" + msgid "TOTP synchronization time variance (seconds)" + msgstr "Variance temporelle de synchronisation TOTP (secondes)" + +-msgid "TOTP token / FreeIPA server time difference" +-msgstr "Différence entre le jeton TOTP et le serveur FreeIPA" ++msgid "TOTP token / IPA server time difference" ++msgstr "Différence entre le jeton TOTP et le serveur IPA" + + msgid "TSIG record" + msgstr "Enregistrement TSIG" +-- +2.17.1 + + +From 60393752d8623d9b059c4133eb22499743826654 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 70/72] po/ru.po: Change branding to IPA and Identity + Management + +--- + po/ru.po | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) + +diff --git a/po/ru.po b/po/ru.po +index e97f2fb8a..8026b0c73 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -5283,17 +5283,17 @@ msgstr "" + + msgid "" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + msgstr "" + "\n" +-"FreeIPA предусматривает специальную привязку DN (binddn) для использования с " ++"IPA предусматривает специальную привязку DN (binddn) для использования с " + "Sudo:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + + msgid "" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -5305,7 +5305,7 @@ msgid "" + " Options: The various Sudoers Options that can modify Sudo's behavior.\n" + msgstr "" + "\n" +-"FreeIPA предоставляет возможности настройки различных аспектов Sudo:\n" ++"IPA предоставляет возможности настройки различных аспектов Sudo:\n" + " Users: пользователь (пользователи) или группа (группы), которые могут " + "вызывать Sudo.\n" + " Hosts: узел (узлы) или группа (группы) узлов, пользователи которых могут " +@@ -8936,7 +8936,7 @@ msgid "" + "The profile configuration format is the raw property-list format\n" + "used by Dogtag Certificate System. The XML format is not supported.\n" + "\n" +-"The following restrictions apply to profiles managed by FreeIPA:\n" ++"The following restrictions apply to profiles managed by IPA:\n" + "\n" + "- When importing a profile the \"profileId\" field, if present, must\n" + " match the ID given on the command line.\n" +@@ -8990,7 +8990,7 @@ msgstr "" + "свойств, который используется системой сертификации Dogtag Certificate " + "System. Поддержка формата XML не предусмотрена.\n" + "\n" +-"К профилям под управлением FreeIPA применяются следующие ограничения:\n" ++"К профилям под управлением IPA применяются следующие ограничения:\n" + "\n" + "- При импорте профиля значение поля \"profileId\", если это поле имеется, " + "должно совпадать с идентификатором, указанным в командной строке.\n" +@@ -9046,7 +9046,7 @@ msgid "" + "The profile configuration format is the raw property-list format\n" + "used by Dogtag Certificate System. The XML format is not supported.\n" + "\n" +-"The following restrictions apply to profiles managed by FreeIPA:\n" ++"The following restrictions apply to profiles managed by IPA:\n" + "\n" + "- When importing a profile the \"profileId\" field, if present, must\n" + " match the ID given on the command line.\n" +@@ -9102,7 +9102,7 @@ msgstr "" + "свойств, который используется системой сертификации Dogtag Certificate " + "System. Поддержка формата XML не предусмотрена.\n" + "\n" +-"К профилям под управлением FreeIPA применяются следующие ограничения:\n" ++"К профилям под управлением IPA применяются следующие ограничения:\n" + "\n" + "- При импорте профиля значение поля \"profileId\", если это поле имеется, " + "должно совпадать с идентификатором, указанным в командной строке.\n" +@@ -14373,7 +14373,7 @@ msgid "" + "commands as root or another user while providing an audit trail of the\n" + "commands and their arguments.\n" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -14388,7 +14388,7 @@ msgid "" + "are evaluated (if the client supports it). This order is an integer and\n" + "must be unique.\n" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" + "To enable the binddn run the following command to set the password:\n" +@@ -14426,7 +14426,7 @@ msgstr "" + "пользователя \"root\" или другого пользователя, вместе с тем предоставляя " + "журнал аудита команд и их аргументов.\n" + "\n" +-"FreeIPA предоставляет возможности настройки различных аспектов Sudo:\n" ++"IPA предоставляет возможности настройки различных аспектов Sudo:\n" + " Users: пользователь (пользователи) или группа (группы), которые могут " + "вызывать Sudo.\n" + " Hosts: узел (узлы) или группа (группы) узлов, пользователи которых могут " +@@ -14447,7 +14447,7 @@ msgstr "" + "Порядок определяется числовым индексом (целое число), который не должен " + "повторяться.\n" + "\n" +-"FreeIPA предусматривает специальную привязку DN (binddn) для использования с " ++"IPA предусматривает специальную привязку DN (binddn) для использования с " + "Sudo:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" +@@ -14488,7 +14488,7 @@ msgid "" + "commands as root or another user while providing an audit trail of the\n" + "commands and their arguments.\n" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -14503,7 +14503,7 @@ msgid "" + "are evaluated (if the client supports it). This order is an integer and\n" + "must be unique.\n" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" + "To enable the binddn run the following command to set the password:\n" +@@ -14511,7 +14511,7 @@ msgid "" + "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," + "dc=com\n" + "\n" +-"For more information, see the FreeIPA Documentation to Sudo.\n" ++"For more information, see the IPA Documentation to Sudo.\n" + msgstr "" + "\n" + "Правила Sudo\n" +@@ -14522,7 +14522,7 @@ msgstr "" + "пользователя \"root\" или другого пользователя, вместе с тем предоставляя " + "журнал аудита команд и их аргументов.\n" + "\n" +-"FreeIPA предоставляет возможности настройки различных аспектов Sudo:\n" ++"IPA предоставляет возможности настройки различных аспектов Sudo:\n" + " Users: пользователь (пользователи) или группа (группы), которые могут " + "вызывать Sudo.\n" + " Hosts: узел (узлы) или группа (группы) узлов, пользователи которых могут " +@@ -14543,7 +14543,7 @@ msgstr "" + "Порядок определяется числовым индексом (целое число), который не должен " + "повторяться.\n" + "\n" +-"FreeIPA предусматривает специальную привязку DN (binddn) для использования с " ++"IPA предусматривает специальную привязку DN (binddn) для использования с " + "Sudo:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" +@@ -14552,7 +14552,7 @@ msgstr "" + "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," + "dc=com\n" + "\n" +-"Дополнительные сведения приведены в документации FreeIPA по Sudo.\n" ++"Дополнительные сведения приведены в документации IPA по Sudo.\n" + + msgid "" + "\n" +@@ -27537,8 +27537,8 @@ msgstr "Отклонение по времени TOTP-аутентификаци + msgid "TOTP synchronization time variance (seconds)" + msgstr "Отклонение по времени TOTP-синхронизации (в секундах)" + +-msgid "TOTP token / FreeIPA server time difference" +-msgstr "Разница времени между токеном TOTP и сервером FreeIPA" ++msgid "TOTP token / IPA server time difference" ++msgstr "Разница времени между токеном TOTP и сервером IPA" + + msgid "TSIG record" + msgstr "Запись TSIG" +-- +2.17.1 + + +From 3525520540f22c3a20077bdc65355dbd381fe69c Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 71/72] po/uk.po: Change branding to IPA and Identity + Management + +--- + po/uk.po | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) + +diff --git a/po/uk.po b/po/uk.po +index b24c0a7de..2cf7c0dc2 100644 +--- a/po/uk.po ++++ b/po/uk.po +@@ -5377,17 +5377,17 @@ msgstr "" + + msgid "" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + msgstr "" + "\n" +-"У FreeIPA передбачено визначений binddn для використання з sudo, який " ++"У IPA передбачено визначений binddn для використання з sudo, який " + "розташовано у\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + + msgid "" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -5399,7 +5399,7 @@ msgid "" + " Options: The various Sudoers Options that can modify Sudo's behavior.\n" + msgstr "" + "\n" +-"У FreeIPA передбачено декілька параметрів налаштовування роботи sudo:\n" ++"У IPA передбачено декілька параметрів налаштовування роботи sudo:\n" + " Users: користувачі або групи, які можуть викликати sudo.\n" + " Hosts: вузли або групи вузлів, користувачі якого можуть викликати sudo.\n" + " Allow Command: специфічні команди, які можна виконувати за допомогою " +@@ -9084,7 +9084,7 @@ msgid "" + "The profile configuration format is the raw property-list format\n" + "used by Dogtag Certificate System. The XML format is not supported.\n" + "\n" +-"The following restrictions apply to profiles managed by FreeIPA:\n" ++"The following restrictions apply to profiles managed by IPA:\n" + "\n" + "- When importing a profile the \"profileId\" field, if present, must\n" + " match the ID given on the command line.\n" +@@ -9138,7 +9138,7 @@ msgstr "" + "властивостей, що використовується системою сертифікації Dogtag.\n" + "Підтримки формату XML не передбачено.\n" + "\n" +-"Профілів, які керуються FreeIPA, стосуються такі обмеження:\n" ++"Профілів, які керуються IPA, стосуються такі обмеження:\n" + "\n" + "- Під час імпортування профілю поле «profileId», якщо таке є, має\n" + " містити значення, що збігається з ідентифікатором, вказаним у рядку " +@@ -9195,7 +9195,7 @@ msgid "" + "The profile configuration format is the raw property-list format\n" + "used by Dogtag Certificate System. The XML format is not supported.\n" + "\n" +-"The following restrictions apply to profiles managed by FreeIPA:\n" ++"The following restrictions apply to profiles managed by IPA:\n" + "\n" + "- When importing a profile the \"profileId\" field, if present, must\n" + " match the ID given on the command line.\n" +@@ -9250,7 +9250,7 @@ msgstr "" + "властивостей, що використовується системою сертифікації Dogtag.\n" + "Підтримки формату XML не передбачено.\n" + "\n" +-"Профілів, які керуються FreeIPA, стосуються такі обмеження:\n" ++"Профілів, які керуються IPA, стосуються такі обмеження:\n" + "\n" + "- Під час імпортування профілю поле «profileId», якщо таке є, має\n" + " містити значення, що збігається з ідентифікатором, вказаним у рядку " +@@ -14520,7 +14520,7 @@ msgid "" + "commands as root or another user while providing an audit trail of the\n" + "commands and their arguments.\n" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -14535,7 +14535,7 @@ msgid "" + "are evaluated (if the client supports it). This order is an integer and\n" + "must be unique.\n" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" + "To enable the binddn run the following command to set the password:\n" +@@ -14573,7 +14573,7 @@ msgstr "" + "користувача, зберігаючи водночас журнал виконання команд та\n" + "аргументів.\n" + "\n" +-"У FreeIPA передбачено декілька параметрів налаштовування роботи sudo:\n" ++"У IPA передбачено декілька параметрів налаштовування роботи sudo:\n" + " Users: користувачі або групи, які можуть викликати sudo.\n" + " Hosts: вузли або групи вузлів, користувачі якого можуть викликати sudo.\n" + " Allow Command: специфічні команди, які можна виконувати за допомогою " +@@ -14591,7 +14591,7 @@ msgstr "" + "обробки записів (якщо такий порядок передбачено на клієнтському боці).\n" + "Порядок визначається числовим індексом, який не повинен повторюватися.\n" + "\n" +-"У FreeIPA передбачено визначений binddn для використання з sudo, який " ++"У IPA передбачено визначений binddn для використання з sudo, який " + "розташовано у\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" +@@ -14631,7 +14631,7 @@ msgid "" + "commands as root or another user while providing an audit trail of the\n" + "commands and their arguments.\n" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -14646,7 +14646,7 @@ msgid "" + "are evaluated (if the client supports it). This order is an integer and\n" + "must be unique.\n" + "\n" +-"FreeIPA provides a designated binddn to use with Sudo located at:\n" ++"IPA provides a designated binddn to use with Sudo located at:\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" + "To enable the binddn run the following command to set the password:\n" +@@ -14654,7 +14654,7 @@ msgid "" + "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," + "dc=com\n" + "\n" +-"For more information, see the FreeIPA Documentation to Sudo.\n" ++"For more information, see the IPA Documentation to Sudo.\n" + msgstr "" + "\n" + "Правила sudo\n" +@@ -14665,7 +14665,7 @@ msgstr "" + "користувача, зберігаючи водночас журнал виконання команд та\n" + "аргументів.\n" + "\n" +-"У FreeIPA передбачено декілька параметрів налаштовування роботи sudo:\n" ++"У IPA передбачено декілька параметрів налаштовування роботи sudo:\n" + " Users: користувачі або групи, які можуть викликати sudo.\n" + " Hosts: вузли або групи вузлів, користувачі якого можуть викликати sudo.\n" + " Allow Command: специфічні команди, які можна виконувати за допомогою " +@@ -14683,7 +14683,7 @@ msgstr "" + "обробки записів (якщо такий порядок передбачено на клієнтському боці).\n" + "Порядок визначається числовим індексом, який не повинен повторюватися.\n" + "\n" +-"У FreeIPA передбачено визначений binddn для використання з sudo, який " ++"У IPA передбачено визначений binddn для використання з sudo, який " + "розташовано у\n" + "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" + "\n" +@@ -14692,7 +14692,7 @@ msgstr "" + "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," + "dc=com\n" + "\n" +-"Докладніші відомості наведено у документації з FreeIPA щодо sudo.\n" ++"Докладніші відомості наведено у документації з IPA щодо sudo.\n" + + msgid "" + "\n" +@@ -27454,8 +27454,8 @@ msgstr "Відхилення часу розпізнавання TOTP (у сек + msgid "TOTP synchronization time variance (seconds)" + msgstr "Відхилення часу синхронізації TOTP (у секундах)" + +-msgid "TOTP token / FreeIPA server time difference" +-msgstr "Часова розбіжність між ключем TOTP і сервером FreeIPA" ++msgid "TOTP token / IPA server time difference" ++msgstr "Часова розбіжність між ключем TOTP і сервером IPA" + + msgid "TSIG record" + msgstr "Запис TSIG" +-- +2.17.1 + + +From 4531df1333dc43484f2fab5ef0d601b2fe656cbb Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Sun, 7 Oct 2018 12:25:41 +0300 +Subject: [PATCH 72/72] po/zh_CN.po: Change branding to IPA and Identity + Management + +--- + po/zh_CN.po | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 594e52a77..18dcbb390 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -298,7 +298,7 @@ msgstr "" + + msgid "" + "\n" +-"FreeIPA provides a means to configure the various aspects of Sudo:\n" ++"IPA provides a means to configure the various aspects of Sudo:\n" + " Users: The user(s)/group(s) allowed to invoke Sudo.\n" + " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " + "Sudo.\n" +@@ -310,7 +310,7 @@ msgid "" + " Options: The various Sudoers Options that can modify Sudo's behavior.\n" + msgstr "" + "\n" +-"FreeIPA提供了一种方法来配置Sudo的各个方面:\n" ++"IPA提供了一种方法来配置Sudo的各个方面:\n" + " 用户:用户/用户组允许调用Sudo。\n" + " 主机:主机/主机组上的用户允许调用Sudo。\n" + " 允许的命令:指定命令允许通过Sudo来运行。\n" +@@ -10019,8 +10019,8 @@ msgstr "TOTP认证时间差异(秒)" + msgid "TOTP synchronization time variance (seconds)" + msgstr "TOTP同步时间差异(秒)" + +-msgid "TOTP token / FreeIPA server time difference" +-msgstr "TOTP令牌/FreeIPA服务器时差" ++msgid "TOTP token / IPA server time difference" ++msgstr "TOTP令牌/IPA服务器时差" + + msgid "TSIG record" + msgstr "TSIG记录" +-- +2.17.1 + diff --git a/SOURCES/1002-4.7.90pre1-Remove-csrgen.patch b/SOURCES/1002-4.7.90pre1-Remove-csrgen.patch new file mode 100644 index 0000000..16a966c --- /dev/null +++ b/SOURCES/1002-4.7.90pre1-Remove-csrgen.patch @@ -0,0 +1,1986 @@ +This is a collection of an existing patch to remove csrgen for 4.7.1 and +additional patches that have been added for 4.7.90 pre1. + +Additional reverted csrgen patches: + +852618fd6529fbdd7b03077fae37c6fbbe45b51b +0ac1d3ea62efd9751fcc59cea46bcdafe1f11c37 +7633d62d858c14523a99143aa0ff36f76bb4ff68 +53f87ee5cd9d19f6fb91a9a1eafc8ea798095954 +395a68d20887d0ac010e480e68b225d6dfeff726 +03786ad9f3bd5edc351040847b8a49c9cd9288b2 +c9d710a446d10aad72795e15bf041b87102628c1 +2b90c8a20e45ade9bfd27731cccc94a34cf3f61e +61dde27f70b9f8dd1b57ad1fbc3744f3c380613a +806784dbd9e69a89c7a705c89bf42ba1fd4265c9 +79378c90512a1cdd5f3d5ec6482e434caea06e01 +bd5a5012d24820b54cdca2955f5405b84de1178c +26ab51ddf47f421f3404709052db89f08c05adaa +a53e17830c3d4fd59a62248d4447491675c6a80e +e7588ab2dc73e7f66ebc6cdcfb99470540e37731 +136c6c3e2a4f77a27f435efd4a1cd95c9e089314 +5420e9cfbe7803808b6e26d2dae64f2a6a50149a + +Original patch from 4.7.1: + +From 468bcf90cb985e2b1eb394bd752dc39aa4b75582 Mon Sep 17 00:00:00 2001 +From: Rob Crittenden <rcritten@redhat.com> +Date: Thu, 19 Jul 2018 18:37:18 -0400 +Subject: [PATCH] Remove csrgen + +This reverts commits: +* 72de679eb445c975ec70cd265d37d4927823ce5b +* 177f07e163d6d591a1e609d35e0a6f6f5347551e +* 80be18162921268be9c8981495c9e8a4de0c85cd +* 83e2c2b65eeb5a3aa4a59c0535e9177aac5e4637 +* ada91c20588046bb147fc701718d3da4d2c080ca +* 4350dcdea22fd2284836315d0ae7d38733a7620e +* 39a5d9c5aae77687f67d9be02457733bdfb99ead +* a26cf0d7910dd4c0a4da08682b4be8d3d94ba520 +* afd7c05d11432304bfdf183832a21d419f363689 +* f1a1c6eca1b294f24174d7b0e1f78de46d9d5b05 +* fc58eff6a3d7fe805e612b8b002304d8b9cd4ba9 +* 10ef5947860f5098182b1f95c08c1158e2da15f9 + +https://bugzilla.redhat.com/show_bug.cgi?id=1432630 +--- + freeipa.spec.in | 14 - + ipaclient/csrgen.py | 488 --------------------- + ipaclient/csrgen/profiles/caIPAserviceCert.json | 15 - + ipaclient/csrgen/profiles/userCert.json | 15 - + ipaclient/csrgen/rules/dataDNS.json | 8 - + ipaclient/csrgen/rules/dataEmail.json | 8 - + ipaclient/csrgen/rules/dataHostCN.json | 8 - + ipaclient/csrgen/rules/dataSubjectBase.json | 8 - + ipaclient/csrgen/rules/dataUsernameCN.json | 8 - + ipaclient/csrgen/rules/syntaxSAN.json | 8 - + ipaclient/csrgen/rules/syntaxSubject.json | 9 - + ipaclient/csrgen/templates/openssl_base.tmpl | 17 - + ipaclient/csrgen/templates/openssl_macros.tmpl | 29 -- + ipaclient/csrgen_ffi.py | 331 -------------- + ipaclient/plugins/cert.py | 80 ---- + ipaclient/plugins/csrgen.py | 128 ------ + ipaclient/setup.py | 8 - + .../data/test_csrgen/configs/caIPAserviceCert.conf | 16 - + .../data/test_csrgen/configs/userCert.conf | 16 - + .../data/test_csrgen/profiles/profile.json | 8 - + .../data/test_csrgen/rules/basic.json | 5 - + .../data/test_csrgen/rules/options.json | 8 - + .../data/test_csrgen/templates/identity_base.tmpl | 1 - + ipatests/test_ipaclient/test_csrgen.py | 304 ------------- + 24 files changed, 1540 deletions(-) + delete mode 100644 ipaclient/csrgen.py + delete mode 100644 ipaclient/csrgen/profiles/caIPAserviceCert.json + delete mode 100644 ipaclient/csrgen/profiles/userCert.json + delete mode 100644 ipaclient/csrgen/rules/dataDNS.json + delete mode 100644 ipaclient/csrgen/rules/dataEmail.json + delete mode 100644 ipaclient/csrgen/rules/dataHostCN.json + delete mode 100644 ipaclient/csrgen/rules/dataSubjectBase.json + delete mode 100644 ipaclient/csrgen/rules/dataUsernameCN.json + delete mode 100644 ipaclient/csrgen/rules/syntaxSAN.json + delete mode 100644 ipaclient/csrgen/rules/syntaxSubject.json + delete mode 100644 ipaclient/csrgen/templates/openssl_base.tmpl + delete mode 100644 ipaclient/csrgen/templates/openssl_macros.tmpl + delete mode 100644 ipaclient/csrgen_ffi.py + delete mode 100644 ipaclient/plugins/csrgen.py + delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf + delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf + delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json + delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/rules/basic.json + delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/rules/options.json + delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl + delete mode 100644 ipatests/test_ipaclient/test_csrgen.py + +diff -urN freeipa-4.7.90.pre1.orig/freeipa.spec.in freeipa-4.7.90.pre1/freeipa.spec.in +--- freeipa-4.7.90.pre1.orig/freeipa.spec.in 2019-04-29 08:28:24.722860593 +0200 ++++ freeipa-4.7.90.pre1/freeipa.spec.in 2019-05-06 18:31:26.443792711 +0200 +@@ -1225,13 +1225,6 @@ + %dir %{python3_sitelib}/ipaclient/remote_plugins/2_* + %{python3_sitelib}/ipaclient/remote_plugins/2_*/*.py + %{python3_sitelib}/ipaclient/remote_plugins/2_*/__pycache__/*.py* +-%dir %{python3_sitelib}/ipaclient/csrgen +-%dir %{python3_sitelib}/ipaclient/csrgen/profiles +-%{python3_sitelib}/ipaclient/csrgen/profiles/*.json +-%dir %{python3_sitelib}/ipaclient/csrgen/rules +-%{python3_sitelib}/ipaclient/csrgen/rules/*.json +-%dir %{python3_sitelib}/ipaclient/csrgen/templates +-%{python3_sitelib}/ipaclient/csrgen/templates/*.tmpl + %{python3_sitelib}/ipaclient-*.egg-info + + +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/profiles/caIPAserviceCert.json freeipa-4.7.90.pre1/ipaclient/csrgen/profiles/caIPAserviceCert.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/profiles/caIPAserviceCert.json 2019-04-29 17:06:41.408224320 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/profiles/caIPAserviceCert.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,15 +0,0 @@ +-[ +- { +- "syntax": "syntaxSubject", +- "data": [ +- "dataHostCN", +- "dataSubjectBase" +- ] +- }, +- { +- "syntax": "syntaxSAN", +- "data": [ +- "dataDNS" +- ] +- } +-] +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/profiles/userCert.json freeipa-4.7.90.pre1/ipaclient/csrgen/profiles/userCert.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/profiles/userCert.json 2019-04-29 17:06:41.417224194 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/profiles/userCert.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,15 +0,0 @@ +-[ +- { +- "syntax": "syntaxSubject", +- "data": [ +- "dataUsernameCN", +- "dataSubjectBase" +- ] +- }, +- { +- "syntax": "syntaxSAN", +- "data": [ +- "dataEmail" +- ] +- } +-] +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataDNS.json freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataDNS.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataDNS.json 2019-04-29 17:06:41.422224125 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataDNS.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-{ +- "rule": { +- "template": "DNS = {{subject.krbprincipalname.0.partition('/')[2].partition('@')[0]}}" +- }, +- "options": { +- "data_source": "subject.krbprincipalname.0.partition('/')[2].partition('@')[0]" +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataEmail.json freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataEmail.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataEmail.json 2019-04-29 17:06:41.426224069 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataEmail.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-{ +- "rule": { +- "template": "email = {{subject.mail.0}}" +- }, +- "options": { +- "data_source": "subject.mail.0" +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataHostCN.json freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataHostCN.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataHostCN.json 2019-04-29 17:06:41.430224013 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataHostCN.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-{ +- "rule": { +- "template": "CN={{subject.krbprincipalname.0.partition('/')[2].partition('@')[0]}}" +- }, +- "options": { +- "data_source": "subject.krbprincipalname.0.partition('/')[2].partition('@')[0]" +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataSubjectBase.json freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataSubjectBase.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataSubjectBase.json 2019-04-29 17:06:41.437223916 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataSubjectBase.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-{ +- "rule": { +- "template": "{{config.ipacertificatesubjectbase.0}}" +- }, +- "options": { +- "data_source": "config.ipacertificatesubjectbase.0" +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataUsernameCN.json freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataUsernameCN.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/dataUsernameCN.json 2019-04-29 17:06:41.449223748 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/rules/dataUsernameCN.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-{ +- "rule": { +- "template": "CN={{subject.uid.0}}" +- }, +- "options": { +- "data_source": "subject.uid.0" +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/syntaxSAN.json freeipa-4.7.90.pre1/ipaclient/csrgen/rules/syntaxSAN.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/syntaxSAN.json 2019-04-29 17:06:41.456223650 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/rules/syntaxSAN.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-{ +- "rule": { +- "template": "subjectAltName = @{% call openssl.section() %}{{ datarules|join('\n') }}{% endcall %}" +- }, +- "options": { +- "extension": true +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/syntaxSubject.json freeipa-4.7.90.pre1/ipaclient/csrgen/rules/syntaxSubject.json +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/rules/syntaxSubject.json 2019-04-29 17:06:41.461223581 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/rules/syntaxSubject.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,9 +0,0 @@ +-{ +- "rule": { +- "template": "distinguished_name = {% call openssl.section() %}{{ datarules|reverse|join('\n') }}{% endcall %}" +- }, +- "options": { +- "required": true, +- "data_source_combinator": "and" +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/templates/openssl_base.tmpl freeipa-4.7.90.pre1/ipaclient/csrgen/templates/openssl_base.tmpl +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/templates/openssl_base.tmpl 2019-04-29 17:06:41.469223469 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/templates/openssl_base.tmpl 1970-01-01 01:00:00.000000000 +0100 +@@ -1,17 +0,0 @@ +-{% raw -%} +-{% import "openssl_macros.tmpl" as openssl -%} +-{% endraw -%} +-[ req ] +-prompt = no +-encrypt_key = no +- +-{{ parameters|join('\n') }} +-{% raw %}{% set rendered_extensions -%}{% endraw %} +-{{ extensions|join('\n') }} +-{% raw -%} +-{%- endset -%} +-{% if rendered_extensions -%} +-req_extensions = {% call openssl.section() %}{{ rendered_extensions }}{% endcall %} +-{% endif %} +-{{ openssl.openssl_sections|join('\n\n') }} +-{%- endraw %} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen/templates/openssl_macros.tmpl freeipa-4.7.90.pre1/ipaclient/csrgen/templates/openssl_macros.tmpl +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen/templates/openssl_macros.tmpl 2019-04-29 17:06:41.475223385 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen/templates/openssl_macros.tmpl 1970-01-01 01:00:00.000000000 +0100 +@@ -1,29 +0,0 @@ +-{# List containing rendered sections to be included at end #} +-{% set openssl_sections = [] %} +- +-{# +-List containing one entry for each section name allocated. Because of +-scoping rules, we need to use a list so that it can be a "per-render global" +-that gets updated in place. Real globals are shared by all templates with the +-same environment, and variables defined in the macro don't persist after the +-macro invocation ends. +-#} +-{% set openssl_section_num = [] %} +- +-{% macro section() -%} +-{% set name -%} +-sec{{ openssl_section_num|length -}} +-{% endset -%} +-{% do openssl_section_num.append('') -%} +-{% set contents %}{{ caller() }}{% endset -%} +-{% if contents -%} +-{% set sectiondata = formatsection(name, contents) -%} +-{% do openssl_sections.append(sectiondata) -%} +-{% endif -%} +-{{ name -}} +-{% endmacro %} +- +-{% macro formatsection(name, contents) -%} +-[ {{ name }} ] +-{{ contents -}} +-{% endmacro %} +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen_ffi.py freeipa-4.7.90.pre1/ipaclient/csrgen_ffi.py +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen_ffi.py 2019-04-29 17:06:41.367224892 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen_ffi.py 1970-01-01 01:00:00.000000000 +0100 +@@ -1,331 +0,0 @@ +-from cffi import FFI +-import ctypes.util +- +-from ipalib import errors +- +-_ffi = FFI() +- +-_ffi.cdef(''' +-typedef ... CONF; +-typedef ... CONF_METHOD; +-typedef ... BIO; +-typedef ... ipa_STACK_OF_CONF_VALUE; +- +-/* openssl/conf.h */ +-typedef struct { +- char *section; +- char *name; +- char *value; +-} CONF_VALUE; +- +-CONF *NCONF_new(CONF_METHOD *meth); +-void NCONF_free(CONF *conf); +-int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); +-ipa_STACK_OF_CONF_VALUE *NCONF_get_section(const CONF *conf, +- const char *section); +-char *NCONF_get_string(const CONF *conf, const char *group, const char *name); +- +-/* openssl/safestack.h */ +-// int sk_CONF_VALUE_num(ipa_STACK_OF_CONF_VALUE *); +-// CONF_VALUE *sk_CONF_VALUE_value(ipa_STACK_OF_CONF_VALUE *, int); +- +-/* openssl/stack.h */ +-typedef ... _STACK; +- +-int OPENSSL_sk_num(const _STACK *); +-void *OPENSSL_sk_value(const _STACK *, int); +- +-int sk_num(const _STACK *); +-void *sk_value(const _STACK *, int); +- +-/* openssl/bio.h */ +-BIO *BIO_new_mem_buf(const void *buf, int len); +-int BIO_free(BIO *a); +- +-/* openssl/asn1.h */ +-typedef struct ASN1_ENCODING_st { +- unsigned char *enc; /* DER encoding */ +- long len; /* Length of encoding */ +- int modified; /* set to 1 if 'enc' is invalid */ +-} ASN1_ENCODING; +- +-/* openssl/evp.h */ +-typedef ... EVP_PKEY; +- +-void EVP_PKEY_free(EVP_PKEY *pkey); +- +-/* openssl/x509.h */ +-typedef ... ASN1_INTEGER; +-typedef ... ASN1_BIT_STRING; +-typedef ... ASN1_OBJECT; +-typedef ... X509; +-typedef ... X509_ALGOR; +-typedef ... X509_CRL; +-typedef ... X509_NAME; +-typedef ... X509_PUBKEY; +-typedef ... ipa_STACK_OF_X509_ATTRIBUTE; +- +-typedef struct X509_req_info_st { +- ASN1_ENCODING enc; +- ASN1_INTEGER *version; +- X509_NAME *subject; +- X509_PUBKEY *pubkey; +- /* d=2 hl=2 l= 0 cons: cont: 00 */ +- ipa_STACK_OF_X509_ATTRIBUTE *attributes; /* [ 0 ] */ +-} X509_REQ_INFO; +- +-typedef struct X509_req_st { +- X509_REQ_INFO *req_info; +- X509_ALGOR *sig_alg; +- ASN1_BIT_STRING *signature; +- int references; +-} X509_REQ; +- +-X509_REQ *X509_REQ_new(void); +-void X509_REQ_free(X509_REQ *); +-EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); +-int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +-int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, +- const unsigned char *bytes, int len, int loc, +- int set); +-int X509_NAME_entry_count(X509_NAME *name); +-int i2d_X509_REQ_INFO(X509_REQ_INFO *a, unsigned char **out); +- +-/* openssl/objects.h */ +-ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +- +-/* openssl/x509v3.h */ +-typedef ... X509V3_CONF_METHOD; +- +-typedef struct v3_ext_ctx { +- int flags; +- X509 *issuer_cert; +- X509 *subject_cert; +- X509_REQ *subject_req; +- X509_CRL *crl; +- X509V3_CONF_METHOD *db_meth; +- void *db; +-} X509V3_CTX; +- +-void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, +- X509_REQ *req, X509_CRL *crl, int flags); +-void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +-int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, +- X509_REQ *req); +- +-/* openssl/x509v3.h */ +-unsigned long ERR_get_error(void); +-char *ERR_error_string(unsigned long e, char *buf); +-''') # noqa: E501 +- +-_libcrypto = _ffi.dlopen(ctypes.util.find_library('crypto')) +- +-NULL = _ffi.NULL +- +-# openssl/conf.h +-NCONF_new = _libcrypto.NCONF_new +-NCONF_free = _libcrypto.NCONF_free +-NCONF_load_bio = _libcrypto.NCONF_load_bio +-NCONF_get_section = _libcrypto.NCONF_get_section +-NCONF_get_string = _libcrypto.NCONF_get_string +- +-# openssl/stack.h +-try: +- sk_num = _libcrypto.OPENSSL_sk_num +- sk_value = _libcrypto.OPENSSL_sk_value +-except AttributeError: +- sk_num = _libcrypto.sk_num +- sk_value = _libcrypto.sk_value +- +- +-def sk_CONF_VALUE_num(sk): +- return sk_num(_ffi.cast("_STACK *", sk)) +- +- +-def sk_CONF_VALUE_value(sk, i): +- return _ffi.cast("CONF_VALUE *", sk_value(_ffi.cast("_STACK *", sk), i)) +- +- +-# openssl/bio.h +-BIO_new_mem_buf = _libcrypto.BIO_new_mem_buf +-BIO_free = _libcrypto.BIO_free +- +-# openssl/x509.h +-X509_REQ_new = _libcrypto.X509_REQ_new +-X509_REQ_free = _libcrypto.X509_REQ_free +-X509_REQ_set_pubkey = _libcrypto.X509_REQ_set_pubkey +-d2i_PUBKEY_bio = _libcrypto.d2i_PUBKEY_bio +-i2d_X509_REQ_INFO = _libcrypto.i2d_X509_REQ_INFO +-X509_NAME_add_entry_by_OBJ = _libcrypto.X509_NAME_add_entry_by_OBJ +-X509_NAME_entry_count = _libcrypto.X509_NAME_entry_count +- +- +-def X509_REQ_get_subject_name(req): +- return req.req_info.subject +- +- +-# openssl/objects.h +-OBJ_txt2obj = _libcrypto.OBJ_txt2obj +- +-# openssl/evp.h +-EVP_PKEY_free = _libcrypto.EVP_PKEY_free +- +-# openssl/asn1.h +-MBSTRING_UTF8 = 0x1000 +- +-# openssl/x509v3.h +-X509V3_set_ctx = _libcrypto.X509V3_set_ctx +-X509V3_set_nconf = _libcrypto.X509V3_set_nconf +-X509V3_EXT_REQ_add_nconf = _libcrypto.X509V3_EXT_REQ_add_nconf +- +-# openssl/err.h +-ERR_get_error = _libcrypto.ERR_get_error +-ERR_error_string = _libcrypto.ERR_error_string +- +- +-def _raise_openssl_errors(): +- msgs = [] +- +- code = ERR_get_error() +- while code != 0: +- msg = _ffi.string(ERR_error_string(code, NULL)) +- try: +- strmsg = msg.decode('utf-8') +- except UnicodeDecodeError: +- strmsg = repr(msg) +- msgs.append(strmsg) +- code = ERR_get_error() +- +- raise errors.CSRTemplateError(reason='\n'.join(msgs)) +- +- +-def _parse_dn_section(subj, dn_sk): +- for i in range(sk_CONF_VALUE_num(dn_sk)): +- v = sk_CONF_VALUE_value(dn_sk, i) +- rdn_type = _ffi.string(v.name) +- +- # Skip past any leading X. X: X, etc to allow for multiple instances +- for idx, c in enumerate(rdn_type): +- if c in b':,.': +- if idx+1 < len(rdn_type): +- rdn_type = rdn_type[idx+1:] +- break +- if rdn_type.startswith(b'+'): +- rdn_type = rdn_type[1:] +- mval = -1 +- else: +- mval = 0 +- +- # convert rdn_type to an OID +- # +- # OpenSSL is fussy about the case of the string. For example, +- # lower-case 'o' (for "organization name") is not recognised. +- # Therefore, try to convert the given string into an OID. If +- # that fails, convert it upper case and try again. +- # +- oid = OBJ_txt2obj(rdn_type, 0) +- if oid == NULL: +- oid = OBJ_txt2obj(rdn_type.upper(), 0) +- if oid == NULL: +- raise errors.CSRTemplateError( +- reason='unrecognised attribute type: {}' +- .format(rdn_type.decode('utf-8'))) +- +- if not X509_NAME_add_entry_by_OBJ( +- subj, oid, MBSTRING_UTF8, +- _ffi.cast("unsigned char *", v.value), -1, -1, mval): +- _raise_openssl_errors() +- +- if not X509_NAME_entry_count(subj): +- raise errors.CSRTemplateError( +- reason='error, subject in config file is empty') +- +- +-def build_requestinfo(config, public_key_info): +- ''' +- Return a cffi buffer containing a DER-encoded CertificationRequestInfo. +- +- The returned object implements the buffer protocol. +- +- ''' +- reqdata = NULL +- req = NULL +- nconf_bio = NULL +- pubkey_bio = NULL +- pubkey = NULL +- +- try: +- reqdata = NCONF_new(NULL) +- if reqdata == NULL: +- _raise_openssl_errors() +- +- nconf_bio = BIO_new_mem_buf(config, len(config)) +- errorline = _ffi.new('long[1]', [-1]) +- i = NCONF_load_bio(reqdata, nconf_bio, errorline) +- if i < 0: +- if errorline[0] < 0: +- raise errors.CSRTemplateError(reason="Can't load config file") +- else: +- raise errors.CSRTemplateError( +- reason='Error on line %d of config file' % errorline[0]) +- +- dn_sect = NCONF_get_string(reqdata, b'req', b'distinguished_name') +- if dn_sect == NULL: +- raise errors.CSRTemplateError( +- reason='Unable to find "distinguished_name" key in config') +- +- dn_sk = NCONF_get_section(reqdata, dn_sect) +- if dn_sk == NULL: +- raise errors.CSRTemplateError( +- reason='Unable to find "%s" section in config' % +- _ffi.string(dn_sect)) +- +- pubkey_bio = BIO_new_mem_buf(public_key_info, len(public_key_info)) +- pubkey = d2i_PUBKEY_bio(pubkey_bio, NULL) +- if pubkey == NULL: +- _raise_openssl_errors() +- +- req = X509_REQ_new() +- if req == NULL: +- _raise_openssl_errors() +- +- subject = X509_REQ_get_subject_name(req) +- +- _parse_dn_section(subject, dn_sk) +- +- if not X509_REQ_set_pubkey(req, pubkey): +- _raise_openssl_errors() +- +- ext_ctx = _ffi.new("X509V3_CTX[1]") +- X509V3_set_ctx(ext_ctx, NULL, NULL, req, NULL, 0) +- X509V3_set_nconf(ext_ctx, reqdata) +- +- extn_section = NCONF_get_string(reqdata, b"req", b"req_extensions") +- if extn_section != NULL: +- if not X509V3_EXT_REQ_add_nconf( +- reqdata, ext_ctx, extn_section, req): +- _raise_openssl_errors() +- +- der_len = i2d_X509_REQ_INFO(req.req_info, NULL) +- if der_len < 0: +- _raise_openssl_errors() +- +- der_buf = _ffi.new("unsigned char[%d]" % der_len) +- der_out = _ffi.new("unsigned char **", der_buf) +- der_len = i2d_X509_REQ_INFO(req.req_info, der_out) +- if der_len < 0: +- _raise_openssl_errors() +- +- return _ffi.buffer(der_buf, der_len) +- +- finally: +- if reqdata != NULL: +- NCONF_free(reqdata) +- if req != NULL: +- X509_REQ_free(req) +- if nconf_bio != NULL: +- BIO_free(nconf_bio) +- if pubkey_bio != NULL: +- BIO_free(pubkey_bio) +- if pubkey != NULL: +- EVP_PKEY_free(pubkey) +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/csrgen.py freeipa-4.7.90.pre1/ipaclient/csrgen.py +--- freeipa-4.7.90.pre1.orig/ipaclient/csrgen.py 2019-04-29 17:06:41.360224990 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/csrgen.py 1970-01-01 01:00:00.000000000 +0100 +@@ -1,488 +0,0 @@ +-# +-# Copyright (C) 2016 FreeIPA Contributors see COPYING for license +-# +- +-import base64 +-import collections +-import errno +-import json +-import logging +-import os +-import os.path +-import pipes +-import subprocess +-import traceback +-import codecs +- +-import pkg_resources +- +-from cryptography.hazmat.backends import default_backend +-from cryptography.hazmat.primitives.asymmetric import padding +-from cryptography.hazmat.primitives import hashes +-from cryptography.hazmat.primitives.serialization import ( +- load_pem_private_key, Encoding, PublicFormat) +-from cryptography.x509 import load_pem_x509_certificate +-import jinja2 +-import jinja2.ext +-import jinja2.sandbox +-from pyasn1.codec.der import decoder, encoder +-from pyasn1.type import univ +-from pyasn1_modules import rfc2314 +-import six +- +-from ipalib import api +-from ipalib import errors +-from ipalib.text import _ +- +-if six.PY3: +- unicode = str +- +-__doc__ = _(""" +-Routines for constructing certificate signing requests using IPA data and +-stored templates. +-""") +- +-logger = logging.getLogger(__name__) +- +- +-class IndexableUndefined(jinja2.Undefined): +- def __getitem__(self, key): +- return jinja2.Undefined( +- hint=self._undefined_hint, obj=self._undefined_obj, +- name=self._undefined_name, exc=self._undefined_exception) +- +- +-class IPAExtension(jinja2.ext.Extension): +- """Jinja2 extension providing useful features for CSR generation rules.""" +- +- def __init__(self, environment): +- super(IPAExtension, self).__init__(environment) +- +- environment.filters.update( +- quote=self.quote, +- required=self.required, +- ) +- +- def quote(self, data): +- return pipes.quote(data) +- +- def required(self, data, name): +- if not data: +- raise errors.CSRTemplateError( +- reason=_( +- 'Required CSR generation rule %(name)s is missing data') % +- {'name': name}) +- return data +- +- +-class Formatter: +- """ +- Class for processing a set of CSR generation rules into a template. +- +- The template can be rendered with user and database data to produce a +- config, which specifies how to build a CSR. +- +- Subclasses of Formatter should set the value of base_template_name to the +- filename of a base template with spaces for the processed rules. +- Additionally, they should override the _get_template_params method to +- produce the correct output for the base template. +- """ +- base_template_name = None +- +- def __init__(self, csr_data_dir=None): +- # chain loaders: +- # 1) csr_data_dir/templates +- # 2) /etc/ipa/csrgen/templates +- # 3) ipaclient/csrgen/templates +- loaders = [] +- if csr_data_dir is not None: +- loaders.append(jinja2.FileSystemLoader( +- os.path.join(csr_data_dir, 'templates')) +- ) +- loaders.append(jinja2.FileSystemLoader( +- os.path.join(api.env.confdir, 'csrgen/templates')) +- ) +- loaders.append(jinja2.PackageLoader('ipaclient', 'csrgen/templates')) +- +- self.jinja2 = jinja2.sandbox.SandboxedEnvironment( +- loader=jinja2.ChoiceLoader(loaders), +- extensions=[jinja2.ext.ExprStmtExtension, IPAExtension], +- keep_trailing_newline=True, undefined=IndexableUndefined) +- +- self.passthrough_globals = {} +- +- def _define_passthrough(self, call): +- """Some macros are meant to be interpreted during the final render, not +- when data rules are interpolated into syntax rules. This method allows +- those macros to be registered so that calls to them are passed through +- to the prepared rule rather than interpreted. +- """ +- +- def passthrough(caller): +- return u'{%% call %s() %%}%s{%% endcall %%}' % (call, caller()) +- +- parts = call.split('.') +- current_level = self.passthrough_globals +- for part in parts[:-1]: +- if part not in current_level: +- current_level[part] = {} +- current_level = current_level[part] +- current_level[parts[-1]] = passthrough +- +- def build_template(self, rules): +- """ +- Construct a template that can produce CSR generator strings. +- +- :param rules: list of FieldMapping to use to populate the template. +- +- :returns: jinja2.Template that can be rendered to produce the CSR data. +- """ +- syntax_rules = [] +- for field_mapping in rules: +- data_rules_prepared = [ +- self._prepare_data_rule(rule) +- for rule in field_mapping.data_rules] +- +- data_sources = [] +- for xrule in field_mapping.data_rules: +- data_source = xrule.options.get('data_source') +- if data_source: +- data_sources.append(data_source) +- +- syntax_rules.append(self._prepare_syntax_rule( +- field_mapping.syntax_rule, data_rules_prepared, +- field_mapping.description, data_sources)) +- +- template_params = self._get_template_params(syntax_rules) +- base_template = self.jinja2.get_template( +- self.base_template_name, globals=self.passthrough_globals) +- +- try: +- combined_template_source = base_template.render(**template_params) +- except jinja2.UndefinedError: +- logger.debug(traceback.format_exc()) +- raise errors.CSRTemplateError(reason=_( +- 'Template error when formatting certificate data')) +- +- logger.debug( +- 'Formatting with template: %s', combined_template_source) +- combined_template = self.jinja2.from_string(combined_template_source) +- +- return combined_template +- +- def _wrap_conditional(self, rule, condition): +- rule = '{%% if %s %%}%s{%% endif %%}' % (condition, rule) +- return rule +- +- def _wrap_required(self, rule, description): +- template = '{%% filter required("%s") %%}%s{%% endfilter %%}' % ( +- description, rule) +- +- return template +- +- def _prepare_data_rule(self, data_rule): +- template = data_rule.template +- +- data_source = data_rule.options.get('data_source') +- if data_source: +- template = self._wrap_conditional(template, data_source) +- +- return template +- +- def _prepare_syntax_rule( +- self, syntax_rule, data_rules, description, data_sources): +- logger.debug('Syntax rule template: %s', syntax_rule.template) +- template = self.jinja2.from_string( +- syntax_rule.template, globals=self.passthrough_globals) +- is_required = syntax_rule.options.get('required', False) +- try: +- prepared_template = template.render(datarules=data_rules) +- except jinja2.UndefinedError: +- logger.debug(traceback.format_exc()) +- raise errors.CSRTemplateError(reason=_( +- 'Template error when formatting certificate data')) +- +- if data_sources: +- combinator = ' %s ' % syntax_rule.options.get( +- 'data_source_combinator', 'or') +- condition = combinator.join(data_sources) +- prepared_template = self._wrap_conditional( +- prepared_template, condition) +- +- if is_required: +- prepared_template = self._wrap_required( +- prepared_template, description) +- +- return prepared_template +- +- def _get_template_params(self, syntax_rules): +- """ +- Package the syntax rules into fields expected by the base template. +- +- :param syntax_rules: list of prepared syntax rules to be included in +- the template. +- +- :returns: dict of values needed to render the base template. +- """ +- raise NotImplementedError('Formatter class must be subclassed') +- +- +-class OpenSSLFormatter(Formatter): +- """Formatter class generating the openssl config-file format.""" +- +- base_template_name = 'openssl_base.tmpl' +- +- # Syntax rules are wrapped in this data structure, to keep track of whether +- # each goes in the extension or the root section +- SyntaxRule = collections.namedtuple( +- 'SyntaxRule', ['template', 'is_extension']) +- +- def __init__(self, *args, **kwargs): +- super(OpenSSLFormatter, self).__init__(*args, **kwargs) +- self._define_passthrough('openssl.section') +- +- def _get_template_params(self, syntax_rules): +- parameters = [rule.template for rule in syntax_rules +- if not rule.is_extension] +- extensions = [rule.template for rule in syntax_rules +- if rule.is_extension] +- +- return {'parameters': parameters, 'extensions': extensions} +- +- def _prepare_syntax_rule( +- self, syntax_rule, data_rules, description, data_sources): +- """Overrides method to pull out whether rule is an extension or not.""" +- prepared_template = super(OpenSSLFormatter, self)._prepare_syntax_rule( +- syntax_rule, data_rules, description, data_sources) +- is_extension = syntax_rule.options.get('extension', False) +- return self.SyntaxRule(prepared_template, is_extension) +- +- +-class FieldMapping: +- """Representation of the rules needed to construct a complete cert field. +- +- Attributes: +- description: str, a name or description of this field, to be used in +- messages +- syntax_rule: Rule, the rule defining the syntax of this field +- data_rules: list of Rule, the rules that produce data to be stored in +- this field +- """ +- __slots__ = ['description', 'syntax_rule', 'data_rules'] +- +- def __init__(self, description, syntax_rule, data_rules): +- self.description = description +- self.syntax_rule = syntax_rule +- self.data_rules = data_rules +- +- +-class Rule: +- __slots__ = ['name', 'template', 'options'] +- +- def __init__(self, name, template, options): +- self.name = name +- self.template = template +- self.options = options +- +- +-class RuleProvider: +- def rules_for_profile(self, profile_id): +- """ +- Return the rules needed to build a CSR using the given profile. +- +- :param profile_id: str, name of the CSR generation profile to use +- +- :returns: list of FieldMapping, filled out with the appropriate rules +- """ +- raise NotImplementedError('RuleProvider class must be subclassed') +- +- +-class FileRuleProvider(RuleProvider): +- def __init__(self, csr_data_dir=None): +- self.rules = {} +- self._csrgen_data_dirs = [] +- if csr_data_dir is not None: +- self._csrgen_data_dirs.append(csr_data_dir) +- self._csrgen_data_dirs.append( +- os.path.join(api.env.confdir, 'csrgen') +- ) +- self._csrgen_data_dirs.append( +- pkg_resources.resource_filename('ipaclient', 'csrgen') +- ) +- +- def _open(self, subdir, filename): +- for data_dir in self._csrgen_data_dirs: +- path = os.path.join(data_dir, subdir, filename) +- try: +- return open(path) +- except IOError as e: +- if e.errno != errno.ENOENT: +- raise +- raise IOError( +- errno.ENOENT, +- "'{}' not found in {}".format( +- os.path.join(subdir, filename), +- ", ".join(self._csrgen_data_dirs) +- ) +- ) +- +- def _rule(self, rule_name): +- if rule_name not in self.rules: +- try: +- with self._open('rules', '%s.json' % rule_name) as f: +- ruleconf = json.load(f) +- except IOError: +- raise errors.NotFound( +- reason=_('No generation rule %(rulename)s found.') % +- {'rulename': rule_name}) +- +- try: +- rule = ruleconf['rule'] +- except KeyError: +- raise errors.EmptyResult( +- reason=_('Generation rule "%(rulename)s" is missing the' +- ' "rule" key') % {'rulename': rule_name}) +- +- options = ruleconf.get('options', {}) +- +- self.rules[rule_name] = Rule( +- rule_name, rule['template'], options) +- +- return self.rules[rule_name] +- +- def rules_for_profile(self, profile_id): +- try: +- with self._open('profiles', '%s.json' % profile_id) as f: +- profile = json.load(f) +- except IOError: +- raise errors.NotFound( +- reason=_('No CSR generation rules are defined for profile' +- ' %(profile_id)s') % {'profile_id': profile_id}) +- +- field_mappings = [] +- for field in profile: +- syntax_rule = self._rule(field['syntax']) +- data_rules = [self._rule(name) for name in field['data']] +- field_mappings.append(FieldMapping( +- syntax_rule.name, syntax_rule, data_rules)) +- return field_mappings +- +- +-class CSRGenerator: +- def __init__(self, rule_provider, formatter_class=OpenSSLFormatter): +- self.rule_provider = rule_provider +- self.formatter = formatter_class() +- +- def csr_config(self, principal, config, profile_id): +- render_data = {'subject': principal, 'config': config} +- +- rules = self.rule_provider.rules_for_profile(profile_id) +- template = self.formatter.build_template(rules) +- +- try: +- config = template.render(render_data) +- except jinja2.UndefinedError: +- logger.debug(traceback.format_exc()) +- raise errors.CSRTemplateError(reason=_( +- 'Template error when formatting certificate data')) +- +- return config +- +- +-class CSRLibraryAdaptor: +- def get_subject_public_key_info(self): +- raise NotImplementedError('Use a subclass of CSRLibraryAdaptor') +- +- def sign_csr(self, certification_request_info): +- """Sign a CertificationRequestInfo. +- +- :returns: bytes, a DER-encoded signed CSR. +- """ +- raise NotImplementedError('Use a subclass of CSRLibraryAdaptor') +- +- +-class OpenSSLAdaptor: +- def __init__(self, key=None, key_filename=None, password_filename=None): +- """ +- Must provide either ``key_filename`` or ``key``. +- +- """ +- if key_filename is not None: +- with open(key_filename, 'rb') as key_file: +- key_bytes = key_file.read() +- +- password = None +- if password_filename is not None: +- with open(password_filename, 'rb') as password_file: +- password = password_file.read().strip() +- +- self._key = load_pem_private_key( +- key_bytes, password, default_backend()) +- +- elif key is not None: +- self._key = key +- +- else: +- raise ValueError("Must provide 'key' or 'key_filename'") +- +- def key(self): +- return self._key +- +- def get_subject_public_key_info(self): +- pubkey_info = self.key().public_key().public_bytes( +- Encoding.DER, PublicFormat.SubjectPublicKeyInfo) +- return pubkey_info +- +- def sign_csr(self, certification_request_info): +- reqinfo = decoder.decode( +- certification_request_info, rfc2314.CertificationRequestInfo())[0] +- csr = rfc2314.CertificationRequest() +- csr.setComponentByName('certificationRequestInfo', reqinfo) +- +- algorithm = rfc2314.SignatureAlgorithmIdentifier() +- algorithm.setComponentByName( +- 'algorithm', univ.ObjectIdentifier( +- '1.2.840.113549.1.1.11')) # sha256WithRSAEncryption +- csr.setComponentByName('signatureAlgorithm', algorithm) +- +- signature = self.key().sign( +- certification_request_info, +- padding.PKCS1v15(), +- hashes.SHA256() +- ) +- asn1sig = univ.BitString("'{sig}'H".format( +- sig=codecs.encode(signature, 'hex') +- .decode('ascii')) +- ) +- csr.setComponentByName('signature', asn1sig) +- return encoder.encode(csr) +- +- +-class NSSAdaptor: +- def __init__(self, database, password_filename): +- self.database = database +- self.password_filename = password_filename +- self.nickname = base64.b32encode(os.urandom(40)) +- +- def get_subject_public_key_info(self): +- temp_cn = base64.b32encode(os.urandom(40)).decode('ascii') +- +- password_args = [] +- if self.password_filename is not None: +- password_args = ['-f', self.password_filename] +- +- subprocess.check_call( +- ['certutil', '-S', '-n', self.nickname, '-s', 'CN=%s' % temp_cn, +- '-x', '-t', ',,', '-d', self.database] + password_args) +- cert_pem = subprocess.check_output( +- ['certutil', '-L', '-n', self.nickname, '-a', +- '-d', self.database] + password_args) +- +- cert = load_pem_x509_certificate(cert_pem, default_backend()) +- pubkey_info = cert.public_key().public_bytes( +- Encoding.DER, PublicFormat.SubjectPublicKeyInfo) +- +- return pubkey_info +- +- def sign_csr(self, certification_request_info): +- raise NotImplementedError('NSS is not yet supported') +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/plugins/cert.py freeipa-4.7.90.pre1/ipaclient/plugins/cert.py +--- freeipa-4.7.90.pre1.orig/ipaclient/plugins/cert.py 2019-04-29 17:06:41.645221012 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/plugins/cert.py 2019-05-06 18:31:28.384751096 +0200 +@@ -21,8 +21,6 @@ + + import base64 + +-import six +- + from ipaclient.frontend import MethodOverride + from ipalib import errors + from ipalib import x509 +@@ -31,9 +29,6 @@ + from ipalib.plugable import Registry + from ipalib.text import _ + +-if six.PY3: +- unicode = str +- + register = Registry() + + +@@ -73,87 +68,12 @@ + + @register(override=True, no_fail=True) + class cert_request(CertRetrieveOverride): +- takes_options = CertRetrieveOverride.takes_options + ( +- Str( +- 'database?', +- label=_('Path to NSS database'), +- doc=_('Path to NSS database to use for private key'), +- ), +- Str( +- 'private_key?', +- label=_('Path to private key file'), +- doc=_('Path to PEM file containing a private key'), +- ), +- Str( +- 'password_file?', +- label=_( +- 'File containing a password for the private key or database'), +- ), +- Str( +- 'csr_profile_id?', +- label=_('Name of CSR generation profile (if not the same as' +- ' profile_id)'), +- ), +- ) +- + def get_args(self): + for arg in super(cert_request, self).get_args(): + if arg.name == 'csr': + arg = arg.clone_retype(arg.name, File, required=False) + yield arg + +- def forward(self, csr=None, **options): +- database = options.pop('database', None) +- private_key = options.pop('private_key', None) +- csr_profile_id = options.pop('csr_profile_id', None) +- password_file = options.pop('password_file', None) +- +- if csr is None: +- # Deferred import, ipaclient.csrgen is expensive to load. +- # see https://pagure.io/freeipa/issue/7484 +- from ipaclient import csrgen +- +- if database: +- adaptor = csrgen.NSSAdaptor(database, password_file) +- elif private_key: +- adaptor = csrgen.OpenSSLAdaptor( +- key_filename=private_key, password_filename=password_file) +- else: +- raise errors.InvocationError( +- message=u"One of 'database' or 'private_key' is required") +- +- pubkey_info = adaptor.get_subject_public_key_info() +- pubkey_info_b64 = base64.b64encode(pubkey_info) +- +- # If csr_profile_id is passed, that takes precedence. +- # Otherwise, use profile_id. If neither are passed, the default +- # in cert_get_requestdata will be used. +- profile_id = csr_profile_id +- if profile_id is None: +- profile_id = options.get('profile_id') +- +- response = self.api.Command.cert_get_requestdata( +- profile_id=profile_id, +- principal=options.get('principal'), +- public_key_info=pubkey_info_b64) +- +- req_info_b64 = response['result']['request_info'] +- req_info = base64.b64decode(req_info_b64) +- +- csr = adaptor.sign_csr(req_info) +- +- if not csr: +- raise errors.CertificateOperationError( +- error=(_('Generated CSR was empty'))) +- +- else: +- if database is not None or private_key is not None: +- raise errors.MutuallyExclusiveError(reason=_( +- "Options 'database' and 'private_key' are not compatible" +- " with 'csr'")) +- +- return super(cert_request, self).forward(csr, **options) +- + + @register(override=True, no_fail=True) + class cert_show(CertRetrieveOverride): +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/plugins/cert.py.orig freeipa-4.7.90.pre1/ipaclient/plugins/cert.py.orig +--- freeipa-4.7.90.pre1.orig/ipaclient/plugins/cert.py.orig 1970-01-01 01:00:00.000000000 +0100 ++++ freeipa-4.7.90.pre1/ipaclient/plugins/cert.py.orig 2019-04-29 17:06:41.645221012 +0200 +@@ -0,0 +1,215 @@ ++# Authors: ++# Andrew Wnuk <awnuk@redhat.com> ++# Jason Gerard DeRose <jderose@redhat.com> ++# John Dennis <jdennis@redhat.com> ++# ++# Copyright (C) 2009 Red Hat ++# see file 'COPYING' for use and warranty information ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <http://www.gnu.org/licenses/>. ++ ++import base64 ++ ++import six ++ ++from ipaclient.frontend import MethodOverride ++from ipalib import errors ++from ipalib import x509 ++from ipalib import util ++from ipalib.parameters import BinaryFile, File, Flag, Str ++from ipalib.plugable import Registry ++from ipalib.text import _ ++ ++if six.PY3: ++ unicode = str ++ ++register = Registry() ++ ++ ++class CertRetrieveOverride(MethodOverride): ++ takes_options = ( ++ Str( ++ 'certificate_out?', ++ doc=_('Write certificate (chain if --chain used) to file'), ++ include='cli', ++ cli_metavar='FILE', ++ ), ++ ) ++ ++ def forward(self, *args, **options): ++ if 'certificate_out' in options: ++ certificate_out = options.pop('certificate_out') ++ try: ++ util.check_writable_file(certificate_out) ++ except errors.FileError as e: ++ raise errors.ValidationError(name='certificate-out', ++ error=str(e)) ++ else: ++ certificate_out = None ++ ++ result = super(CertRetrieveOverride, self).forward(*args, **options) ++ ++ if certificate_out is not None: ++ if options.get('chain', False): ++ certs = result['result']['certificate_chain'] ++ else: ++ certs = [base64.b64decode(result['result']['certificate'])] ++ certs = (x509.load_der_x509_certificate(cert) for cert in certs) ++ x509.write_certificate_list(certs, certificate_out) ++ ++ return result ++ ++ ++@register(override=True, no_fail=True) ++class cert_request(CertRetrieveOverride): ++ takes_options = CertRetrieveOverride.takes_options + ( ++ Str( ++ 'database?', ++ label=_('Path to NSS database'), ++ doc=_('Path to NSS database to use for private key'), ++ ), ++ Str( ++ 'private_key?', ++ label=_('Path to private key file'), ++ doc=_('Path to PEM file containing a private key'), ++ ), ++ Str( ++ 'password_file?', ++ label=_( ++ 'File containing a password for the private key or database'), ++ ), ++ Str( ++ 'csr_profile_id?', ++ label=_('Name of CSR generation profile (if not the same as' ++ ' profile_id)'), ++ ), ++ ) ++ ++ def get_args(self): ++ for arg in super(cert_request, self).get_args(): ++ if arg.name == 'csr': ++ arg = arg.clone_retype(arg.name, File, required=False) ++ yield arg ++ ++ def forward(self, csr=None, **options): ++ database = options.pop('database', None) ++ private_key = options.pop('private_key', None) ++ csr_profile_id = options.pop('csr_profile_id', None) ++ password_file = options.pop('password_file', None) ++ ++ if csr is None: ++ # Deferred import, ipaclient.csrgen is expensive to load. ++ # see https://pagure.io/freeipa/issue/7484 ++ from ipaclient import csrgen ++ ++ if database: ++ adaptor = csrgen.NSSAdaptor(database, password_file) ++ elif private_key: ++ adaptor = csrgen.OpenSSLAdaptor( ++ key_filename=private_key, password_filename=password_file) ++ else: ++ raise errors.InvocationError( ++ message=u"One of 'database' or 'private_key' is required") ++ ++ pubkey_info = adaptor.get_subject_public_key_info() ++ pubkey_info_b64 = base64.b64encode(pubkey_info) ++ ++ # If csr_profile_id is passed, that takes precedence. ++ # Otherwise, use profile_id. If neither are passed, the default ++ # in cert_get_requestdata will be used. ++ profile_id = csr_profile_id ++ if profile_id is None: ++ profile_id = options.get('profile_id') ++ ++ response = self.api.Command.cert_get_requestdata( ++ profile_id=profile_id, ++ principal=options.get('principal'), ++ public_key_info=pubkey_info_b64) ++ ++ req_info_b64 = response['result']['request_info'] ++ req_info = base64.b64decode(req_info_b64) ++ ++ csr = adaptor.sign_csr(req_info) ++ ++ if not csr: ++ raise errors.CertificateOperationError( ++ error=(_('Generated CSR was empty'))) ++ ++ else: ++ if database is not None or private_key is not None: ++ raise errors.MutuallyExclusiveError(reason=_( ++ "Options 'database' and 'private_key' are not compatible" ++ " with 'csr'")) ++ ++ return super(cert_request, self).forward(csr, **options) ++ ++ ++@register(override=True, no_fail=True) ++class cert_show(CertRetrieveOverride): ++ def get_options(self): ++ for option in super(cert_show, self).get_options(): ++ if option.name == 'out': ++ # skip server-defined --out ++ continue ++ if option.name == 'certificate_out': ++ # add --out as a deprecated alias of --certificate-out ++ option = option.clone_rename( ++ 'out', ++ cli_name='certificate_out', ++ deprecated_cli_aliases={'out'}, ++ ) ++ yield option ++ ++ def forward(self, *args, **options): ++ try: ++ options['certificate_out'] = options.pop('out') ++ except KeyError: ++ pass ++ ++ return super(cert_show, self).forward(*args, **options) ++ ++ ++@register(override=True, no_fail=True) ++class cert_remove_hold(MethodOverride): ++ has_output_params = ( ++ Flag('unrevoked', ++ label=_('Unrevoked'), ++ ), ++ Str('error_string', ++ label=_('Error'), ++ ), ++ ) ++ ++ ++@register(override=True, no_fail=True) ++class cert_find(MethodOverride): ++ takes_options = ( ++ BinaryFile( ++ 'file?', ++ label=_("Input filename"), ++ doc=_('File to load the certificate from.'), ++ include='cli', ++ ), ++ ) ++ ++ def forward(self, *args, **options): ++ if self.api.env.context == 'cli': ++ if 'certificate' in options and 'file' in options: ++ raise errors.MutuallyExclusiveError( ++ reason=_("cannot specify both raw certificate and file")) ++ if 'certificate' not in options and 'file' in options: ++ options['certificate'] = x509.load_unknown_x509_certificate( ++ options.pop('file')) ++ ++ return super(cert_find, self).forward(*args, **options) +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/plugins/csrgen.py freeipa-4.7.90.pre1/ipaclient/plugins/csrgen.py +--- freeipa-4.7.90.pre1.orig/ipaclient/plugins/csrgen.py 2019-04-29 17:06:41.669220677 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/plugins/csrgen.py 1970-01-01 01:00:00.000000000 +0100 +@@ -1,128 +0,0 @@ +-# +-# Copyright (C) 2016 FreeIPA Contributors see COPYING for license +-# +- +-import base64 +- +-import six +- +-from ipalib import api +-from ipalib import errors +-from ipalib import output +-from ipalib import util +-from ipalib.frontend import Local, Str +-from ipalib.parameters import Bytes, Principal +-from ipalib.plugable import Registry +-from ipalib.text import _ +-from ipapython import dogtag +- +- +-if six.PY3: +- unicode = str +- +-register = Registry() +- +-__doc__ = _(""" +-Commands to build certificate requests automatically +-""") +- +- +-@register() +-class cert_get_requestdata(Local): +- __doc__ = _('Gather data for a certificate signing request.') +- +- NO_CLI = True +- +- takes_options = ( +- Principal( +- 'principal', +- label=_('Principal'), +- doc=_('Principal for this certificate (e.g.' +- ' HTTP/test.example.com)'), +- ), +- Str( +- 'profile_id?', +- label=_('Profile ID'), +- doc=_('CSR Generation Profile to use'), +- ), +- Bytes( +- 'public_key_info', +- label=_('Subject Public Key Info'), +- doc=_('DER-encoded SubjectPublicKeyInfo structure'), +- ), +- Str( +- 'out?', +- doc=_('Write CertificationRequestInfo to file'), +- ), +- ) +- +- has_output = ( +- output.Output( +- 'result', +- type=dict, +- doc=_('Dictionary mapping variable name to value'), +- ), +- ) +- +- has_output_params = ( +- Str( +- 'request_info', +- label=_('CertificationRequestInfo structure'), +- ) +- ) +- +- def execute(self, *args, **options): +- # Deferred import, ipaclient.csrgen is expensive to load. +- # see https://pagure.io/freeipa/issue/7484 +- from ipaclient import csrgen +- from ipaclient import csrgen_ffi +- +- if 'out' in options: +- util.check_writable_file(options['out']) +- +- principal = options.get('principal') +- profile_id = options.get('profile_id') +- if profile_id is None: +- profile_id = dogtag.DEFAULT_PROFILE +- public_key_info = options.get('public_key_info') +- public_key_info = base64.b64decode(public_key_info) +- +- if self.api.env.in_server: +- backend = self.api.Backend.ldap2 +- else: +- backend = self.api.Backend.rpcclient +- if not backend.isconnected(): +- backend.connect() +- +- try: +- if principal.is_host: +- principal_obj = api.Command.host_show( +- principal.hostname, all=True) +- elif principal.is_service: +- principal_obj = api.Command.service_show( +- unicode(principal), all=True) +- elif principal.is_user: +- principal_obj = api.Command.user_show( +- principal.username, all=True) +- except errors.NotFound: +- raise errors.NotFound( +- reason=_("The principal for this request doesn't exist.")) +- principal_obj = principal_obj['result'] +- config = api.Command.config_show()['result'] +- +- generator = csrgen.CSRGenerator(csrgen.FileRuleProvider()) +- +- csr_config = generator.csr_config(principal_obj, config, profile_id) +- request_info = base64.b64encode(csrgen_ffi.build_requestinfo( +- csr_config.encode('utf8'), public_key_info)) +- +- result = {} +- if 'out' in options: +- with open(options['out'], 'wb') as f: +- f.write(request_info) +- else: +- result = dict(request_info=request_info) +- +- return dict( +- result=result +- ) +diff -urN freeipa-4.7.90.pre1.orig/ipaclient/setup.py freeipa-4.7.90.pre1/ipaclient/setup.py +--- freeipa-4.7.90.pre1.orig/ipaclient/setup.py 2019-04-29 17:06:41.393224529 +0200 ++++ freeipa-4.7.90.pre1/ipaclient/setup.py 2019-05-06 18:33:16.002443738 +0200 +@@ -41,13 +41,6 @@ + "ipaclient.remote_plugins.2_156", + "ipaclient.remote_plugins.2_164", + ], +- package_data={ +- 'ipaclient': [ +- 'csrgen/profiles/*.json', +- 'csrgen/rules/*.json', +- 'csrgen/templates/*.tmpl', +- ], +- }, + install_requires=[ + "cryptography", + "ipalib", +@@ -63,7 +56,6 @@ + extras_require={ + "install": ["ipaplatform"], + "otptoken_yubikey": ["python-yubico", "pyusb"], +- "csrgen": ["cffi", "jinja2"], + "ldap": ["python-ldap"], # ipapython.ipaldap + }, + zip_safe=False, +diff -urN freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf +--- freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf 2019-04-29 17:06:49.265114643 +0200 ++++ freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf 1970-01-01 01:00:00.000000000 +0100 +@@ -1,16 +0,0 @@ +-[ req ] +-prompt = no +-encrypt_key = no +- +-distinguished_name = sec0 +-req_extensions = sec2 +- +-[ sec0 ] +-O=DOMAIN.EXAMPLE.COM +-CN=machine.example.com +- +-[ sec1 ] +-DNS = machine.example.com +- +-[ sec2 ] +-subjectAltName = @sec1 +diff -urN freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf +--- freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf 2019-04-29 17:06:49.277114475 +0200 ++++ freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf 1970-01-01 01:00:00.000000000 +0100 +@@ -1,16 +0,0 @@ +-[ req ] +-prompt = no +-encrypt_key = no +- +-distinguished_name = sec0 +-req_extensions = sec2 +- +-[ sec0 ] +-O=DOMAIN.EXAMPLE.COM +-CN=testuser +- +-[ sec1 ] +-email = testuser@example.com +- +-[ sec2 ] +-subjectAltName = @sec1 +diff -urN freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json +--- freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json 2019-04-29 17:06:49.283114391 +0200 ++++ freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-[ +- { +- "syntax": "basic", +- "data": [ +- "options" +- ] +- } +-] +diff -urN freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json +--- freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json 2019-04-29 17:06:49.294114238 +0200 ++++ freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,5 +0,0 @@ +-{ +- "rule": { +- "template": "openssl_rule" +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/rules/options.json freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/rules/options.json +--- freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/rules/options.json 2019-04-29 17:06:49.300114154 +0200 ++++ freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/rules/options.json 1970-01-01 01:00:00.000000000 +0100 +@@ -1,8 +0,0 @@ +-{ +- "rule": { +- "template": "openssl_rule" +- }, +- "options": { +- "rule_option": true +- } +-} +diff -urN freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl +--- freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl 2019-04-29 17:06:49.313113973 +0200 ++++ freeipa-4.7.90.pre1/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl 1970-01-01 01:00:00.000000000 +0100 +@@ -1 +0,0 @@ +-{{ options|join(";") }} +diff -urN freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/test_csrgen.py freeipa-4.7.90.pre1/ipatests/test_ipaclient/test_csrgen.py +--- freeipa-4.7.90.pre1.orig/ipatests/test_ipaclient/test_csrgen.py 2019-04-29 17:06:49.251114838 +0200 ++++ freeipa-4.7.90.pre1/ipatests/test_ipaclient/test_csrgen.py 1970-01-01 01:00:00.000000000 +0100 +@@ -1,304 +0,0 @@ +-# +-# Copyright (C) 2016 FreeIPA Contributors see COPYING for license +-# +- +-import os +-import pytest +- +-from cryptography.hazmat.backends import default_backend +-from cryptography.hazmat.primitives.asymmetric import rsa +-from cryptography import x509 +- +-from ipaclient import csrgen, csrgen_ffi +-from ipalib import errors +- +-BASE_DIR = os.path.dirname(__file__) +-CSR_DATA_DIR = os.path.join(BASE_DIR, 'data', 'test_csrgen') +- +- +-@pytest.fixture +-def formatter(): +- return csrgen.Formatter(csr_data_dir=CSR_DATA_DIR) +- +- +-@pytest.fixture +-def rule_provider(): +- return csrgen.FileRuleProvider(csr_data_dir=CSR_DATA_DIR) +- +- +-@pytest.fixture +-def generator(): +- return csrgen.CSRGenerator(csrgen.FileRuleProvider()) +- +- +-class StubRuleProvider(csrgen.RuleProvider): +- def __init__(self): +- self.syntax_rule = csrgen.Rule( +- 'syntax', '{{datarules|join(",")}}', {}) +- self.data_rule = csrgen.Rule('data', 'data_template', {}) +- self.field_mapping = csrgen.FieldMapping( +- 'example', self.syntax_rule, [self.data_rule]) +- self.rules = [self.field_mapping] +- +- def rules_for_profile(self, profile_id): +- return self.rules +- +- +-class IdentityFormatter(csrgen.Formatter): +- base_template_name = 'identity_base.tmpl' +- +- def __init__(self): +- super(IdentityFormatter, self).__init__(csr_data_dir=CSR_DATA_DIR) +- +- def _get_template_params(self, syntax_rules): +- return {'options': syntax_rules} +- +- +-class test_Formatter: +- def test_prepare_data_rule_with_data_source(self, formatter): +- data_rule = csrgen.Rule('uid', '{{subject.uid.0}}', +- {'data_source': 'subject.uid.0'}) +- prepared = formatter._prepare_data_rule(data_rule) +- assert prepared == '{% if subject.uid.0 %}{{subject.uid.0}}{% endif %}' +- +- def test_prepare_data_rule_no_data_source(self, formatter): +- """Not a normal case, but we should handle it anyway""" +- data_rule = csrgen.Rule('uid', 'static_text', {}) +- prepared = formatter._prepare_data_rule(data_rule) +- assert prepared == 'static_text' +- +- def test_prepare_syntax_rule_with_data_sources(self, formatter): +- syntax_rule = csrgen.Rule( +- 'example', '{{datarules|join(",")}}', {}) +- data_rules = ['{{subject.field1}}', '{{subject.field2}}'] +- data_sources = ['subject.field1', 'subject.field2'] +- prepared = formatter._prepare_syntax_rule( +- syntax_rule, data_rules, 'example', data_sources) +- +- assert prepared == ( +- '{% if subject.field1 or subject.field2 %}{{subject.field1}},' +- '{{subject.field2}}{% endif %}') +- +- def test_prepare_syntax_rule_with_combinator(self, formatter): +- syntax_rule = csrgen.Rule('example', '{{datarules|join(",")}}', +- {'data_source_combinator': 'and'}) +- data_rules = ['{{subject.field1}}', '{{subject.field2}}'] +- data_sources = ['subject.field1', 'subject.field2'] +- prepared = formatter._prepare_syntax_rule( +- syntax_rule, data_rules, 'example', data_sources) +- +- assert prepared == ( +- '{% if subject.field1 and subject.field2 %}{{subject.field1}},' +- '{{subject.field2}}{% endif %}') +- +- def test_prepare_syntax_rule_required(self, formatter): +- syntax_rule = csrgen.Rule('example', '{{datarules|join(",")}}', +- {'required': True}) +- data_rules = ['{{subject.field1}}'] +- data_sources = ['subject.field1'] +- prepared = formatter._prepare_syntax_rule( +- syntax_rule, data_rules, 'example', data_sources) +- +- assert prepared == ( +- '{% filter required("example") %}{% if subject.field1 %}' +- '{{subject.field1}}{% endif %}{% endfilter %}') +- +- def test_prepare_syntax_rule_passthrough(self, formatter): +- """ +- Calls to macros defined as passthrough are still call tags in the final +- template. +- """ +- formatter._define_passthrough('example.macro') +- +- syntax_rule = csrgen.Rule( +- 'example', +- '{% call example.macro() %}{{datarules|join(",")}}{% endcall %}', +- {}) +- data_rules = ['{{subject.field1}}'] +- data_sources = ['subject.field1'] +- prepared = formatter._prepare_syntax_rule( +- syntax_rule, data_rules, 'example', data_sources) +- +- assert prepared == ( +- '{% if subject.field1 %}{% call example.macro() %}' +- '{{subject.field1}}{% endcall %}{% endif %}') +- +- def test_prepare_syntax_rule_no_data_sources(self, formatter): +- """Not a normal case, but we should handle it anyway""" +- syntax_rule = csrgen.Rule( +- 'example', '{{datarules|join(",")}}', {}) +- data_rules = ['rule1', 'rule2'] +- data_sources = [] +- prepared = formatter._prepare_syntax_rule( +- syntax_rule, data_rules, 'example', data_sources) +- +- assert prepared == 'rule1,rule2' +- +- +-class test_FileRuleProvider: +- def test_rule_basic(self, rule_provider): +- rule_name = 'basic' +- +- rule = rule_provider._rule(rule_name) +- +- assert rule.template == 'openssl_rule' +- +- def test_rule_global_options(self, rule_provider): +- rule_name = 'options' +- +- rule = rule_provider._rule(rule_name) +- +- assert rule.options['rule_option'] is True +- +- def test_rule_nosuchrule(self, rule_provider): +- with pytest.raises(errors.NotFound): +- rule_provider._rule('nosuchrule') +- +- def test_rules_for_profile_success(self, rule_provider): +- rules = rule_provider.rules_for_profile('profile') +- +- assert len(rules) == 1 +- field_mapping = rules[0] +- assert field_mapping.syntax_rule.name == 'basic' +- assert len(field_mapping.data_rules) == 1 +- assert field_mapping.data_rules[0].name == 'options' +- +- def test_rules_for_profile_nosuchprofile(self, rule_provider): +- with pytest.raises(errors.NotFound): +- rule_provider.rules_for_profile('nosuchprofile') +- +- +-class test_CSRGenerator: +- def test_userCert_OpenSSL(self, generator): +- principal = { +- 'uid': ['testuser'], +- 'mail': ['testuser@example.com'], +- } +- config = { +- 'ipacertificatesubjectbase': [ +- 'O=DOMAIN.EXAMPLE.COM' +- ], +- } +- +- script = generator.csr_config(principal, config, 'userCert') +- with open(os.path.join( +- CSR_DATA_DIR, 'configs', 'userCert.conf')) as f: +- expected_script = f.read() +- assert script == expected_script +- +- def test_caIPAserviceCert_OpenSSL(self, generator): +- principal = { +- 'krbprincipalname': [ +- 'HTTP/machine.example.com@DOMAIN.EXAMPLE.COM' +- ], +- } +- config = { +- 'ipacertificatesubjectbase': [ +- 'O=DOMAIN.EXAMPLE.COM' +- ], +- } +- +- script = generator.csr_config( +- principal, config, 'caIPAserviceCert') +- with open(os.path.join( +- CSR_DATA_DIR, 'configs', 'caIPAserviceCert.conf')) as f: +- expected_script = f.read() +- assert script == expected_script +- +- def test_works_with_lowercase_attr_type_shortname(self, generator): +- principal = { +- 'uid': ['testuser'], +- 'mail': ['testuser@example.com'], +- } +- template_env = { +- 'ipacertificatesubjectbase': [ +- 'o=DOMAIN.EXAMPLE.COM' # lower-case attr type shortname +- ], +- } +- config = generator.csr_config(principal, template_env, 'userCert') +- +- key = rsa.generate_private_key( +- public_exponent=65537, +- key_size=2048, +- backend=default_backend(), +- ) +- adaptor = csrgen.OpenSSLAdaptor(key=key) +- +- reqinfo = bytes(csrgen_ffi.build_requestinfo( +- config.encode('utf-8'), adaptor.get_subject_public_key_info())) +- csr_der = adaptor.sign_csr(reqinfo) +- csr = x509.load_der_x509_csr(csr_der, default_backend()) +- assert ( +- csr.subject.get_attributes_for_oid(x509.NameOID.COMMON_NAME) +- == [x509.NameAttribute(x509.NameOID.COMMON_NAME, u'testuser')] +- ) +- assert ( +- csr.subject.get_attributes_for_oid(x509.NameOID.ORGANIZATION_NAME) +- == [x509.NameAttribute( +- x509.NameOID.ORGANIZATION_NAME, u'DOMAIN.EXAMPLE.COM')] +- ) +- +- def test_unrecognised_attr_type_raises(self, generator): +- principal = { +- 'uid': ['testuser'], +- 'mail': ['testuser@example.com'], +- } +- template_env = { +- 'ipacertificatesubjectbase': [ +- 'X=DOMAIN.EXAMPLE.COM' # unrecognised attr type +- ], +- } +- config = generator.csr_config(principal, template_env, 'userCert') +- +- key = rsa.generate_private_key( +- public_exponent=65537, +- key_size=2048, +- backend=default_backend(), +- ) +- adaptor = csrgen.OpenSSLAdaptor(key=key) +- +- with pytest.raises( +- errors.CSRTemplateError, +- message='unrecognised attribute type: X'): +- csrgen_ffi.build_requestinfo( +- config.encode('utf-8'), adaptor.get_subject_public_key_info()) +- +- +-class test_rule_handling: +- def test_optionalAttributeMissing(self, generator): +- principal = {'uid': 'testuser'} +- rule_provider = StubRuleProvider() +- rule_provider.data_rule.template = '{{subject.mail}}' +- rule_provider.data_rule.options = {'data_source': 'subject.mail'} +- generator = csrgen.CSRGenerator( +- rule_provider, formatter_class=IdentityFormatter) +- +- script = generator.csr_config( +- principal, {}, 'example') +- assert script == '\n' +- +- def test_twoDataRulesOneMissing(self, generator): +- principal = {'uid': 'testuser'} +- rule_provider = StubRuleProvider() +- rule_provider.data_rule.template = '{{subject.mail}}' +- rule_provider.data_rule.options = {'data_source': 'subject.mail'} +- rule_provider.field_mapping.data_rules.append(csrgen.Rule( +- 'data2', '{{subject.uid}}', {'data_source': 'subject.uid'})) +- generator = csrgen.CSRGenerator( +- rule_provider, formatter_class=IdentityFormatter) +- +- script = generator.csr_config(principal, {}, 'example') +- assert script == ',testuser\n' +- +- def test_requiredAttributeMissing(self): +- principal = {'uid': 'testuser'} +- rule_provider = StubRuleProvider() +- rule_provider.data_rule.template = '{{subject.mail}}' +- rule_provider.data_rule.options = {'data_source': 'subject.mail'} +- rule_provider.syntax_rule.options = {'required': True} +- generator = csrgen.CSRGenerator( +- rule_provider, formatter_class=IdentityFormatter) +- +- with pytest.raises(errors.CSRTemplateError): +- _script = generator.csr_config( +- principal, {}, 'example') diff --git a/SOURCES/freeipa-4.7.90.pre1.tar.gz.asc b/SOURCES/freeipa-4.7.90.pre1.tar.gz.asc new file mode 100644 index 0000000..1353a4c --- /dev/null +++ b/SOURCES/freeipa-4.7.90.pre1.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEhAodHH8+xLL+UwQ1RxniuKu/YhoFAlzHE98ACgkQRxniuKu/ +YhrICw/8DE6jyt3bnUmzGiXdsV7q1KZUGSIC7GLpvbmewwpUVcXnplHiVCTjrNGI +jw/jc6y9bIlvqfYNWjAmXNGXyB3AbXweaYRAEzntOHlAmFDlwMXv/D6JL0849/9/ +uRWEefIpHlw/P++WOxm+us7T9h/d6xEe1xY7vaaXVVPjRBewJqddG6ISJgWZ0DSR +41b/kgOXEvBMOU+gsKCm1fCgKU6KcfwsFq39uSxmTfhKE/578eOUkSAracOwrP2Z +RePKA4JKqw/Tttl26bgKAkAD8hxJhv6J1MYOSPKp7zssSKw1s1qiPbR6DdJGF/E0 +gqiJwLynZdkkMOsWqHvUK0NDT5LmDdluHBFDle+zupBy1CAE4y1fchsUh910wbRm +LnrdtkXKUHtE+WGZianMSc1gHCB6EjipHx9iLTrcsGbjz9ziWRb6P6BLgbw2doPG +mYQVMWBNLQi3gcAjN7IX1+dRWoam+ON/M0GMi5jSplqONBFUj5xwB8LFNV5VfIAu +zJa0F5V0Qu5XbO7YFoihDcD1OF8fUyKtK+lGa0O/QazR37tl8m5mgYVjDErBx3F+ +ipiB40w+qA1MsJXqdOljoldTvJZCzN+kEJu8aMdQpKcIfkJjKQsrbrh0Ck3cmRHW +vE3sApyx1p9XvoVtb6lz69B1XJu+Q+Gljlm7JSRLQ3p7GZTT7/Q= +=5N4+ +-----END PGP SIGNATURE----- diff --git a/SPECS/ipa.spec b/SPECS/ipa.spec new file mode 100644 index 0000000..6e3d139 --- /dev/null +++ b/SPECS/ipa.spec @@ -0,0 +1,4334 @@ +# 389-ds-base 1.4 no longer supports i686 platform, build only client +# packages, https://bugzilla.redhat.com/show_bug.cgi?id=1544386 +%if 0%{?fedora} >= 28 || 0%{?rhel} > 7 + %ifarch %{ix86} + %{!?ONLY_CLIENT:%global ONLY_CLIENT 1} + %endif +%endif + + +# Define ONLY_CLIENT to only make the ipa-client and ipa-python +# subpackages +%{!?ONLY_CLIENT:%global ONLY_CLIENT 0} +%if %{ONLY_CLIENT} + %global enable_server_option --disable-server +%else + %global enable_server_option --enable-server +%endif + +# Build ipatests +%if 0%{?rhel} + %global with_ipatests 0 +%endif +%if ! %{ONLY_CLIENT} + %{!?with_ipatests:%global with_ipatests 1} +%endif +%if 0%{?with_ipatests} + %global with_ipatests_option --with-ipatests +%else + %global with_ipatests_option --without-ipatests +%endif + +# Python 2/3 packages and default Python interpreter +%if 0%{?rhel} > 7 + %global with_default_python 3 +%endif + +%if 0%{?fedora} >= 29 + # F29 only supports Python 3 as default Python + %global with_default_python 3 +%endif + +%{!?with_default_python:%global with_default_python 3} + +%global with_python3 1 +%global python %{__python3} + +# lint is not executed during rpmbuild +# %%global with_lint 1 +%if 0%{?with_lint} + %global linter_options --enable-pylint --with-jslint +%else + %global linter_options --disable-pylint --without-jslint +%endif + +%if 0%{?rhel} +%global package_name ipa +%global alt_name freeipa +%global krb5_version 1.16.1 +%global krb5_kdb_version 7.0 +# 0.7.16: https://github.com/drkjam/netaddr/issues/71 +%global python_netaddr_version 0.7.16 +# Require 4.7.0 which brings Python 3 bindings +%global samba_version 4.7.0 +%global selinux_policy_version 3.14.1-14 +%global slapi_nis_version 0.56.1-4 +%global python_ldap_version 3.1.0-1 +# python3-lib389 +# Fix for "Installation fails: Replica Busy" +# https://pagure.io/389-ds-base/issue/49818 +%global ds_version 1.4.0.16 + +%else +# Fedora +%global package_name freeipa +%global alt_name ipa +# Fix for CVE-2018-20217 +%global krb5_version 1.17 +%global krb5_kdb_version 7.0 +# 0.7.16: https://github.com/drkjam/netaddr/issues/71 +%global python_netaddr_version 0.7.16 +# Require 4.7.0 which brings Python 3 bindings +%global samba_version 2:4.9.0 +# DNSSEC AVC violation, RHBZ#1537971 +%global selinux_policy_version 3.13.1-283.24 +%global slapi_nis_version 0.56.1 + +# fix for segfault in python3-ldap, https://pagure.io/freeipa/issue/7324 +%global python_ldap_version 3.1.0-1 +# Fix for create suffix +# https://pagure.io/389-ds-base/issue/49984 +%global ds_version 1.4.1.1 + +# Don't use Fedora's Python dependency generator on Fedora 30/rawhide yet. +# Some packages don't provide new dist aliases. +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/ +%{?python_disable_dependency_generator} + +%endif # Fedora + +# Require Dogtag PKI 10.6.8-3 (10.6.7 was never pushed to stable) +# 10.6.7 fixes UpdateNumberRange clone installation issue +# https://pagure.io/freeipa/issue/7654 and empty token issue +# and https://pagure.io/dogtagpki/issue/3073 +%global pki_version 10.6.8-3 + +# https://pagure.io/certmonger/issue/90 +%global certmonger_version 0.79.7-1 + +# NSS release with fix for p11-kit-proxy issue, affects F28 +# https://pagure.io/freeipa/issue/7810 +%if 0%{?fedora} == 28 +%global nss_version 3.41.0-3 +%else +%global nss_version 3.41.0-1 +%endif + +# There are issues currently with the sssd rebase to 2.1.0, therefore this +# will be set to 2.0.0-43 for now. +#global sssd_version 2.1.0-2 +%global sssd_version 2.0.0-43 + +# python3-kdcproxy 0.4.1 is not in the repository, therefore 0.4 will be +# used for now. +#global kdcproxy_version 0.4.1 +%global kdcproxy_version 0.4 + +%global plugin_dir %{_libdir}/dirsrv/plugins +%global etc_systemd_dir %{_sysconfdir}/systemd/system +%global gettext_domain ipa + +%define _hardened_build 1 + +# Work-around fact that RPM SPEC parser does not accept +# "Version: @VERSION@" in freeipa.spec.in used for Autoconf string replacement +%define IPA_VERSION 4.7.90.pre1 +%define AT_SIGN @ +# redefine IPA_VERSION only if its value matches the Autoconf placeholder +%if "%{IPA_VERSION}" == "%{AT_SIGN}VERSION%{AT_SIGN}" + %define IPA_VERSION nonsense.to.please.RPM.SPEC.parser +%endif + +Name: %{package_name} +Version: %{IPA_VERSION} +Release: 3%{?dist} +Summary: The Identity, Policy and Audit system + +License: GPLv3+ +URL: http://www.freeipa.org/ +Source0: https://releases.pagure.org/freeipa/freeipa-%{version}.tar.gz +Source1: https://releases.pagure.org/freeipa/freeipa-%{version}.tar.gz.asc + +# RHEL spec file only: START: Change branding to IPA and Identity Management +# Moved branding logos and background to redhat-logos-ipa-80.4: +# header-logo.png, login-screen-background.jpg, login-screen-logo.png, +# product-name.png +# RHEL spec file only: END: Change branding to IPA and Identity Management + +# RHEL spec file only: START +Patch0001: 0001-No-need-to-call-rhel-specific-domainname-service.patch + +Patch0002: 0001-revert-minssf-defaults.patch +# https://github.com/freeipa/freeipa/pull/3104 +# Fix an error in the path the webUI uses for fontawesome +Patch0003: 0001-Correct-default-fontawesome-path-broken-by-da2cf1c5.patch +Patch0004: 0002-upgrade-adtrust-when-no-trusts.patch + +Patch1001: 1001-Change-branding-to-IPA-and-Identity-Management.patch +Patch1002: 1002-4.7.90pre1-Remove-csrgen.patch +# RHEL spec file only: END + +# For the timestamp trick in patch application +BuildRequires: diffstat + +BuildRequires: openldap-devel +# For KDB DAL version, make explicit dependency so that increase of version +# will cause the build to fail due to unsatisfied dependencies. +# DAL version change may cause code crash or memory leaks, it is better to fail early. +BuildRequires: krb5-kdb-version = %{krb5_kdb_version} +BuildRequires: krb5-devel >= %{krb5_version} +# 1.27.4: xmlrpc_curl_xportparms.gssapi_delegation +BuildRequires: xmlrpc-c-devel >= 1.27.4 +BuildRequires: popt-devel +BuildRequires: gcc +BuildRequires: make +BuildRequires: pkgconfig +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: gettext +BuildRequires: gettext-devel +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: systemd +# systemd-tmpfiles which is executed from make install requires apache user +BuildRequires: httpd +BuildRequires: nspr-devel +BuildRequires: nss-devel >= %{nss_version} +BuildRequires: openssl-devel +BuildRequires: libini_config-devel +BuildRequires: cyrus-sasl-devel +%if ! %{ONLY_CLIENT} +BuildRequires: 389-ds-base-devel >= %{ds_version} +BuildRequires: samba-devel >= %{samba_version} +BuildRequires: libtalloc-devel +BuildRequires: libtevent-devel +BuildRequires: libuuid-devel +BuildRequires: libsss_idmap-devel +BuildRequires: libsss_certmap-devel +# 1.15.3: sss_nss_getlistbycert (https://pagure.io/SSSD/sssd/issue/3050) +BuildRequires: libsss_nss_idmap-devel >= %{sssd_version} +BuildRequires: nodejs +BuildRequires: uglify-js +BuildRequires: libverto-devel +BuildRequires: libunistring-devel +# 0.13.0: https://bugzilla.redhat.com/show_bug.cgi?id=1584773 +# 0.13.0-2: fix for missing dependency on python-six +BuildRequires: python3-lesscpy >= 0.13.0-2 +%endif # ONLY_CLIENT + +# +# Build dependencies for makeapi/makeaci +# +BuildRequires: python3-cffi +BuildRequires: python3-dns +BuildRequires: python3-ldap >= %{python_ldap_version} +BuildRequires: python3-libsss_nss_idmap +BuildRequires: python3-netaddr >= %{python_netaddr_version} +BuildRequires: python3-pyasn1 +BuildRequires: python3-pyasn1-modules +BuildRequires: python3-six + +# +# Build dependencies for wheel packaging and PyPI upload +# +%if 0%{?with_wheels} +BuildRequires: dbus-glib-devel +BuildRequires: libffi-devel +BuildRequires: python3-tox +%if 0%{?fedora} <= 28 +BuildRequires: python3-twine +%else +BuildRequires: twine +%endif +BuildRequires: python3-wheel +%endif # with_wheels + +# +# Build dependencies for lint and fastcheck +# +%if 0%{?with_lint} +BuildRequires: jsl +BuildRequires: rpmlint +BuildRequires: softhsm + +BuildRequires: python3-augeas +BuildRequires: python3-cffi +BuildRequires: python3-cryptography >= 1.6 +BuildRequires: python3-custodia >= 0.3.1 +BuildRequires: python3-dateutil +BuildRequires: python3-dbus +BuildRequires: python3-dns >= 1.15 +BuildRequires: python3-gssapi >= 1.2.0 +BuildRequires: python3-jinja2 +BuildRequires: python3-jwcrypto >= 0.4.2 +BuildRequires: python3-ldap >= %{python_ldap_version} +BuildRequires: python3-ldap >= %{python_ldap_version} +BuildRequires: python3-lib389 >= %{ds_version} +BuildRequires: python3-libipa_hbac +BuildRequires: python3-libsss_nss_idmap +BuildRequires: python3-lxml +BuildRequires: python3-netaddr >= %{python_netaddr_version} +BuildRequires: python3-netifaces +BuildRequires: python3-paste +BuildRequires: python3-pki >= %{pki_version} +BuildRequires: python3-polib +BuildRequires: python3-pyasn1 +BuildRequires: python3-pyasn1-modules +BuildRequires: python3-pycodestyle +%if 0%{?fedora} >= 29 +# https://bugzilla.redhat.com/show_bug.cgi?id=1648299 +BuildRequires: python3-pylint >= 2.1.1-2 +%else +BuildRequires: python3-pylint >= 1.7 +%endif +BuildRequires: python3-pytest-multihost +BuildRequires: python3-pytest-sourceorder +BuildRequires: python3-qrcode-core >= 5.0.0 +BuildRequires: python3-samba +BuildRequires: python3-six +BuildRequires: python3-sss +BuildRequires: python3-sss-murmur +BuildRequires: python3-sssdconfig >= %{sssd_version} +BuildRequires: python3-systemd +BuildRequires: python3-yubico +%endif # with_lint + +# +# Build dependencies for unit tests +# +%if ! %{ONLY_CLIENT} +BuildRequires: libcmocka-devel +# Required by ipa_kdb_tests +BuildRequires: %{_libdir}/krb5/plugins/kdb/db2.so +%endif # ONLY_CLIENT + +%description +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). + + +%if ! %{ONLY_CLIENT} + +%package server +Summary: The IPA authentication server +Requires: %{name}-server-common = %{version}-%{release} +Requires: %{name}-client = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} +Requires: python3-ipaserver = %{version}-%{release} +Requires: python3-ldap >= %{python_ldap_version} +Requires: 389-ds-base >= %{ds_version} +Requires: openldap-clients > 2.4.35-4 +Requires: nss >= %{nss_version} +Requires: nss-tools >= %{nss_version} +Requires(post): krb5-server >= %{krb5_version} +Requires: krb5-pkinit-openssl >= %{krb5_version} +Requires: cyrus-sasl-gssapi%{?_isa} +Requires: chrony +Requires: httpd >= 2.4.6-31 +Requires(preun): python3 +Requires(postun): python3 +Requires: python3-gssapi >= 1.2.0-5 +Requires: python3-systemd +Requires: python3-mod_wsgi +Requires: mod_auth_gssapi >= 1.5.0 +Requires: mod_ssl +Requires: mod_session +# 0.9.9: https://github.com/adelton/mod_lookup_identity/pull/3 +Requires: mod_lookup_identity >= 0.9.9 +Requires: acl +Requires: systemd-units >= 38 +Requires(pre): shadow-utils +Requires(pre): systemd-units +Requires(post): systemd-units +Requires: selinux-policy >= %{selinux_policy_version} +Requires(post): selinux-policy-base >= %{selinux_policy_version} +Requires: slapi-nis >= %{slapi_nis_version} +Requires: pki-ca >= %{pki_version} +Requires: pki-kra >= %{pki_version} +Requires(preun): systemd-units +Requires(postun): systemd-units +Requires: policycoreutils >= 2.1.12-5 +Requires: tar +Requires(pre): certmonger >= %{certmonger_version} +Requires(pre): 389-ds-base >= %{ds_version} +Requires: fontawesome-fonts +Requires: open-sans-fonts +Requires: openssl +Requires: softhsm >= 2.0.0rc1-1 +Requires: p11-kit +Requires: %{etc_systemd_dir} +Requires: gzip +Requires: oddjob +# 0.7.0-2: https://pagure.io/gssproxy/pull-request/172 +Requires: gssproxy >= 0.7.0-2 +Requires: sssd-dbus >= %{sssd_version} + +Provides: %{alt_name}-server = %{version} +Conflicts: %{alt_name}-server +Obsoletes: %{alt_name}-server < %{version} + +# With FreeIPA 3.3, package freeipa-server-selinux was obsoleted as the +# entire SELinux policy is stored in the system policy +Obsoletes: freeipa-server-selinux < 3.3.0 + +# upgrade path from monolithic -server to -server + -server-dns +Obsoletes: %{name}-server <= 4.2.0 + +# Versions of nss-pam-ldapd < 0.8.4 require a mapping from uniqueMember to +# member. +Conflicts: nss-pam-ldapd < 0.8.4 + +# RHEL spec file only: START: Do not build tests +# ipa-tests subpackage was moved to separate srpm +Conflicts: ipa-tests < 3.3.3-9 +# RHEL spec file only: END: Do not build tests + +%description server +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If you are installing an IPA server, you need to install this package. + + +%package -n python3-ipaserver +Summary: Python libraries used by IPA server +BuildArch: noarch +%{?python_provide:%python_provide python3-ipaserver} +Requires: %{name}-server-common = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} +# we need pre-requires since earlier versions may break upgrade +Requires(pre): python3-ldap >= %{python_ldap_version} +Requires: python3-augeas +Requires: python3-custodia >= 0.3.1 +Requires: python3-dbus +Requires: python3-dns >= 1.15 +Requires: python3-gssapi >= 1.2.0 +Requires: python3-ipaclient = %{version}-%{release} +Requires: python3-kdcproxy >= %{kdcproxy_version} +Requires: python3-lxml +Requires: python3-pki >= %{pki_version} +Requires: python3-pyasn1 >= 0.3.2-2 +Requires: python3-sssdconfig >= %{sssd_version} +Requires: rpm-libs + +%description -n python3-ipaserver +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If you are installing an IPA server, you need to install this package. + + +%package server-common +Summary: Common files used by IPA server +BuildArch: noarch +Requires: %{name}-client-common = %{version}-%{release} +Requires: httpd >= 2.4.6-31 +Requires: systemd-units >= 38 +Requires: custodia >= 0.3.1 +%if 0%{?rhel} > 7 +Requires: redhat-logos-ipa >= 80.4 +%endif + +Provides: %{alt_name}-server-common = %{version} +Conflicts: %{alt_name}-server-common +Obsoletes: %{alt_name}-server-common < %{version} + +%description server-common +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If you are installing an IPA server, you need to install this package. + + +%package server-dns +Summary: IPA integrated DNS server with support for automatic DNSSEC signing +BuildArch: noarch +Requires: %{name}-server = %{version}-%{release} +Requires: bind-dyndb-ldap >= 11.0-2 +Requires: bind >= 9.11.0-6.P2 +Requires: bind-utils >= 9.11.0-6.P2 +Requires: bind-pkcs11 >= 9.11.0-6.P2 +Requires: bind-pkcs11-utils >= 9.11.0-6.P2 +Requires: opendnssec >= 1.4.6-4 +%{?systemd_requires} + +Provides: %{alt_name}-server-dns = %{version} +Conflicts: %{alt_name}-server-dns +Obsoletes: %{alt_name}-server-dns < %{version} + +# upgrade path from monolithic -server to -server + -server-dns +Obsoletes: %{name}-server <= 4.2.0 + +%description server-dns +IPA integrated DNS server with support for automatic DNSSEC signing. +Integrated DNS server is BIND 9. OpenDNSSEC provides key management. + + +%package server-trust-ad +Summary: Virtual package to install packages required for Active Directory trusts +Requires: %{name}-server = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} + +Requires: samba >= %{samba_version} +Requires: samba-winbind +Requires: libsss_idmap + +Requires(post): python3 +Requires: python3-samba +Requires: python3-libsss_nss_idmap +Requires: python3-sss + +# We use alternatives to divert winbind_krb5_locator.so plugin to libkrb5 +# on the installes where server-trust-ad subpackage is installed because +# IPA AD trusts cannot be used at the same time with the locator plugin +# since Winbindd will be configured in a different mode +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives +Requires(preun): %{_sbindir}/update-alternatives + +Provides: %{alt_name}-server-trust-ad = %{version} +Conflicts: %{alt_name}-server-trust-ad +Obsoletes: %{alt_name}-server-trust-ad < %{version} + +%description server-trust-ad +Cross-realm trusts with Active Directory in IPA require working Samba 4 +installation. This package is provided for convenience to install all required +dependencies at once. + +%endif # ONLY_CLIENT + + +%package client +Summary: IPA authentication for use on clients +Requires: %{name}-client-common = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} +Requires: python3-gssapi >= 1.2.0-5 +Requires: python3-ipaclient = %{version}-%{release} +Requires: python3-ldap >= %{python_ldap_version} +Requires: python3-sssdconfig >= %{sssd_version} +Requires: cyrus-sasl-gssapi%{?_isa} +Requires: chrony +Requires: krb5-workstation >= %{krb5_version} +Requires: authselect >= 0.4-2 +Requires: curl +# NIS domain name config: /usr/lib/systemd/system/*-domainname.service +Requires: hostname +Requires: libcurl >= 7.21.7-2 +Requires: xmlrpc-c >= 1.27.4 +Requires: sssd-ipa >= %{sssd_version} +Requires: certmonger >= %{certmonger_version} +Requires: nss-tools >= %{nss_version} +Requires: bind-utils +Requires: oddjob-mkhomedir +Requires: libsss_autofs +Requires: autofs +Requires: libnfsidmap +Requires: nfs-utils +Requires: sssd-tools >= %{sssd_version} +Requires(post): policycoreutils + +Provides: %{alt_name}-client = %{version} +Conflicts: %{alt_name}-client +Obsoletes: %{alt_name}-client < %{version} + +Provides: %{alt_name}-admintools = %{version} +Conflicts: %{alt_name}-admintools +Obsoletes: %{alt_name}-admintools < 4.4.1 + +Obsoletes: %{name}-admintools < 4.4.1 +Provides: %{name}-admintools = %{version}-%{release} + +%description client +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If your network uses IPA for authentication, this package should be +installed on every client machine. +This package provides command-line tools for IPA administrators. + + +%package -n python3-ipaclient +Summary: Python libraries used by IPA client +BuildArch: noarch +%{?python_provide:%python_provide python3-ipaclient} +Requires: %{name}-client-common = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} +Requires: python3-ipalib = %{version}-%{release} +Requires: python3-augeas +Requires: python3-dns >= 1.15 +Requires: python3-jinja2 +# RHEL spec file only: DELETED: Remove csrgen + +%description -n python3-ipaclient +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If your network uses IPA for authentication, this package should be +installed on every client machine. + + +%package client-common +Summary: Common files used by IPA client +BuildArch: noarch + +Provides: %{alt_name}-client-common = %{version} +Conflicts: %{alt_name}-client-common +Obsoletes: %{alt_name}-client-common < %{version} + +%description client-common +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If your network uses IPA for authentication, this package should be +installed on every client machine. + + +%package python-compat +Summary: Compatiblity package for Python libraries used by IPA +BuildArch: noarch +Obsoletes: %{name}-python < 4.2.91 +Provides: %{name}-python = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} +Requires: python3-ipalib = %{version}-%{release} + +Provides: %{alt_name}-python-compat = %{version} +Conflicts: %{alt_name}-python-compat +Obsoletes: %{alt_name}-python-compat < %{version} + +Obsoletes: %{alt_name}-python < 4.2.91 +Provides: %{alt_name}-python = %{version} + +%description python-compat +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +This is a compatibility package to accommodate %{name}-python split into +python3-ipalib and %{name}-common. Packages still depending on +%{name}-python should be fixed to depend on python2-ipaclient or +%{name}-common instead. + + +%package -n python3-ipalib +Summary: Python3 libraries used by IPA +BuildArch: noarch +%{?python_provide:%python_provide python3-ipalib} +Provides: python3-ipapython = %{version}-%{release} +%{?python_provide:%python_provide python3-ipapython} +Provides: python3-ipaplatform = %{version}-%{release} +%{?python_provide:%python_provide python3-ipaplatform} +Requires: %{name}-common = %{version}-%{release} +# we need pre-requires since earlier versions may break upgrade +Requires(pre): python3-ldap >= %{python_ldap_version} +Requires: gnupg2 +Requires: keyutils +Requires: python3-cffi +Requires: python3-cryptography >= 1.6 +Requires: python3-dateutil +Requires: python3-dbus +Requires: python3-dns >= 1.15 +Requires: python3-gssapi >= 1.2.0 +Requires: python3-jwcrypto >= 0.4.2 +Requires: python3-libipa_hbac +Requires: python3-netaddr >= %{python_netaddr_version} +Requires: python3-netifaces >= 0.10.4 +Requires: python3-pyasn1 >= 0.3.2-2 +Requires: python3-pyasn1-modules >= 0.3.2-2 +Requires: python3-pyusb +Requires: python3-qrcode-core >= 5.0.0 +Requires: python3-requests +Requires: python3-six +Requires: python3-sss-murmur +Requires: python3-yubico >= 1.3.2-7 +%if 0%{?rhel} && 0%{?rhel} >= 8 +Requires: platform-python-setuptools +%else +Requires: python3-setuptools +%endif + +%description -n python3-ipalib +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If you are using IPA with Python 3, you need to install this package. + + +%package common +Summary: Common files used by IPA +BuildArch: noarch +Conflicts: %{name}-python < 4.2.91 + +Provides: %{alt_name}-common = %{version} +Conflicts: %{alt_name}-common +Obsoletes: %{alt_name}-common < %{version} + +Conflicts: %{alt_name}-python < %{version} + +%description common +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +If you are using IPA, you need to install this package. + + +%if 0%{?with_ipatests} + +%package -n python3-ipatests +Summary: IPA tests and test tools +BuildArch: noarch +%{?python_provide:%python_provide python3-ipatests} +Requires: python3-ipaclient = %{version}-%{release} +Requires: python3-ipaserver = %{version}-%{release} +Requires: iptables +Requires: ldns-utils +Requires: python3-coverage +Requires: python3-cryptography >= 1.6 +Requires: python3-polib +Requires: python3-pytest >= 2.6 +Requires: python3-pytest-multihost >= 0.5 +Requires: python3-pytest-sourceorder +Requires: python3-sssdconfig >= %{sssd_version} +Requires: tar +Requires: xz + +%description -n python3-ipatests +IPA is an integrated solution to provide centrally managed Identity (users, +hosts, services), Authentication (SSO, 2FA), and Authorization +(host access control, SELinux user roles, services). The solution provides +features for further integration with Linux based clients (SUDO, automount) +and integration with Active Directory based infrastructures (Trusts). +This package contains tests that verify IPA functionality under Python 3. + +%endif # with_ipatests + + +%prep +# RHEL spec file only: START +# Update timestamps on the files touched by a patch, to avoid non-equal +# .pyc/.pyo files across the multilib peers within a build, where "Level" +# is the patch prefix option (e.g. -p1) +# Taken from specfile for sssd and python-simplejson +UpdateTimestamps() { + Level=$1 + PatchFile=$2 + + # Locate the affected files: + for f in $(diffstat $Level -l $PatchFile); do + # Set the files to have the same timestamp as that of the patch: + touch -c -r $PatchFile $f + done +} + +%setup -n freeipa-%{version} -q + +# RHEL spec file only: START + +# To allow proper application patches to the stripped po files, strip originals +pushd po +for i in *.po ; do + msgattrib --translated --no-fuzzy --no-location -s $i > $i.tmp || exit 1 + mv $i.tmp $i || exit 1 +done +popd + +for p in %patches ; do + %__patch -p1 -i $p + UpdateTimestamps -p1 $p +done + +# RHEL spec file only: END + +# RHEL spec file only: START +# Moved branding logos and background to redhat-logos-ipa-80.4: +# header-logo.png, login-screen-background.jpg, login-screen-logo.png, +# product-name.png +# RHEL spec file only: END + +%build +# RHEL spec file only: START +autoreconf -i -f +# RHEL spec file only: END + +# PATH is workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1005235 +export PATH=/usr/bin:/usr/sbin:$PATH + +export PYTHON=%{__python3} +%configure --with-vendor-suffix=-%{release} \ + %{enable_server_option} \ + %{with_ipatests_option} \ + %{linter_options} + +# run build in default dir +# -Onone is workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1398405 +%make_build -Onone + + +%check +make %{?_smp_mflags} check VERBOSE=yes LIBDIR=%{_libdir} + + +%install +# Please put as much logic as possible into make install. It allows: +# - easier porting to other distributions +# - rapid devel & install cycle using make install +# (instead of full RPM build and installation each time) +# +# All files and directories created by spec install should be marked as ghost. +# (These are typically configuration files created by IPA installer.) +# All other artifacts should be created by make install. +# + +%{__make} python_install DESTDIR=%{?buildroot} INSTALL="%{__install} -p" + +# default installation +# This installs all Python packages twice and overrides the ipa-test +# commands. We'll fix the command links later with ln --force. +%make_install + +# remove files which are useful only for make uninstall +find %{buildroot} -wholename '*/site-packages/*/install_files.txt' -exec rm {} \; + +# RHEL spec file only: START +# Moved branding logos and background to redhat-logos-ipa-80.4: +# header-logo.png, login-screen-background.jpg, login-screen-logo.png, +# product-name.png +rm -f %{buildroot}%{_usr}/share/ipa/ui/images/header-logo.png +rm -f %{buildroot}%{_usr}/share/ipa/ui/images/login-screen-background.jpg +rm -f %{buildroot}%{_usr}/share/ipa/ui/images/login-screen-logo.png +rm -f %{buildroot}%{_usr}/share/ipa/ui/images/product-name.png +# RHEL spec file only: END + +%find_lang %{gettext_domain} + +%if ! %{ONLY_CLIENT} +# Remove .la files from libtool - we don't want to package +# these files +rm %{buildroot}/%{plugin_dir}/libipa_pwd_extop.la +rm %{buildroot}/%{plugin_dir}/libipa_enrollment_extop.la +rm %{buildroot}/%{plugin_dir}/libipa_winsync.la +rm %{buildroot}/%{plugin_dir}/libipa_repl_version.la +rm %{buildroot}/%{plugin_dir}/libipa_uuid.la +rm %{buildroot}/%{plugin_dir}/libipa_modrdn.la +rm %{buildroot}/%{plugin_dir}/libipa_lockout.la +rm %{buildroot}/%{plugin_dir}/libipa_cldap.la +rm %{buildroot}/%{plugin_dir}/libipa_dns.la +rm %{buildroot}/%{plugin_dir}/libipa_sidgen.la +rm %{buildroot}/%{plugin_dir}/libipa_sidgen_task.la +rm %{buildroot}/%{plugin_dir}/libipa_extdom_extop.la +rm %{buildroot}/%{plugin_dir}/libipa_range_check.la +rm %{buildroot}/%{plugin_dir}/libipa_otp_counter.la +rm %{buildroot}/%{plugin_dir}/libipa_otp_lasttoken.la +rm %{buildroot}/%{plugin_dir}/libtopology.la +rm %{buildroot}/%{_libdir}/krb5/plugins/kdb/ipadb.la +rm %{buildroot}/%{_libdir}/samba/pdb/ipasam.la + +# So we can own our Apache configuration +mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d/ +/bin/touch %{buildroot}%{_sysconfdir}/httpd/conf.d/ipa.conf +/bin/touch %{buildroot}%{_sysconfdir}/httpd/conf.d/ipa-kdc-proxy.conf +/bin/touch %{buildroot}%{_sysconfdir}/httpd/conf.d/ipa-pki-proxy.conf +/bin/touch %{buildroot}%{_sysconfdir}/httpd/conf.d/ipa-rewrite.conf +/bin/touch %{buildroot}%{_usr}/share/ipa/html/ca.crt +/bin/touch %{buildroot}%{_usr}/share/ipa/html/krb.con +/bin/touch %{buildroot}%{_usr}/share/ipa/html/krb5.ini +/bin/touch %{buildroot}%{_usr}/share/ipa/html/krbrealm.con + +mkdir -p %{buildroot}%{_libdir}/krb5/plugins/libkrb5 +touch %{buildroot}%{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so + +%endif # ONLY_CLIENT + +/bin/touch %{buildroot}%{_sysconfdir}/ipa/default.conf +/bin/touch %{buildroot}%{_sysconfdir}/ipa/ca.crt + +%if ! %{ONLY_CLIENT} +mkdir -p %{buildroot}%{_sysconfdir}/cron.d +%endif # ONLY_CLIENT + + +%if ! %{ONLY_CLIENT} + +%post server +# NOTE: systemd specific section + /bin/systemctl --system daemon-reload 2>&1 || : +# END +if [ $1 -gt 1 ] ; then + /bin/systemctl condrestart certmonger.service 2>&1 || : +fi +/bin/systemctl reload-or-try-restart dbus +/bin/systemctl reload-or-try-restart oddjobd + +%tmpfiles_create ipa.conf + +%posttrans server +# don't execute upgrade and restart of IPA when server is not installed +%{python} -c "import sys; from ipaserver.install import installutils; sys.exit(0 if installutils.is_ipa_configured() else 1);" > /dev/null 2>&1 + +if [ $? -eq 0 ]; then + # This is necessary for Fedora system upgrades which by default + # work with the network being offline + /bin/systemctl start network-online.target + + # Restart IPA processes. This must be also run in postrans so that plugins + # and software is in consistent state. This will also perform the + # system upgrade. + # NOTE: systemd specific section + + /bin/systemctl is-enabled ipa.service >/dev/null 2>&1 + if [ $? -eq 0 ]; then + /bin/systemctl restart ipa.service >/dev/null + fi +fi +# END + + +%preun server +if [ $1 = 0 ]; then +# NOTE: systemd specific section + /bin/systemctl --quiet stop ipa.service || : + /bin/systemctl --quiet disable ipa.service || : + /bin/systemctl reload-or-try-restart dbus + /bin/systemctl reload-or-try-restart oddjobd +# END +fi + + +%pre server +# Stop ipa_kpasswd if it exists before upgrading so we don't have a +# zombie process when we're done. +if [ -e /usr/sbin/ipa_kpasswd ]; then +# NOTE: systemd specific section + /bin/systemctl stop ipa_kpasswd.service >/dev/null 2>&1 || : +# END +fi + + +%pre server-common +# create users and groups +# create kdcproxy group and user +getent group kdcproxy >/dev/null || groupadd -f -r kdcproxy +getent passwd kdcproxy >/dev/null || useradd -r -g kdcproxy -s /sbin/nologin -d / -c "IPA KDC Proxy User" kdcproxy +# create ipaapi group and user +getent group ipaapi >/dev/null || groupadd -f -r ipaapi +getent passwd ipaapi >/dev/null || useradd -r -g ipaapi -s /sbin/nologin -d / -c "IPA Framework User" ipaapi +# add apache to ipaaapi group +id -Gn apache | grep '\bipaapi\b' >/dev/null || usermod apache -a -G ipaapi + + +%post server-dns +%systemd_post ipa-dnskeysyncd.service ipa-ods-exporter.socket ipa-ods-exporter.service + +%preun server-dns +%systemd_preun ipa-dnskeysyncd.service ipa-ods-exporter.socket ipa-ods-exporter.service + +%postun server-dns +%systemd_postun ipa-dnskeysyncd.service ipa-ods-exporter.socket ipa-ods-exporter.service + + +%postun server-trust-ad +if [ "$1" -ge "1" ]; then + if [ "`readlink %{_sysconfdir}/alternatives/winbind_krb5_locator.so`" == "/dev/null" ]; then + %{_sbindir}/alternatives --set winbind_krb5_locator.so /dev/null + fi +fi + + +%post server-trust-ad +%{_sbindir}/update-alternatives --install %{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so \ + winbind_krb5_locator.so /dev/null 90 +/bin/systemctl reload-or-try-restart dbus +/bin/systemctl reload-or-try-restart oddjobd + + +%posttrans server-trust-ad +%{python} -c "import sys; from ipaserver.install import installutils; sys.exit(0 if installutils.is_ipa_configured() else 1);" > /dev/null 2>&1 +if [ $? -eq 0 ]; then +# NOTE: systemd specific section + /bin/systemctl try-restart httpd.service >/dev/null 2>&1 || : +# END +fi + + +%preun server-trust-ad +if [ $1 -eq 0 ]; then + %{_sbindir}/update-alternatives --remove winbind_krb5_locator.so /dev/null + /bin/systemctl reload-or-try-restart dbus + /bin/systemctl reload-or-try-restart oddjobd +fi + +%endif # ONLY_CLIENT + + +%post client +if [ $1 -gt 1 ] ; then + # Has the client been configured? + restore=0 + test -f '/var/lib/ipa-client/sysrestore/sysrestore.index' && restore=$(wc -l '/var/lib/ipa-client/sysrestore/sysrestore.index' | awk '{print $1}') + + if [ -f '/etc/sssd/sssd.conf' -a $restore -ge 2 ]; then + if ! grep -E -q '/var/lib/sss/pubconf/krb5.include.d/' /etc/krb5.conf 2>/dev/null ; then + echo "includedir /var/lib/sss/pubconf/krb5.include.d/" > /etc/krb5.conf.ipanew + cat /etc/krb5.conf >> /etc/krb5.conf.ipanew + mv -Z /etc/krb5.conf.ipanew /etc/krb5.conf + fi + fi + + if [ $restore -ge 2 ]; then + if grep -E -q '\s*pkinit_anchors = FILE:/etc/ipa/ca.crt$' /etc/krb5.conf 2>/dev/null; then + sed -E 's|(\s*)pkinit_anchors = FILE:/etc/ipa/ca.crt$|\1pkinit_anchors = FILE:/var/lib/ipa-client/pki/kdc-ca-bundle.pem\n\1pkinit_pool = FILE:/var/lib/ipa-client/pki/ca-bundle.pem|' /etc/krb5.conf >/etc/krb5.conf.ipanew + mv -Z /etc/krb5.conf.ipanew /etc/krb5.conf + cp /etc/ipa/ca.crt /var/lib/ipa-client/pki/kdc-ca-bundle.pem + cp /etc/ipa/ca.crt /var/lib/ipa-client/pki/ca-bundle.pem + fi + fi + + if [ $restore -ge 2 ]; then + %{python} -c 'from ipaclient.install.client import update_ipa_nssdb; update_ipa_nssdb()' >/var/log/ipaupgrade.log 2>&1 + fi +fi + + +%triggerin client -- openssh-server +# Has the client been configured? +restore=0 +test -f '/var/lib/ipa-client/sysrestore/sysrestore.index' && restore=$(wc -l '/var/lib/ipa-client/sysrestore/sysrestore.index' | awk '{print $1}') + +if [ -f '/etc/ssh/sshd_config' -a $restore -ge 2 ]; then + if grep -E -q '^(AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys|PubKeyAgent /usr/bin/sss_ssh_authorizedkeys %u)$' /etc/ssh/sshd_config 2>/dev/null; then + sed -r ' + /^(AuthorizedKeysCommand(User|RunAs)|PubKeyAgentRunAs)[ \t]/ d + ' /etc/ssh/sshd_config >/etc/ssh/sshd_config.ipanew + + if /usr/sbin/sshd -t -f /dev/null -o 'AuthorizedKeysCommand=/usr/bin/sss_ssh_authorizedkeys' -o 'AuthorizedKeysCommandUser=nobody' 2>/dev/null; then + sed -ri ' + s/^PubKeyAgent (.+) %u$/AuthorizedKeysCommand \1/ + s/^AuthorizedKeysCommand .*$/\0\nAuthorizedKeysCommandUser nobody/ + ' /etc/ssh/sshd_config.ipanew + elif /usr/sbin/sshd -t -f /dev/null -o 'AuthorizedKeysCommand=/usr/bin/sss_ssh_authorizedkeys' -o 'AuthorizedKeysCommandRunAs=nobody' 2>/dev/null; then + sed -ri ' + s/^PubKeyAgent (.+) %u$/AuthorizedKeysCommand \1/ + s/^AuthorizedKeysCommand .*$/\0\nAuthorizedKeysCommandRunAs nobody/ + ' /etc/ssh/sshd_config.ipanew + elif /usr/sbin/sshd -t -f /dev/null -o 'PubKeyAgent=/usr/bin/sss_ssh_authorizedkeys %u' -o 'PubKeyAgentRunAs=nobody' 2>/dev/null; then + sed -ri ' + s/^AuthorizedKeysCommand (.+)$/PubKeyAgent \1 %u/ + s/^PubKeyAgent .*$/\0\nPubKeyAgentRunAs nobody/ + ' /etc/ssh/sshd_config.ipanew + fi + + mv -Z /etc/ssh/sshd_config.ipanew /etc/ssh/sshd_config + chmod 600 /etc/ssh/sshd_config + + /bin/systemctl condrestart sshd.service 2>&1 || : + fi +fi + + +%if ! %{ONLY_CLIENT} + +%files server +%doc README.md Contributors.txt +%license COPYING +%{_sbindir}/ipa-backup +%{_sbindir}/ipa-restore +%{_sbindir}/ipa-ca-install +%{_sbindir}/ipa-kra-install +%{_sbindir}/ipa-server-install +%{_sbindir}/ipa-replica-conncheck +%{_sbindir}/ipa-replica-install +%{_sbindir}/ipa-replica-manage +%{_sbindir}/ipa-csreplica-manage +%{_sbindir}/ipa-server-certinstall +%{_sbindir}/ipa-server-upgrade +%{_sbindir}/ipa-ldap-updater +%{_sbindir}/ipa-otptoken-import +%{_sbindir}/ipa-compat-manage +%{_sbindir}/ipa-nis-manage +%{_sbindir}/ipa-managed-entries +%{_sbindir}/ipactl +%{_sbindir}/ipa-advise +%{_sbindir}/ipa-cacert-manage +%{_sbindir}/ipa-winsync-migrate +%{_sbindir}/ipa-pkinit-manage +%{_sbindir}/ipa-crlgen-manage +%{_libexecdir}/certmonger/dogtag-ipa-ca-renew-agent-submit +%{_libexecdir}/certmonger/ipa-server-guard +%{_libexecdir}/ipa/custodia/ipa-custodia-dmldap +%{_libexecdir}/ipa/custodia/ipa-custodia-pki-tomcat +%{_libexecdir}/ipa/custodia/ipa-custodia-pki-tomcat-wrapped +%{_libexecdir}/ipa/custodia/ipa-custodia-ra-agent +%dir %{_libexecdir}/ipa +%{_libexecdir}/ipa/ipa-custodia +%{_libexecdir}/ipa/ipa-custodia-check +%{_libexecdir}/ipa/ipa-httpd-kdcproxy +%{_libexecdir}/ipa/ipa-httpd-pwdreader +%{_libexecdir}/ipa/ipa-pki-retrieve-key +%{_libexecdir}/ipa/ipa-pki-wait-running +%{_libexecdir}/ipa/ipa-otpd +%dir %{_libexecdir}/ipa/oddjob +%attr(0755,root,root) %{_libexecdir}/ipa/oddjob/org.freeipa.server.conncheck +%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freeipa.server.conf +%config(noreplace) %{_sysconfdir}/oddjobd.conf.d/ipa-server.conf +%dir %{_libexecdir}/ipa/certmonger +%attr(755,root,root) %{_libexecdir}/ipa/certmonger/* +# NOTE: systemd specific section +%attr(644,root,root) %{_unitdir}/ipa.service +%attr(644,root,root) %{_unitdir}/ipa-otpd.socket +%attr(644,root,root) %{_unitdir}/ipa-otpd@.service +# END +%attr(755,root,root) %{plugin_dir}/libipa_pwd_extop.so +%attr(755,root,root) %{plugin_dir}/libipa_enrollment_extop.so +%attr(755,root,root) %{plugin_dir}/libipa_winsync.so +%attr(755,root,root) %{plugin_dir}/libipa_repl_version.so +%attr(755,root,root) %{plugin_dir}/libipa_uuid.so +%attr(755,root,root) %{plugin_dir}/libipa_modrdn.so +%attr(755,root,root) %{plugin_dir}/libipa_lockout.so +%attr(755,root,root) %{plugin_dir}/libipa_cldap.so +%attr(755,root,root) %{plugin_dir}/libipa_dns.so +%attr(755,root,root) %{plugin_dir}/libipa_range_check.so +%attr(755,root,root) %{plugin_dir}/libipa_otp_counter.so +%attr(755,root,root) %{plugin_dir}/libipa_otp_lasttoken.so +%attr(755,root,root) %{plugin_dir}/libtopology.so +%attr(755,root,root) %{plugin_dir}/libipa_sidgen.so +%attr(755,root,root) %{plugin_dir}/libipa_sidgen_task.so +%attr(755,root,root) %{plugin_dir}/libipa_extdom_extop.so +%attr(755,root,root) %{_libdir}/krb5/plugins/kdb/ipadb.so +%{_mandir}/man1/ipa-replica-conncheck.1* +%{_mandir}/man1/ipa-replica-install.1* +%{_mandir}/man1/ipa-replica-manage.1* +%{_mandir}/man1/ipa-csreplica-manage.1* +%{_mandir}/man1/ipa-server-certinstall.1* +%{_mandir}/man1/ipa-server-install.1* +%{_mandir}/man1/ipa-server-upgrade.1* +%{_mandir}/man1/ipa-ca-install.1* +%{_mandir}/man1/ipa-kra-install.1* +%{_mandir}/man1/ipa-compat-manage.1* +%{_mandir}/man1/ipa-nis-manage.1* +%{_mandir}/man1/ipa-managed-entries.1* +%{_mandir}/man1/ipa-ldap-updater.1* +%{_mandir}/man8/ipactl.8* +%{_mandir}/man1/ipa-backup.1* +%{_mandir}/man1/ipa-restore.1* +%{_mandir}/man1/ipa-advise.1* +%{_mandir}/man1/ipa-otptoken-import.1* +%{_mandir}/man1/ipa-cacert-manage.1* +%{_mandir}/man1/ipa-winsync-migrate.1* +%{_mandir}/man1/ipa-pkinit-manage.1* +%{_mandir}/man1/ipa-crlgen-manage.1* + + +%files -n python3-ipaserver +%doc README.md Contributors.txt +%license COPYING +%{python3_sitelib}/ipaserver +%{python3_sitelib}/ipaserver-*.egg-info + + +%files server-common +%doc README.md Contributors.txt +%license COPYING +%ghost %verify(not owner group) %dir %{_sharedstatedir}/kdcproxy +%dir %attr(0755,root,root) %{_sysconfdir}/ipa/kdcproxy +%config(noreplace) %{_sysconfdir}/ipa/kdcproxy/kdcproxy.conf +# NOTE: systemd specific section +%{_tmpfilesdir}/ipa.conf +%attr(644,root,root) %{_unitdir}/ipa-custodia.service +%ghost %attr(644,root,root) %{etc_systemd_dir}/httpd.d/ipa.conf +# END +%{_usr}/share/ipa/wsgi.py* +%{_usr}/share/ipa/kdcproxy.wsgi +%{_usr}/share/ipa/ipaca*.ini +%{_usr}/share/ipa/*.ldif +%{_usr}/share/ipa/*.uldif +%{_usr}/share/ipa/*.template +%dir %{_usr}/share/ipa/advise +%dir %{_usr}/share/ipa/advise/legacy +%{_usr}/share/ipa/advise/legacy/*.template +%dir %{_usr}/share/ipa/profiles +%{_usr}/share/ipa/profiles/README +%{_usr}/share/ipa/profiles/*.cfg +%dir %{_usr}/share/ipa/html +%{_usr}/share/ipa/html/ssbrowser.html +%{_usr}/share/ipa/html/unauthorized.html +%dir %{_usr}/share/ipa/migration +%{_usr}/share/ipa/migration/index.html +%{_usr}/share/ipa/migration/migration.py* +%dir %{_usr}/share/ipa/ui +%{_usr}/share/ipa/ui/index.html +%{_usr}/share/ipa/ui/reset_password.html +%{_usr}/share/ipa/ui/sync_otp.html +%{_usr}/share/ipa/ui/*.ico +%{_usr}/share/ipa/ui/*.css +%dir %{_usr}/share/ipa/ui/css +%{_usr}/share/ipa/ui/css/*.css +%dir %{_usr}/share/ipa/ui/js +%dir %{_usr}/share/ipa/ui/js/dojo +%{_usr}/share/ipa/ui/js/dojo/dojo.js +%dir %{_usr}/share/ipa/ui/js/libs +%{_usr}/share/ipa/ui/js/libs/*.js +%dir %{_usr}/share/ipa/ui/js/freeipa +%{_usr}/share/ipa/ui/js/freeipa/app.js +%{_usr}/share/ipa/ui/js/freeipa/core.js +%dir %{_usr}/share/ipa/ui/js/plugins +%dir %{_usr}/share/ipa/ui/images +%{_usr}/share/ipa/ui/images/facet-*.png +# Moved branding logos and background to redhat-logos-ipa-80.4: +# header-logo.png, login-screen-background.jpg, login-screen-logo.png, +# product-name.png +%dir %{_usr}/share/ipa/wsgi +%{_usr}/share/ipa/wsgi/plugins.py* +%dir %{_sysconfdir}/ipa +%dir %{_sysconfdir}/ipa/html +%config(noreplace) %{_sysconfdir}/ipa/html/ssbrowser.html +%config(noreplace) %{_sysconfdir}/ipa/html/unauthorized.html +%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipa-rewrite.conf +%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipa.conf +%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipa-kdc-proxy.conf +%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipa-pki-proxy.conf +%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/ipa/kdcproxy/ipa-kdc-proxy.conf +%ghost %attr(0644,root,apache) %config(noreplace) %{_usr}/share/ipa/html/ca.crt +%ghost %attr(0644,root,apache) %{_usr}/share/ipa/html/krb.con +%ghost %attr(0644,root,apache) %{_usr}/share/ipa/html/krb5.ini +%ghost %attr(0644,root,apache) %{_usr}/share/ipa/html/krbrealm.con +%dir %{_usr}/share/ipa/updates/ +%{_usr}/share/ipa/updates/* +%dir %{_localstatedir}/lib/ipa +%attr(700,root,root) %dir %{_localstatedir}/lib/ipa/backup +%attr(700,root,root) %dir %{_localstatedir}/lib/ipa/gssproxy +%attr(711,root,root) %dir %{_localstatedir}/lib/ipa/sysrestore +%attr(700,root,root) %dir %{_localstatedir}/lib/ipa/sysupgrade +%attr(755,root,root) %dir %{_localstatedir}/lib/ipa/pki-ca +%attr(755,root,root) %dir %{_localstatedir}/lib/ipa/certs +%attr(700,root,root) %dir %{_localstatedir}/lib/ipa/private +%attr(700,root,root) %dir %{_localstatedir}/lib/ipa/passwds +%ghost %{_localstatedir}/lib/ipa/pki-ca/publish +%ghost %{_localstatedir}/named/dyndb-ldap/ipa +%dir %attr(0700,root,root) %{_sysconfdir}/ipa/custodia +%dir %{_usr}/share/ipa/schema.d +%attr(0644,root,root) %{_usr}/share/ipa/schema.d/README +%attr(0644,root,root) %{_usr}/share/ipa/gssapi.login +%{_usr}/share/ipa/ipakrb5.aug + +%files server-dns +%doc README.md Contributors.txt +%license COPYING +%config(noreplace) %{_sysconfdir}/sysconfig/ipa-dnskeysyncd +%config(noreplace) %{_sysconfdir}/sysconfig/ipa-ods-exporter +%dir %attr(0755,root,root) %{_sysconfdir}/ipa/dnssec +%{_libexecdir}/ipa/ipa-dnskeysyncd +%{_libexecdir}/ipa/ipa-dnskeysync-replica +%{_libexecdir}/ipa/ipa-ods-exporter +%{_sbindir}/ipa-dns-install +%{_mandir}/man1/ipa-dns-install.1* +%attr(644,root,root) %{_unitdir}/ipa-dnskeysyncd.service +%attr(644,root,root) %{_unitdir}/ipa-ods-exporter.socket +%attr(644,root,root) %{_unitdir}/ipa-ods-exporter.service + +%files server-trust-ad +%doc README.md Contributors.txt +%license COPYING +%{_sbindir}/ipa-adtrust-install +%{_usr}/share/ipa/smb.conf.empty +%attr(755,root,root) %{_libdir}/samba/pdb/ipasam.so +%{_mandir}/man1/ipa-adtrust-install.1* +%ghost %{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so +%{_sysconfdir}/dbus-1/system.d/oddjob-ipa-trust.conf +%{_sysconfdir}/oddjobd.conf.d/oddjobd-ipa-trust.conf +%%attr(755,root,root) %{_libexecdir}/ipa/oddjob/com.redhat.idm.trust-fetch-domains + +%endif # ONLY_CLIENT + + +%files client +%doc README.md Contributors.txt +%license COPYING +%{_sbindir}/ipa-client-install +%{_sbindir}/ipa-client-automount +%{_sbindir}/ipa-certupdate +%{_sbindir}/ipa-getkeytab +%{_sbindir}/ipa-rmkeytab +%{_sbindir}/ipa-join +%{_bindir}/ipa +%config %{_sysconfdir}/bash_completion.d +%{_mandir}/man1/ipa.1* +%{_mandir}/man1/ipa-getkeytab.1* +%{_mandir}/man1/ipa-rmkeytab.1* +%{_mandir}/man1/ipa-client-install.1* +%{_mandir}/man1/ipa-client-automount.1* +%{_mandir}/man1/ipa-certupdate.1* +%{_mandir}/man1/ipa-join.1* + + +%files -n python3-ipaclient +%doc README.md Contributors.txt +%license COPYING +%dir %{python3_sitelib}/ipaclient +%{python3_sitelib}/ipaclient/*.py +%{python3_sitelib}/ipaclient/__pycache__/*.py* +%dir %{python3_sitelib}/ipaclient/install +%{python3_sitelib}/ipaclient/install/*.py +%{python3_sitelib}/ipaclient/install/__pycache__/*.py* +%dir %{python3_sitelib}/ipaclient/plugins +%{python3_sitelib}/ipaclient/plugins/*.py +%{python3_sitelib}/ipaclient/plugins/__pycache__/*.py* +%dir %{python3_sitelib}/ipaclient/remote_plugins +%{python3_sitelib}/ipaclient/remote_plugins/*.py +%{python3_sitelib}/ipaclient/remote_plugins/__pycache__/*.py* +%dir %{python3_sitelib}/ipaclient/remote_plugins/2_* +%{python3_sitelib}/ipaclient/remote_plugins/2_*/*.py +%{python3_sitelib}/ipaclient/remote_plugins/2_*/__pycache__/*.py* +# RHEL spec file only: DELETED: Remove csrgen +%{python3_sitelib}/ipaclient-*.egg-info + + +%files client-common +%doc README.md Contributors.txt +%license COPYING +%dir %attr(0755,root,root) %{_sysconfdir}/ipa/ +%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/ipa/default.conf +%ghost %attr(0644,root,apache) %config(noreplace) %{_sysconfdir}/ipa/ca.crt +%dir %attr(0755,root,root) %{_sysconfdir}/ipa/nssdb +# old dbm format +%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/cert8.db +%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/key3.db +%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/secmod.db +# new sql format +%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/cert9.db +%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/key4.db +%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/pkcs11.txt +%ghost %config(noreplace) %{_sysconfdir}/ipa/nssdb/pwdfile.txt +%ghost %config(noreplace) %{_sysconfdir}/pki/ca-trust/source/ipa.p11-kit +%dir %{_localstatedir}/lib/ipa-client +%dir %{_localstatedir}/lib/ipa-client/pki +%dir %{_localstatedir}/lib/ipa-client/sysrestore +%{_mandir}/man5/default.conf.5* +%dir %{_usr}/share/ipa/client +%{_usr}/share/ipa/client/*.template + + +%files python-compat +%doc README.md Contributors.txt +%license COPYING + + +%files common -f %{gettext_domain}.lang +%doc README.md Contributors.txt +%license COPYING +%dir %{_usr}/share/ipa + + +%files -n python3-ipalib +%doc README.md Contributors.txt +%license COPYING + +%{python3_sitelib}/ipapython/ +%{python3_sitelib}/ipalib/ +%{python3_sitelib}/ipaplatform/ +%{python3_sitelib}/ipapython-*.egg-info +%{python3_sitelib}/ipalib-*.egg-info +%{python3_sitelib}/ipaplatform-*.egg-info +%{python3_sitelib}/ipaplatform-*-nspkg.pth + + +%if 0%{?with_ipatests} + + +%files -n python3-ipatests +%doc README.md Contributors.txt +%license COPYING +%{python3_sitelib}/ipatests +%{python3_sitelib}/ipatests-*.egg-info +%{_bindir}/ipa-run-tests +%{_bindir}/ipa-test-config +%{_bindir}/ipa-test-task +%{_mandir}/man1/ipa-run-tests.1* +%{_mandir}/man1/ipa-test-config.1* +%{_mandir}/man1/ipa-test-task.1* + +%endif # with_ipatests + + +%changelog +* Tue May 21 2019 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.90-3 +- Fix upgrade issue with AD trust when no trust yet established + Fixes: RHBZ#1708874 + Related: RHBZ#1684528 + +* Thu May 9 2019 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.90-2 +- Require certmonger 0.79.7-1 + Related: RHBZ#1708095 + +* Mon May 6 2019 Thomas Woerner <twoerner@redhat.com> - 4.7.90-1 +- Update to 4.7.90-pre1 + Related: RHBZ#1684528 +- Removed patches 0002 to 0031 as these are upsteram and part of 4.7.90-pre1 +- Added new patches 0001-revert-minssf-defaults.patch and + 0001-Correct-default-fontawesome-path-broken-by-da2cf1c5.patch + +* Tue Apr 16 2019 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.1-12 +- Remove strict dependencies to krb5-server version in order to allow + update of krb5 to 1.17 and change dependency to KDB DAL version. + Resolves: RHBZ#1700121 + +* Wed Feb 27 2019 Rob Crittenden <rcritten@redhat.com> - 4.7.1-11 +- Handle NFS configuration file changes. nfs-utils moved the + configuration file from /etc/sysconfig/nfs to /etc/nfs.conf. + Resolves: RHBZ#1676981 + +* Tue Jan 15 2019 Christian Heimes <cheimes@redhat.com> - 4.7.1-10 +- Fix systemd-user HBAC rule + Resolves: RHBZ#1664974 + +* Mon Jan 14 2019 Thomas Woerner <twoerner@redhat.com> - 4.7.1-9 +- Resolve user/group names in idoverride*-find + Resolves: RHBZ#1657745 + +* Mon Jan 14 2019 Christian Heimes <cheimes@redhat.com> - 4.7.1-8 +- Create systemd-user HBAC service and rule + Resolves: RHBZ#1664974 +- ipaserver/dcerpc: fix exclusion entry with a forest trust domain info returned + Resolves: RHBZ#1664023 + +* Fri Dec 14 2018 Thomas Woerner <twoerner@redhat.com> - 4.7.1-7.el8 +- Fix misleading errors during client install rollback + Resolves: RHBZ#1658283 +- ipa-advise: update url of cacerdir_rehash tool + Resolves: RHBZ#1658287 +- Handle NTP configuration in a replica server installation + Resolves: RHBZ#1651679 +- Fix defects found by static analysis + Resolves: RHBZ#1658182 +- ipa-replica-install --setup-adtrust: check for package ipa-server-trust-ad + Resolves: RHBZ#1658294 +- ipaldap: invalid modlist when attribute encoding can vary + Resolves: RHBZ#1658302 +- Allow ipaapi and Apache user to access SSSD IFP + Resolves: RHBZ#1639910 +- Add sysadm_r to default SELinux user map order + Resolves: RHBZ#1658303 +- certdb: ensure non-empty Subject Key Identifier and validate server cert sig + Resolves: RHBZ#1641988 +- ipa-replica-install: password and admin-password options mutually exclusive + Resolves: RHBZ#1658309 +- ipa upgrade: handle double-encoded certificates + Resolves: RHBZ#1658310 +- PKINIT: fix ipa-pkinit-manage enable|disable + Resolves: RHBZ#1658313 +- Enable LDAP debug output in client to display TLS errors in join + Resolves: RHBZ#1658316 +- rpc: always read response + Resolves: RHBZ#1639890 +- ipa vault-retrieve: fix internal error + Resolves: RHBZ#1658485 +- Move ipa's systemd tmpfiles from /var/run to /run + Resolves: RHBZ#1658487 +- Fix authselect invocations to work with 1.0.2 + Resolves: RHBZ#1654291 +- ipa-client-automount and NFS unit name changes + Resolves: RHBZ#1645501 +- Fix compile issue with new 389-ds + Resolves: RHBZ#1659448 + +* Thu Nov 15 2018 Lumír Balhar <lbalhar@redhat.com> - 4.7.1-6.el8 +- Require platform-python-setuptools instead of python3-setuptools +- Resolves: rhbz#1650139 + +* Mon Oct 29 2018 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.1-5.el8 +- Fixed: rhbz#1643445 - External CA step 2 fails with pki_client_database_dir is missing +- Fixed: rhbz#1642834 - Smart card advise script uses hard-coded Python interpreter + +* Tue Oct 16 2018 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.1-4.el8 +- Fix mapping of BUILTIN\Guests to 'nobody' group during upgrade + to not use generated Samba config at this point +- Related: rhbz#1623895 + +* Mon Oct 15 2018 Thomas Woerner <twoerner@redhat.com> - 4.7.1-3.el8 +- New command automember-find-orphans to find and remove orphan automemeber + rules has been added + Resolves: RHBZ#1638373 +- Moved ipa/idm logos and background to redhat-logos-ipa-80.4: + header-logo.png, login-screen-background.jpg, login-screen-logo.png, + product-name.png + New requirement to redhat-logos-ipa >= 80.4 in ipa-server-common + Resolves: RHBZ#1626507 + +* Wed Oct 10 2018 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.1-2.el8 +- Move initialization of Guests mapping after cifs/ principal is created +- Related: rhbz#1623895 + +* Sun Oct 07 2018 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.1-1.el8 +- 4.7.1 +- Fixes: rhbz#1633105 - rebase to 4.7.1 + +* Tue Sep 25 2018 Tomas Orsava <torsava@redhat.com> - 4.7.0-6.el8 +- Require the Python interpreter directly instead of using the package name +- Related: rhbz#1619153 + +* Thu Sep 13 2018 Rob Crittenden <rcritten@redhat.com> - 4.7.0-5.el8 +- sudo rule for "admins" members should be created by default (#1609873) + +* Thu Sep 6 2018 Rob Crittenden <rcritten@redhat.com> - 4.7.0-4.el8 +- ipaclient-install: chmod needs octal permissions (#1609880) + +* Thu Aug 16 2018 Thomas Woerner <twoerner@redhat.com> - 4.7.0-3.1.el8 +- Resolves: #1609883 ipaserver/plugins/cert.py: Add reason to raise of + errors.NotFound +- Resolves: #1615765 do-not-use-RC4-in-FIPS-mode + - Move fips_enabled to a common library to share across different plugins + - ipasam: do not use RC4 in FIPS mode + +* Mon Aug 13 2018 Thomas Woerner <twoerner@redhat.com> - 4.7.0-3.el8 +- Resolves: #1614301 Remove --no-sssd and --noac options +- Resolves: #1613879 Disable Domain Level 0 + - New patch sets to disable domain level 0 + - New adapted patch to disable DL0 specific tests (pytest_ipa vs. + pytest_plugins) + - Adapted branding patch in ipa-replica-install.1 due to DL0 removal + +* Wed Jul 25 2018 Alexander Bokovoy <abokovoy@redhat.com> - 4.7.0-2.el8 +- Require 389-ds-base-legacy-tools for setup tools + +* Thu Jul 19 2018 Rob Crittenden <rcritten@redhat.com> - 4.7.0-1.el8 +- Update to upstream 4.7.0 GA + +* Mon May 21 2018 Rob Crittenden <rcritten@redhat.com> - 4.6.90.pre1-2.el8 +- Set krb5 DAL version to 7.0 (#1580711) +- Rebuild aclocal and configure during build + +* Mon Mar 26 2018 Rob Crittenden <rcritten@redhat.com> - 4.6.90.pre1-1.el8 +- Update to upstream 4.6.90.pre1 + +* Mon Jan 29 2018 Troy Dawson <tdawson@redhat.com> - 4.5.4-5.el8.1 +- Use java-1.8.0-openjdk-devel + +* Thu Nov 30 2017 Alexander Bokovoy <abokovoy@redhat.com> - 4.5.4-5.el7 +- Resolves: #1415162 ipa-exdom-extop plugin can exhaust DS worker threads + +* Fri Nov 3 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.4-4.el7 +- Resolves: #1388135 [RFE] limit the retro changelog to dns subtree. + - ldap: limit the retro changelog to dns subtree +- Resolves: #1427798 Use X509v3 Basic Constraints "CA:TRUE" instead + of "CA:FALSE" IPA CA CSR + - Include the CA basic constraint in CSRs when renewing a CA +- Resolves: #1493145 ipa-replica-install might fail because of an already + existing entry cn=ipa-http-delegation,cn=s4u2proxy,cn=etc,$SUFFIX + - Checks if replica-s4u2proxy.ldif should be applied +- Resolves: #1493150 [RFE] set nsslapd-ignore-time-skew: on by default + - ds: ignore time skew during initial replication step + - ipa-replica-manage: implicitly ignore initial time skew in force-sync +- Resolves: #1500218 Replica installation at domain-level 0 fails against + upgraded ipa-server + - Fix ipa-replica-conncheck when called with --principal +- Resolves: #1506188 server-del doesn't remove dns-server configuration + from ldap + +* Thu Oct 26 2017 Rob Crittenden <rcritten@redhat.com> - 4.5.4-3.el7 +- Drop workaround for building on AArch64 (#1482244) +- Temporarily reduce Requires on python-netaddr to 0.7.5-7 (#1506485) + +* Tue Oct 24 2017 Felipe Barreto <fbarreto@redhat.com> - 4.5.4-2.el7 +- Resolves: #1461177 ipa-otptoken-import - XML file is missing PBKDF2 + parameters! +- Resolves: #1464205 NULL LDAP context in call to ldap_search_ext_s during + search in cn=ad, cn=trusts,dc=example,dc=com +- Resolves: #1467887 iommu platform support for ipxe +- Resolves: #1477178 [ipa-replica-install] - 406 Client Error: Failed to + validate message: Incorrect number of results (0) searching forpublic key for + host +- Resolves: #1478251 IPA WebUI does not work after upgrade from IPA 4.4 to + 4.5 +- Resolves: #1480102 ipa-server-upgrade failes with "This entry already + exists" +- Resolves: #1482802 Unable to set ca renewal master on replica +- Resolves: #1484428 Updating from RHEL 7.3 fails with Server-Cert not found + (ipa-server-upgrade) +- Resolves: #1484826 FreeIPA/IdM installations which were upgraded from + versions with 389 DS prior to 1.3.3.0 doesn't have whomai plugin enabled and + thus startup of Web UI fails +- Resolves: #1486283 TypeError in renew_ca_cert prevents from swiching back + to self-signed CA +- Resolves: #1469246 Replica install fails to configure IPA-specific + temporary files/directories +- Resolves: #1469480 bind package is not automatically updated during + ipa-server upgrade process +- Resolves: #1475238 Use CommonNameToSANDefault in default profile (new + installs only) +- Resolves: #1477703 IPA upgrade fails for latest ipa package + +* Fri Oct 20 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.4-1.el7 +- Use OpenJDK 8 to bootstrap on AArch64 until RH1482244 is resolved in + buildroot +- Resolves: #1470177 - Rebase IPA to latest 4.5.x version +- Resolves: #1398594 ipa topologysuffix-verify should only warn about + maximum number of replication agreements. +- Resolves: #1404236 Web UI: Change "Host Based" and "Role Based" + to "Host-Based" and "Role-Based" +- Resolves: #1409786 Second phase of --external-ca ipa-server-install + setup fails when dirsrv is not running +- Resolves: #1451576 ipa cert-request failed to generate certificate from csr +- Resolves: #1452086 Pagination Size under Customization in IPA WebUI + accepts negative values +- Resolves: #1458169 --force-join option is not mentioned in + ipa-replica-install man page +- Resolves: #1463186 IPA shouldn't allow objectclass if not all in lower case +- Resolves: #1478322 user-show command fails when sizelimit is configured + to number <= number of entity which is user member of +- Resolves: #1496775 Enterprise principals should be able to trigger + a refresh of the trusted domain data in the KDC +- Resolves: #1502533 Changing cert-find to go through the proxy + instead of using the port 8080 +- Resolves: #1502663 pkinit-status command fails after an upgrade from + a pre-4.5 IPA +- Resolves: #1498168 Error when trying to modify a PTR record +- Resolves: #1457876 ipa-backup fails silently +- Resolves: #1493531 In case full PKINIT configuration is failing during + server/replica install the error message should be more meaningful. +- Resolves: #1449985 Suggest CA installation command in KRA installation + warning + +* Wed Sep 20 2017 Felipe Barreto <fbarreto@redhat.com> - 4.5.0-21.el7.2.2 +- Resolves: #1477367 ipa-server-upgrade timeouts on wait_for_open ports + expecting IPA services listening on IPv6 ports + - Make sure upgrade also checks for IPv6 stack + - control logging of host_port_open from caller + - log progress of wait_for_open_ports +- Resolves: #1477243 ipa help command returns traceback when no cache + is present + - Store help in Schema before writing to disk + - Disable pylint in get_help function because of type confusion. + +* Tue Sep 19 2017 Felipe Barreto <fbarreto@redhat.com> - 4.5.0-21.el7.2 +- Resolves: #1477178 - [ipa-replica-install] - 406 Client Error: Failed to + validate message: Incorrect number of results (0) searching forpublic + key for host + - Always check peer has keys before connecting +- Resolves: #1482802 - Unable to set ca renewal master on replica + - Fix ipa config-mod --ca-renewal-master +- Resolves: #1486283 - TypeError in renew_ca_cert prevents from swiching + back to self-signed CA + - Backport PR 988 to ipa-4-5 Fix Certificate renewal (with ext ca) +- Resolves: #1480102 - ipa-server-upgrade failes with "This entry already exists" + - Backport PR 1008 to ipa-4-5 Fix ipa-server-upgrade: This entry already exists +- Resolves: #1484826 - FreeIPA/IdM installations which were upgraded from + versions with 389 DS prior to 1.3.3.0 doesn't have whomai plugin enabled and + thus startup of Web UI fails + - Adds whoami DS plugin in case that plugin is missing +- Resolves: #1478251 - IPA WebUI does not work after upgrade from IPA 4.4 to 4.5 + - Fixing how sssd.conf is updated when promoting a client to replica +- Resolves: #1461177 - ipa-otptoken-import - XML file is missing PBKDF2 + parameters! + - ipa-otptoken-import: Make PBKDF2 refer to the pkcs5 namespace +- Resolves: #1484428 - Updating from RHEL 7.3 fails with Server-Cert not found + (ipa-server-upgrade) + - Backport 4-5: Fix ipa-server-upgrade with server cert tracking + +* Thu Aug 17 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-21.el7.1.2 +- Resolves: #1477703 IPA upgrade fails for latest ipa package + - Restore old version of caIPAserviceCert for upgrade only + +* Tue Aug 15 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-21.el7.1.1 +- Resolves: #1475238 Use CommonNameToSANDefault in default profile + (new installs only) + - Restore old version of caIPAserviceCert for upgrade only + +* Fri Jul 28 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-21.el7.1 +- Resolves: #1455946 Provide a tooling automating the configuration + of Smart Card authentication on a FreeIPA master + - smart-card advises: configure systemwide NSS DB also on master + - smart-card advises: add steps to store smart card signing CA cert + - Allow to pass in multiple CA cert paths to the smart card advises + - add a class that tracks the indentation in the generated advises + - delegate the indentation handling in advises to dedicated class + - advise: add an infrastructure for formatting Bash compound statements + - delegate formatting of compound Bash statements to dedicated classes + - Fix indentation of statements in Smart card advises + - Use the compound statement formatting API for configuring PKINIT + - smart card advises: use a wrapper around Bash `for` loops + - smart card advise: use password when changing trust flags on HTTP cert + - smart-card-advises: ensure that krb5-pkinit is installed on client +- Resolves: #1475238 Use CommonNameToSANDefault in default profile + (new installs only) + - Add CommonNameToSANDefault to default cert profile +- Resolves: #1464205 NULL LDAP context in call to ldap_search_ext_s + during search in cn=ad,cn=trusts,dc=example,dc=com + - NULL LDAP context in call to ldap_search_ext_s during search + +* Wed Jul 12 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-21.el7 +- Resolves: #1469246 Replica install fails to configure IPA-specific + temporary files/directories + - replica install: drop-in IPA specific config to tmpfiles.d +- Resolves: #1469480 bind package is not automatically updated during + ipa-server upgrade process + - Bumped Required version of bind-dyndb-ldap and bind package + +* Tue Jun 27 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-20.el7 +- Resolves: #1452216 Replica installation grants HTTP principal + access in WebUI + - Make sure we check ccaches in all rpcserver paths + +* Wed Jun 21 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-19.el7 +- Resolves: #1462112 ipaserver installation fails in FIPS mode: OpenSSL + internal error, assertion failed: Digest MD4 forbidden in FIPS mode! + - ipa-sam: replace encode_nt_key() with E_md4hash() + - ipa_pwd_extop: do not generate NT hashes in FIPS mode +- Resolves: #1377973 ipa-server-install fails when the provided or resolved + IP address is not found on local interfaces + - Fix local IP address validation + - ipa-dns-install: remove check for local ip address + - refactor CheckedIPAddress class + - CheckedIPAddress: remove match_local param + - Remove ip_netmask from option parser + - replica install: add missing check for non-local IP address + - Remove network and broadcast address warnings + +* Thu Jun 15 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-18.el7 +- Resolves: #1449189 ipa-kra-install timeouts on replica + - kra: promote: Get ticket before calling custodia + +* Wed Jun 14 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-17.el7 +- Resolve: #1455946 Provide a tooling automating the configuration + of Smart Card authentication on a FreeIPA master + - server certinstall: update KDC master entry + - pkinit manage: introduce ipa-pkinit-manage + - server upgrade: do not enable PKINIT by default + - Extend the advice printing code by some useful abstractions + - Prepare advise plugin for smart card auth configuration +- Resolve: #1461053 allow to modify list of UPNs of a trusted forest + - trust-mod: allow modifying list of UPNs of a trusted forest + - WebUI: add support for changing trust UPN suffixes + +* Wed Jun 7 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-16.el7 +- Resolves: #1377973 ipa-server-install fails when the provided or resolved + IP address is not found on local interfaces + - Only warn when specified server IP addresses don't match intf +- Resolves: #1438016 gssapi errors after IPA server upgrade + - Bump version of python-gssapi +- Resolves: #1457942 certauth: use canonical principal for lookups + - ipa-kdb: use canonical principal in certauth plugin +- Resolves: #1459153 Do not send Max-Age in ipa_session cookie to avoid + breaking older clients + - Add code to be able to set default kinit lifetime + - Revert setting sessionMaxAge for old clients + +* Wed Jun 7 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-15.el7 +- Resolves: #1442233 IPA client commands fail when pointing to replica + - httpinstance: wait until the service entry is replicated +- Resolves: #1456769 ipaAnchorUUID index incorrectly configured and then + not indexed + - Fix index definition for ipaAnchorUUID +- Resolves: #1438016 gssapi errors after IPA server upgrade + - Avoid possible endless recursion in RPC call + - rpc: preparations for recursion fix + - rpc: avoid possible recursion in create_connection +- Resolves: #1446087 services entries missing krbCanonicalName attribute. + - Changing cert-find to do not use only primary key to search in LDAP. +- Resolves: #1452763 ipa certmaprule change not reflected in krb5kdc workers + - ipa-kdb: reload certificate mapping rules periodically +- Resolves: #1455541 after upgrade login from web ui breaks + - kdc.key should not be visible to all +- Resolves: #1435606 Add pkinit_indicator option to KDC configuration + - ipa-kdb: add pkinit authentication indicator in case of a successful + certauth +- Resolves: #1455945 Enabling OCSP checks in mod_nss breaks certificate + issuance when ipa-ca records are not resolvable + - Turn off OCSP check +- Resolves: #1454483 rhel73 ipa ui - cannot del server - IPA Error 903 - + server_del - TypeError: 'NoneType' object is not iterable + - fix incorrect suffix handling in topology checks + +* Wed May 24 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-14.el7 +- Resolves: #1438731 Extend ipa-server-certinstall and ipa-certupdate to + handle PKINIT certificates/anchors + - certdb: add named trust flag constants + - certdb, certs: make trust flags argument mandatory + - certdb: use custom object for trust flags + - install: trust IPA CA for PKINIT + - client install: fix client PKINIT configuration + - install: introduce generic Kerberos Augeas lens + - server install: fix KDC PKINIT configuration + - ipapython.ipautil.run: Add option to set umask before executing command + - certs: do not export keys world-readable in install_key_from_p12 + - certs: do not export CA certs in install_pem_from_p12 + - server install: fix KDC certificate validation in CA-less + - replica install: respect --pkinit-cert-file + - cacert manage: support PKINIT + - server certinstall: support PKINIT +- Resolves: #1444432 CA-less pkinit not installable with --pkinit-cert-file + option + - certs: do not export CA certs in install_pem_from_p12 + - server install: fix KDC certificate validation in CA-less +- Resolves: #1451228 ipa-kra-install fails when primary KRA server has been + decommissioned + - ipa-kra-install: fix pkispawn setting for pki_security_domain_hostname +- Resolves: #1451712 KRA installation fails on server that was originally + installed as CA-less + - ipa-ca-install: append CA cert chain into /etc/ipa/ca.crt +- Resolves: #1441499 ipa cert-show does not raise error if no file name + specified + - ca/cert-show: check certificate_out in options +- Resolves: #1449522 Deprecate `ipa pkinit-anonymous` command in FreeIPA 4.5+ + - Remove pkinit-anonymous command +- Resolves: #1449523 Provide an API command to retrieve PKINIT status + in the FreeIPA topology + - Allow for multivalued server attributes + - Refactor the role/attribute member reporting code + - Add an attribute reporting client PKINIT-capable servers + - Add the list of PKINIT servers as a virtual attribute to global config + - Add `pkinit-status` command + - test_serverroles: Get rid of MockLDAP and use ldap2 instead +- Resolves: #1452216 Replica installation grants HTTP principal access in WebUI + - Fix rare race condition with missing ccache file +- Resolves: #1455045 Simple service uninstallers must be able to handle + missing service files gracefully + - only stop/disable simple service if it is installed +- Resolves: #1455541 after upgrade login from web ui breaks + - krb5: make sure KDC certificate is readable +- Resolves: #1455862 "ipa: ERROR: an internal error has occurred" on executing + command "ipa cert-request --add" after upgrade + - Change python-cryptography to python2-cryptography + +* Thu May 18 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-13.el7 +- Resolves: #1451804 "AttributeError: 'tuple' object has no attribute 'append'" + error observed during ipa upgrade with latest package. + - ipa-server-install: fix uninstall +- Resolves: #1445390 ipa-[ca|kra]-install with invalid DM password break + replica + - ca install: merge duplicated code for DM password + - installutils: add DM password validator + - ca, kra install: validate DM password + +* Tue May 16 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-12.el7 +- Resolves: #1447284 Upgrade from ipa-4.1 fails when enabling KDC proxy + - python2-ipalib: add missing python dependency + - installer service: fix typo in service entry + - upgrade: add missing suffix to http instance +- Resolves: #1444791 Update man page of ipa-kra-install + - ipa-kra-install manpage: document domain-level 1 +- Resolves: #1441493 ipa cert-show raises stack traces when + --certificate-out=/tmp + - cert-show: writable files does not mean dirs +- Resolves: #1441192 Add the name of URL parameter which will be check for + username during cert login + - Bump version of ipa.conf file +- Resolves: #1378797 Web UI must check OCSP and CRL during smartcard login + - Turn on NSSOCSP check in mod_nss conf +- Resolves: #1322963 Errors from AD when trying to sign ipa.csr, conflicting + template on + - renew agent: respect CA renewal master setting + - server upgrade: always fix certmonger tracking request + - cainstance: use correct profile for lightweight CA certificates + - renew agent: allow reusing existing certs + - renew agent: always export CSR on IPA CA certificate renewal + - renew agent: get rid of virtual profiles + - ipa-cacert-manage: add --external-ca-type +- Resolves: #1441593 error adding authenticator indicators to host + - Fixing adding authenticator indicators to host +- Resolves: #1449525 Set directory ownership in spec file + - Added plugins directory to ipaclient subpackages + - ipaclient: fix missing RPM ownership +- Resolves: #1451279 otptoken-add-yubikey KeyError: 'ipatokenotpdigits' + - otptoken-add-yubikey: When --digits not provided use default value + +* Wed May 10 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-11.el7 +- Resolves: #1449189 ipa-kra-install timeouts on replica + - ipa-kra-install: fix check_host_keys + +* Wed May 3 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-10.el7 +- Resolves: #1438833 [ipa-replica-install] - 406 Client Error: Failed to + validate message: Incorrect number of results (0) searching forpublic key for + host + - Make sure remote hosts have our keys +- Resolves: #1442815 Replica install fails during migration from older IPA + master + - Refresh Dogtag RestClient.ca_host property + - Remove the cachedproperty class +- Resolves: #1444787 Update warning message when KRA installation fails + - kra install: update installation failure message +- Resolves: #1444896 ipa-server-install with external-ca fails in FIPS mode + - ipa-server-install with external CA: fix pkinit cert issuance +- Resolves: #1445397 GET in KerberosSession.finalize_kerberos_acquisition() + must use FreeIPA CA + - kerberos session: use CA cert with full cert chain for obtaining cookie +- Resolves: #1447375 ipa-client-install: extra space in pkinit_anchors + definition + - ipa-client-install: remove extra space in pkinit_anchors definition +- Resolves: #1447703 Fix SELinux contex of http.keytab during upgrade + - Use proper SELinux context with http.keytab + +* Fri Apr 28 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-9.el7 +- Resolves: #1200767 [RFE] Allow Kerberos authentication for users with + certificates on smart cards (pkinit) + - spec file: bump krb5 Requires for certauth fixes +- Resolves: #1438729 Configure local PKINIT on DL0 or when '--no-pkinit' option + is used + - separate function to set ipaConfigString values on service entry + - Allow for configuration of all three PKINIT variants when deploying KDC + - API for retrieval of master's PKINIT status and publishing it in LDAP + - Use only anonymous PKINIT to fetch armor ccache + - Stop requesting anonymous keytab and purge all references of it + - Use local anchor when armoring password requests + - Upgrade: configure local/full PKINIT depending on the master status + - Do not test anonymous PKINIT after install/upgrade +- Resolves: #1442427 ipa.ipaserver.install.plugins.adtrust. + update_tdo_gidnumber: ERROR Default SMB Group not found + - upgrade: adtrust update_tdo_gidnumber plugin must check if adtrust is + installed +- Resolves: #1442932 ipa restore fails to restore IPA user + - restore: restart/reload gssproxy after restore +- Resolves: #1444896 ipa-server-install with external-ca fails in FIPS mode + - Fix CA/server cert validation in FIPS +- Resolves: #1444947 Deadlock between topology and schema-compat plugins + - compat-manage: behave the same for all users + - Move the compat plugin setup at the end of install + - compat: ignore cn=topology,cn=ipa,cn=etc subtree +- Resolves: #1445358 ipa vault-add raises TypeError + - vault: piped input for ipa vault-add fails +- Resolves: #1445382 ipa vault-retrieve fails to retrieve data from vault + - Vault: Explicitly default to 3DES CBC +- Resolves: #1445432 uninstall ipa client automount failed with RuntimeWarning + - automount install: fix checking of SSSD functionality on uninstall +- Resolves: #1446137 pki_client_database_password is shown in + ipaserver-install.log + - Hide PKI Client database password in log file + +* Thu Apr 20 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-8.el7 +- Resolves: #1443869 Command "openssl pkcs12 ..." failed during IPA upgrade + - Fix CAInstance.import_ra_cert for empty passwords + +* Wed Apr 19 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-7.el7 +- Resolves: #1431520 ipa cert-find runs a large number of searches, so IPA + WebUI is slow to display user details page + - cert: defer cert-find result post-processing +- Resolves: #1435611 Tracebacks seen from dogtag-ipa-ca-renew-agent-submit + helper when installing replica + - server-install: No double Kerberos install +- Resolves: #1437502 ipa-replica-install fails with requirement to + use --force-join that is a client install option. + - Add the force-join option to replica install + - replicainstall: better client install exception handling +- Resolves: #1437953 Server CA-less impossible option check + - server-install: remove broken no-pkinit check +- Resolves: #1441160 FreeIPA client <= 4.4 fail to parse 4.5 cookies + - Add debug log in case cookie retrieval went wrong +- Resolves: #1441548 ipa server install fails with --external-ca option + - ext. CA: correctly write the cert chain +- Resolves: #1441718 Conversion of CA-less server to CA fails on CA instance + spawn + - Fix CA-less to CA-full upgrade +- Resolves: #1442133 Do not link libkrad, liblber, libldap_r and + libsss_nss_idmap to every binary in IPA + - configure: fix AC_CHECK_LIB usage +- Resolves: #1442815 Replica install fails during migration from older IPA + master + - Fix RA cert import during DL0 replication +- Related: #1442004 Building IdM/FreeIPA internally on all architectures - + filtering unsupported packages + - Build all subpackages on all architectures + +* Wed Apr 12 2017 Pavel Vomacka <pvomacka@redhat.com> - 4.5.0-6.el7 +- Resolves: #1382053 Need to have validation for idrange names + - idrange-add: properly handle empty --dom-name option +- Resolves: #1435611 Tracebacks seen from dogtag-ipa-ca-renew-agent-submit + helper when installing replica + - dsinstance: reconnect ldap2 after DS is restarted by certmonger + - httpinstance: avoid httpd restart during certificate request + - dsinstance, httpinstance: consolidate certificate request code + - install: request service certs after host keytab is set up + - renew agent: revert to host keytab authentication + - renew agent, restart scripts: connect to LDAP after kinit +- Resolves: #1436987 ipasam: gidNumber attribute is not created in the trusted + domain entry + - ipa-sam: create the gidNumber attribute in the trusted domain entry + - Upgrade: add gidnumber to trusted domain entry +- Resolves: #1438679 [ipa-replica-install] - IncorrectPasswordException: + Incorrect client security database password + - Add pki_pin only when needed +- Resolves: #1438348 Console output message while adding trust should be + mapped with texts changed in Samba. + - ipaserver/dcerpc: unify error processing +- Resolves: #1438366 ipa trust-fetch-domains: ValidationError: invalid + 'Credentials': Missing credentials for cross-forest communication + - trust: always use oddjobd helper for fetching trust information +- Resolves: #1441192 Add the name of URL parameter which will be check for + username during cert login + - WebUI: cert login: Configure name of parameter used to pass username +- Resolves: #1437879 [copr] Replica install failing + - Create system users for FreeIPA services during package installation +- Resolves: #1441316 WebUI cert auth fails after ipa-adtrust-install + - Fix s4u2self with adtrust + +* Wed Apr 5 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-5.el7 +- Resolves: #1318186 Misleading error message during external-ca IPA master + install + - httpinstance: make sure NSS database is backed up +- Resolves: #1331443 Re-installing ipa-server after uninstall fails with "ERROR + CA certificate chain in ... incomplete" + - httpinstance: make sure NSS database is backed up +- Resolves: #1393726 Enumerate all available request type options in ipa + cert-request help + - Hide request_type doc string in cert-request help +- Resolves: #1402959 [RFE] Universal Smart Card to Identity mapping + - spec file: bump libsss_nss_idmap-devel BuildRequires + - server: make sure we test for sss_nss_getlistbycert +- Resolves: #1437378 ipa-adtrust-install produced an error and failed on + starting smb when hostname is not FQDN + - adtrust: make sure that runtime hostname result is consistent with the + configuration +- Resolves: #1437555 ipa-replica-install with DL0 fails to get annonymous + keytab + - Always check and create anonymous principal during KDC install + - Remove duplicate functionality in upgrade +- Resolves: #1437946 Upgrade to FreeIPA 4.5.0 does not configure anonymous + principal for PKINIT + - Upgrade: configure PKINIT after adding anonymous principal + - Remove unused variable from failed anonymous PKINIT handling + - Split out anonymous PKINIT test to a separate method + - Ensure KDC is propery configured after upgrade +- Resolves: #1437951 Remove pkinit-related options from server/replica-install + on DL0 + - Fix the order of cert-files check + - Don't allow setting pkinit-related options on DL0 + - replica-prepare man: remove pkinit option refs + - Remove redundant option check for cert files +- Resolves: #1438490 CA-less installation fails on publishing CA certificate + - Get correct CA cert nickname in CA-less + - Remove publish_ca_cert() method from NSSDatabase +- Resolves: #1438838 Avoid arch-specific path in /etc/krb5.conf.d/ipa-certmap + - IPA-KDB: use relative path in ipa-certmap config snippet +- Resolves: #1439038 Allow erasing ipaDomainResolutionOrder attribute + - Allow erasing ipaDomainResolutionOrder attribute + +* Wed Mar 29 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-4.el7 +- Resolves: #1434032 Run ipa-custodia with custom SELinux context + - Require correct custodia version + +* Tue Mar 28 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-3.el7 +- Resolves: #800545 [RFE] Support SUDO command rename + - Reworked the renaming mechanism + - Allow renaming of the sudorule objects +- Resolves: #872671 IPA WebUI login for AD Trusted User fails + - WebUI: check principals in lowercase + - WebUI: add method for disabling item in user dropdown menu + - WebUI: Add support for login for AD users +- Resolves: #1200767 [RFE] Allow Kerberos authentication for users with + certificates on smart cards (pkinit) + - ipa-kdb: add ipadb_fetch_principals_with_extra_filter() + - IPA certauth plugin + - ipa-kdb: do not depend on certauth_plugin.h + - spec file: bump krb5-devel BuildRequires for certauth +- Resolves: #1264370 RFE: disable last successful authentication by default in + ipa. + - Set "KDC:Disable Last Success" by default +- Resolves: #1318186 Misleading error message during external-ca IPA master + install + - certs: do not implicitly create DS pin.txt + - httpinstance: clean up /etc/httpd/alias on uninstall +- Resolves: #1331443 Re-installing ipa-server after uninstall fails with "ERROR + CA certificate chain in ... incomplete" + - certs: do not implicitly create DS pin.txt + - httpinstance: clean up /etc/httpd/alias on uninstall +- Resolves: #1366572 [RFE] Web UI: allow Smart Card authentication + - configure: fix --disable-server with certauth plugin + - rpcserver.login_x509: Actually return reply from __call__ method + - spec file: Bump requires to make Certificate Login in WebUI work +- Resolves: #1402959 [RFE] Universal Smart Card to Identity mapping + - extdom: do reverse search for domain separator + - extdom: improve cert request +- Resolves: #1430363 [RFE] HBAC rule names command rename + - Reworked the renaming mechanism + - Allow renaming of the HBAC rule objects +- Resolves: #1433082 systemctl daemon-reload needs to be called after + httpd.service.d/ipa.conf is manipulated + - tasks: run `systemctl daemon-reload` after httpd.service.d updates +- Resolves: #1434032 Run ipa-custodia with custom SELinux context + - Use Custodia 0.3.1 features +- Resolves: #1434384 RPC client should use HTTP persistent connection + - Use connection keep-alive + - Add debug logging for keep-alive + - Increase Apache HTTPD's default keep alive timeout +- Resolves: #1434729 man ipa-cacert-manage install needs clarification + - man ipa-cacert-manage install needs clarification +- Resolves: #1434910 replica install against IPA v3 master fails with ACIError + - Fixing replica install: fix ldap connection in domlvl 0 +- Resolves: #1435394 Ipa-kra-install fails with weird output when backspace is + used during typing Directory Manager password + - ipapython.ipautil.nolog_replace: Do not replace empty value +- Resolves: #1435397 ipa-replica-install can't install replica file produced by + ipa-replica-prepare on 4.5 + - replica prepare: fix wrong IPA CA nickname in replica file +- Resolves: #1435599 WebUI: in self-service Vault menu item is shown even if + KRA is not installed + - WebUI: Fix showing vault in selfservice view +- Resolves: #1435718 As a ID user I cannot call a command with --rights option + - ldap2: use LDAP whoami operation to retrieve bind DN for current connection +- Resolves: #1436319 "Truncated search results" pop-up appears in user details + in WebUI + - WebUI: Add support for suppressing warnings + - WebUI: suppress truncation warning in select widget +- Resolves: #1436333 Uninstall fails with No such file or directory: + '/var/run/ipa/services.list' + - Create temporaty directories at the begining of uninstall +- Resolves: #1436334 WebUI: Adding certificate mapping data using certificate + fails + - WebUI: Allow to add certs to certmapping with CERT LINES around +- Resolves: #1436338 CLI doesn't work after ipa-restore + - Backup ipa-specific httpd unit-file + - Backup CA cert from kerberos folder +- Resolves: #1436342 Bump samba version, required for FIPS mode and privilege + separation + - Bump samba version for FIPS and priv. separation +- Resolves: #1436642 [ipalib/rpc.py] - "maximum recursion depth exceeded" with + ipa vault commands + - Avoid growing FILE ccaches unnecessarily + - Handle failed authentication via cookie + - Work around issues fetching session data + - Prevent churn on ccaches +- Resolves: #1436657 Add workaround for pki_pin for FIPS + - Generate PIN for PKI to help Dogtag in FIPS +- Resolves: #1436714 [vault] cache KRA transport cert + - Simplify KRA transport cert cache +- Resolves: #1436723 cert-find does not find all certificates without + sizelimit=0 + - cert: do not limit internal searches in cert-find +- Resolves: #1436724 Renewal of IPA RA fails on replica + - dogtag-ipa-ca-renew-agent-submit: fix the is_replicated() function +- Resolves: #1436753 Master tree fails to install + - httpinstance.disable_system_trust: Don't fail if module 'Root Certs' is not + available + +* Tue Mar 21 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-2.el7 +- Resolves: #1432630 python2-jinja2 needed for python2-ipaclient + - Remove csrgen +- Resolves: #1432903 Set GssProxy options to enable caching of ldap tickets + - Add options to allow ticket caching + +* Wed Mar 15 2017 Jan Cholasta <jcholast@redhat.com> - 4.5.0-1.el7 +- Resolves: #828866 [RFE] enhance --subject option for ipa-server-install +- Resolves: #1160555 ipa-server-install: Cannot handle double hyphen "--" in + hostname +- Resolves: #1286288 Insufficient 'write' privilege to the 'ipaExternalMember' + attribute +- Resolves: #1321652 ipa-server-install fails when using external certificates + that encapsulate RDN components in double quotes +- Resolves: #1327207 ipa cert-revoke --help doesn't provide enough info on + revocation reasons +- Resolves: #1340880 ipa-server-install: improve prompt on interactive + installation +- Resolves: #1353841 ipa-replica-install fails to install when resolv.conf + incomplete entries +- Resolves: #1356104 cert-show command does not display Subject Alternative + Names +- Resolves: #1357511 Traceback message seen when ipa is provided with invalid + configuration file name +- Resolves: #1358752 ipa-ca-install fails on replica when IPA server is + converted from CA-less to CA-full +- Resolves: #1366572 [RFE] Web UI: allow Smart Card authentication +- Resolves: #1367572 improve error message in ipa migrate-ds: mention ipa + config-mod --enable-migration=TRUE +- Resolves: #1367868 Add options to retrieve lightweight CA certificate/chain +- Resolves: #1371927 Implement ca-enable/disable commands. +- Resolves: #1372202 Add Users into User Group editors fails to show Full names +- Resolves: #1373091 Adding an auth indicator from the CLI creates an extra + check box in the UI +- Resolves: #1375596 Ipa-server WebUI - long user/group name show wrong error + message +- Resolves: #1375905 "Normal" group type in the UI is confusing +- Resolves: #1376040 IPA client ipv6 - invalid --ip-address shows traceback +- Resolves: #1376630 IDM admin password gets written to + /root/.dogtag/pki-tomcat/ca/pkcs12_password.conf +- Resolves: #1376729 ipa-server-install script option --no_hbac_allow should + match other options +- Resolves: #1378461 IPA Allows Password Reuse with History value defined when + admin resets the password. +- Resolves: #1379029 conncheck failing intermittently during single step + replica installs +- Resolves: #1379858 [RFE] better debugging for ipa-replica-conncheck +- Resolves: #1384310 ipa dnsrecord-add fails with Keyerror stack trace +- Resolves: #1392778 Update man page for ipa-adtrust-install by + removing --no-msdcs option +- Resolves: #1392858 Rebase to FreeIPA 4.5+ + - Rebase to 4.5.0 +- Resolves: #1399133 Delete option shouldn't be available for hosts applied to + view. +- Resolves: #1399190 [RFE] Certificates issued by externally signed IdM CA + should contain full trust chain +- Resolves: #1400416 RFE: Provide option to take backup of IPA server before + uninstalling IPA server +- Resolves: #1400529 cert-request is not aware of Kerberos principal aliases +- Resolves: #1401526 IPA WebUI certificates are grayed out on overview page but + not on details page +- Resolves: #1402959 [RFE] Universal Smart Card to Identity mapping +- Resolves: #1404750 ipa-client-install fails to get CA cert via LDAP when + non-FQDN name of IPA server is first in /etc/hosts +- Resolves: #1409628 [RFE] Semi-automatic integration with external DNS using + nsupdate +- Resolves: #1413742 Backport request for bug/issue Change IP address + validation errors to warnings +- Resolves: #1415652 IPA replica install log shows password in plain text +- Resolves: #1427897 different behavior regarding system wide certs in master + and replica. +- Resolves: #1430314 The ipa-managed-entries command failed, exception: + AttributeError: ldap2 + +* Tue Mar 14 2017 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14.7 +- Resolves: #1419735 ipa-replica-install fails promotecustodia.create_replica + with cert errors (untrusted) + - added ssl verification using IPA trust anchor +- Resolves: #1428472 batch param compatibility is incorrect + - compat: fix `Any` params in `batch` and `dnsrecord` +- Renamed patches 1011 and 1012 to 0159 and 0157, as they were merged upstream + +* Tue Jan 31 2017 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14.6 +- Resolves: #1416454 replication race condition prevents IPA to install + - wait_for_entry: use only DN as parameter + - Wait until HTTPS principal entry is replicated to replica + - Use proper logging for error messages + +* Tue Jan 31 2017 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14.5 +- Resolves: #1365858 ipa-ca-install fails on replica when IPA Master is + installed without CA + - Set up DS TLS on replica in CA-less topology +- Resolves: #1398600 IPA replica install fails with dirsrv errors. + - Do not configure PKI ajp redirection to use "::1" +- Resolves: #1413137 CVE-2017-2590 ipa: Insufficient permission check for + ca-del, ca-disable and ca-enable commands + - ca: correctly authorise ca-del, ca-enable and ca-disable + +* Fri Dec 16 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14.4 +- Resolves: #1370493 CVE-2016-7030 ipa: DoS attack against kerberized services + by abusing password policy + - ipa-kdb: search for password policies globally +- Renamed patches 1011 and 1012 to 0151 and 0150, as they were merged upstream + +* Tue Dec 13 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14.3 +- Resolves: #1398670 Check IdM Topology for broken record caused by replication + conflict before upgrading it + - Check for conflict entries before raising domain level + +* Tue Dec 13 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14.2 +- Resolves: #1382812 Creation of replica for disconnected environment is + failing with CA issuance errors; Need good steps. + - gracefully handle setting replica bind dn group on old masters +- Resolves: #1397439 ipa-ca-install on promoted replica hangs on creating a + temporary CA admin + - replication: ensure bind DN group check interval is set on replica config + - add missing attribute to ipaca replica during CA topology update +- Resolves: #1401088 IPA upgrade of replica without DNS fails during restart of + named-pkcs11 + - bindinstance: use data in named.conf to determine configuration status + +* Mon Dec 12 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14.1 +- Resolves: #1370493 CVE-2016-7030 ipa: DoS attack against kerberized services + by abusing password policy + - password policy: Add explicit default password policy for hosts and + services +- Resolves: #1395311 CVE-2016-9575 ipa: Insufficient permission check in + certprofile-mod + - certprofile-mod: correctly authorise config update + +* Tue Nov 1 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-14 +- Resolves: #1378353 Replica install fails with old IPA master sometimes during + replication process + - spec file: bump minimal required version of 389-ds-base +- Resolves: #1387779 Make httpd publish CA certificate on Domain Level 1 + - Fix missing file that fails DL1 replica installation +- Resolves: #1387782 WebUI: Services are not displayed correctly after upgrade + - WebUI: services without canonical name are shown correctly +- Resolves: #1389709 Traceback seen in error_log when trustdomain-del is run + - trustdomain-del: fix the way how subdomain is searched + +* Mon Oct 31 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-13 +- Resolves: #1318616 CA fails to start after doing ipa-ca-install --external-ca + - Keep NSS trust flags of existing certificates +- Resolves: #1360813 ipa-server-certinstall does not update all certificate + stores and doesn't set proper trust permissions + - Add cert checks in ipa-server-certinstall +- Resolves: #1371479 cert-find --all does not show information about revocation + - cert: add revocation reason back to cert-find output +- Resolves: #1375133 WinSync users who have First.Last casing creates users who + can have their password set + - ipa passwd: use correct normalizer for user principals +- Resolves: #1377858 Users with 2FA tokens are not able to login to IPA servers + - Properly handle LDAP socket closures in ipa-otpd +- Resolves: #1387779 Make httpd publish CA certificate on Domain Level 1 + - Make httpd publish its CA certificate on DL1 + +* Fri Sep 16 2016 Petr Vobornik <pvoborni@redhat.com> - 4.4.0-12 +- Resolves: #1373910 IPA server upgrade fails with DNS timed out errors. +- Resolves: #1375269 ipa trust-fetch-domains throws internal error + +* Tue Sep 13 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-11 +- Resolves: #1373359 ipa-certupdate fails with "CA is not configured" + - Fix regression introduced in ipa-certupdate + +* Wed Sep 7 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-10 +- Resolves: #1355753 adding two way non transitive(external) trust displays + internal error on the console + - Always fetch forest info from root DCs when establishing two-way trust + - factor out `populate_remote_domain` method into module-level function + - Always fetch forest info from root DCs when establishing one-way trust +- Resolves: #1356101 Lightweight sub-CA certs are not tracked by certmonger + after `ipa-replica-install` + - Track lightweight CAs on replica installation +- Resolves: #1357488 ipa command stuck forever on higher versioned client with + lower versioned server + - compat: Save server's API version in for pre-schema servers + - compat: Fix ping command call + - schema cache: Store and check info for pre-schema servers +- Resolves: #1363905 man page for ipa-replica-manage has a typo in -c flag + - Fix man page ipa-replica-manage: remove duplicate -c option + from --no-lookup +- Resolves: #1367865 webui: cert_revoke should use --cacn to set correct CA + when revoking certificate + - cert: include CA name in cert command output + - WebUI add support for sub-CAs while revoking certificates +- Resolves: #1368424 Unable to view certificates issued by Sub CA in Web UI + - Add support for additional options taken from table facet + - WebUI: Fix showing certificates issued by sub-CA +- Resolves: #1368557 dnsrecord-add does not prompt for missing record parts + internactively + - dns: normalize record type read interactively in dnsrecord_add + - dns: prompt for missing record parts in CLI + - dns: fix crash in interactive mode against old servers +- Resolves: #1370519 Certificate revocation in service-del and host-del isn't + aware of Sub CAs + - cert: fix cert-find --certificate when the cert is not in LDAP + - Make host/service cert revocation aware of lightweight CAs +- Resolves: #1371901 Use OAEP padding with custodia + - Use RSA-OAEP instead of RSA PKCS#1 v1.5 +- Resolves: #1371915 When establishing external two-way trust, forest root + Administrator account is used to fetch domain info + - do not use trusted forest name to construct domain admin principal +- Resolves: #1372597 Incorrect CA ACL evaluation of SAN DNS names in + certificate request + - Fix CA ACL Check on SubjectAltNames +- Resolves: #1373272 CLI always sends default command version + - cli: use full name when executing a command +- Resolves: #1373359 ipa-certupdate fails with "CA is not configured" + - Fix ipa-certupdate for CA-less installation +- Resolves: #1373540 client-install with IPv6 address fails on link-local + address (always) + - Fix parse errors with link-local addresses + +* Fri Sep 2 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-9 +- Resolves: #1081561 CA not start during ipa server install in pure IPv6 env + - Fix ipa-server-install in pure IPv6 environment +- Resolves: #1318169 Tree-root domains in a trusted AD forest aren't marked as + reachable via the forest root + - trust: make sure ID range is created for the child domain even if it exists + - ipa-kdb: simplify trusted domain parent search +- Resolves: #1335567 Update Warning in IdM Web UI API browser + - WebUI: add API browser is tech preview warning +- Resolves: #1348560 Mulitple domain Active Directory Trust conflict + - ipaserver/dcerpc: reformat to make the code closer to pep8 + - trust: automatically resolve DNS trust conflicts for triangle trusts +- Resolves: #1351593 CVE-2016-5404 ipa: Insufficient privileges check in + certificate revocation + - cert-revoke: fix permission check bypass (CVE-2016-5404) +- Resolves: #1353936 custodia.conf and server.keys file is world-readable. + - Remove Custodia server keys from LDAP + - Secure permissions of Custodia server.keys +- Resolves: #1358752 ipa-ca-install fails on replica when IPA server is + converted from CA-less to CA-full + - custodia: include known CA certs in the PKCS#12 file for Dogtag + - custodia: force reconnect before retrieving CA certs from LDAP +- Resolves: #1362333 ipa vault container owner cannot add vault + - Fix: container owner should be able to add vault +- Resolves: #1365546 External trust with root domain is transitive + - trust: make sure external trust topology is correctly rendered +- Resolves: #1365572 IPA server broken after upgrade + - Require pki-core-10.3.3-7 +- Resolves: #1367864 Server assumes latest version of command instead of + version 1 for old / 3rd party clients + - rpcserver: assume version 1 for unversioned command calls + - rpcserver: fix crash in XML-RPC system commands +- Resolves: #1367773 thin client ignores locale change + - schema cache: Fallback to 'en_us' when locale is not available +- Resolves: #1368754 ipa server uninstall fails with Python "Global Name error" + - Fail on topology disconnect/last role removal +- Resolves: #1368981 ipa otptoken-add --type=hotp --key creates wrong OTP + - otptoken, permission: Convert custom type parameters on server +- Resolves: #1369414 ipa server-del fails with Python stack trace + - Handled empty hostname in server-del command +- Resolves: #1369761 ipa-server must depend on a version of httpd that support + mod_proxy with UDS + - Require httpd 2.4.6-31 with mod_proxy Unix socket support +- Resolves: #1370512 Received ACIError instead of DuplicatedError in + stageuser_tests + - Raise DuplicatedEnrty error when user exists in delete_container +- Resolves: #1371479 cert-find --all does not show information about revocation + - cert: add missing param values to cert-find output +- Renamed patch 1011 to 0100, as it was merged upstream + +* Wed Aug 17 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-8 +- Resolves: #1298288 [RFE] Improve performance in large environments. + - cert: speed up cert-find +- Resolves: #1317379 [EXPERIMENTAL][RFE] Web UI: allow Smart Card + authentication + - service: add flag to allow S4U2Self + - Add 'trusted to auth as user' checkbox + - Added new authentication method +- Resolves: #1353881 ipa-replica-install suggests about + non-existent --force-ntpd option + - Don't show --force-ntpd option in replica install +- Resolves: #1354441 DNS forwarder check is too strict: unable to add + sub-domain to already-broken domain + - DNS: allow to add forward zone to already broken sub-domain +- Resolves: #1356146 performance regression in CLI help + - schema: Speed up schema cache + - frontend: Change doc, summary, topic and NO_CLI to class properties + - schema: Introduce schema cache format + - schema: Generate bits for help load them on request + - help: Do not create instances to get information about commands and topics + - schema cache: Do not reset ServerInfo dirty flag + - schema cache: Do not read fingerprint and format from cache + - Access data for help separately + - frontent: Add summary class property to CommandOverride + - schema cache: Read server info only once + - schema cache: Store API schema cache in memory + - client: Do not create instance just to check isinstance + - schema cache: Read schema instead of rewriting it when SchemaUpToDate +- Resolves: #1360769 ipa-server-certinstall couldnt unlock private key file + - server install: do not prompt for cert file PIN repeatedly +- Resolves: #1364113 ipa-password: ipa: ERROR: RuntimeError: Unable to create + cache directory: [Errno 13] Permission denied: '/home/test_user' + - schema: Speed up schema cache +- Resolves: #1366604 `cert-find` crashes on invalid certificate data + - cert: do not crash on invalid data in cert-find +- Resolves: #1366612 Middle replica uninstallation in line topology works + without '--ignore-topology-disconnect' + - Fail on topology disconnect/last role removal +- Resolves: #1366626 caacl-add-service: incorrect error message when service + does not exists + - Fix ipa-caalc-add-service error message +- Resolves: #1367022 The ipa-server-upgrade command failed when named-pkcs11 + does not happen to run during dnf upgrade + - DNS server upgrade: do not fail when DNS server did not respond +- Resolves: #1367759 [RFE] [webui] warn admin if there is only one IPA server + with CA + - Add warning about only one existing CA server + - Set servers list as default facet in topology facet group +- Resolves: #1367773 thin client ignores locale change + - schema check: Check current client language against cached one + +* Wed Aug 10 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-7 +- Resolves: #1361119 UPN-based search for AD users does not match an entry in + slapi-nis map cache + - support multiple uid values in schema compatibility tree + +* Wed Aug 10 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-6 +- Resolves: #1309700 Process /usr/sbin/winbindd was killed by signal 6 + - Revert "spec: add conflict with bind-chroot to freeipa-server-dns" +- Resolves: #1341249 Subsequent external CA installation fails + - install: fix external CA cert validation +- Resolves: #1353831 ipa-server-install fails in container because of + hostnamectl set-hostname + - server-install: Fix --hostname option to always override api.env values + - install: Call hostnamectl set-hostname only if --hostname option is used +- Resolves: #1356091 ipa-cacert-manage --help and man differ + - Improvements for the ipa-cacert-manage man and help +- Resolves: #1360631 ipa-backup is not keeping the + /etc/tmpfiles.d/dirsrv-<instance>.conf + - ipa-backup: backup /etc/tmpfiles.d/dirsrv-<instance>.conf +- Resolves: #1361047 ipa-replica-install --help usage line suggests the replica + file is needed + - Update ipa-replica-install documentation +- Resolves: #1361545 ipa-client-install starts rhel-domainname.service but does + not rpm-require it + - client: RPM require initscripts to get *-domainname.service +- Resolves: #1364197 caacl: error when instantiating rules with service + principals + - caacl: fix regression in rule instantiation +- Resolves: #1364310 ipa otptoken-add bytes object has no attribute confirm + - parameters: move the `confirm` kwarg to Param +- Resolves: #1364464 Topology graph: ca and domain adders shows question marks + instead of plus icon + - Fix unicode characters in ca and domain adders +- Resolves: #1365083 Incomplete output returned for command ipa vault-add + - client: add missing output params to client-side commands +- Resolves: #1365526 build fails during "make check" + - ipa-kdb: Fix unit test after packaging changes in krb5 + +* Fri Aug 5 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-5 +- Resolves: #1353829 traceback message seen in ipaserver-uninstall.log file. + - Do not initialize API in ipa-client-automount uninstall +- Resolves: #1356899 com.redhat.idm.trust.fetch_domains need update after thin + client changes + - idrange: fix unassigned global variable +- Resolves: #1360792 Migrating users doesn't update krbCanonicalName + - re-set canonical principal name on migrated users +- Resolves: #1362012 ipa hbactest produces error about cannot concatenate 'str' + and 'bool' objects + - Fix ipa hbactest output +- Resolves: #1362260 ipa vault-mod no longer allows defining salt + - vault: add missing salt option to vault_mod +- Resolves: #1362312 ipa vault-retrieve internal error when using the wrong + public key + - vault: Catch correct exception in decrypt +- Resolves: #1362537 ipa-server-install fails to create symlink from + /etc/ipa/kdcproxy/ to /etc/httpd/conf.d/ + - Correct path to HTTPD's systemd service directory +- Resolves: #1363756 Increase length of passwords generated by installer + - Increase default length of auto generated passwords + +* Fri Jul 29 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-4 +- Resolves: #1117306 [RFE] Allow multiple Principals per host entry (Kerberos + aliases) + - harden the check for trust namespace overlap in new principals +- Resolves: #1351142 CLI is not using session cookies for communication with + IPA API + - Fix session cookies +- Resolves: #1353888 Fix the help for ipa otp and other topics + - help: Add dnsserver commands to help topic 'dns' +- Resolves: #1354406 host-del updatedns options complains about missing ptr + record for host + - Host-del: fix behavior of --updatedns and PTR records +- Resolves: #1355718 ipa-replica-manage man page example output differs actual + command output + - Minor fix in ipa-replica-manage MAN page +- Resolves: #1358229 Traceback message should be fixed, seen while editing + winsync migrated user information in Default trust view. + - baseldap: Fix MidairCollision instantiation during entry modification +- Resolves: #1358849 CA replica install logs to wrong log file + - unite log file name of ipa-ca-install +- Resolves: #1359130 ipa-server-install command fails to install IPA server. + - DNS Locations: fix update-system-records unpacking error +- Resolves: #1359237 AVC on dirsrv config caused by IPA installer + - Use copy when replacing files to keep SELinux context +- Resolves: #1359692 ipa-client-install join fail with traceback against + RHEL-6.8 ipa-server + - compat: fix ping call +- Resolves: #1359738 ipa-replica-install --domain=<IPA primary domain> option + does not work + - replica-install: Fix --domain +- Resolves: #1360778 Vault commands are available in CLI even when the server + does not support them + - Revert "Enable vault-* commands on client" + - client: fix hiding of commands which lack server support +- Related: #1281704 Rebase to softhsm 2.1.0 + - Remove the workaround for softhsm bug #1293340 +- Related: #1298288 [RFE] Improve performance in large environments. + - Create indexes for krbCanonicalName attribute + +* Fri Jul 22 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-3 +- Resolves: #1296140 Remove redhat-access-plugin-ipa support + - Obsolete and conflict redhat-access-plugin-ipa +- Resolves: #1351119 Multiple issues while uninstalling ipa-server + - server uninstall fails to remove krb principals +- Resolves: #1351758 ipa commands not showing expected error messages + - frontend: copy command arguments to output params on client + - Show full error message for selinuxusermap-add-hostgroup +- Resolves: #1352883 Traceback on adding default automember group and hostgroup + set + - allow 'value' output param in commands without primary key +- Resolves: #1353888 Fix the help for ipa otp and other topics + - schema: Fix subtopic -> topic mapping +- Resolves: #1354348 ipa trustconfig-show throws internal error. + - allow 'value' output param in commands without primary key +- Resolves: #1354381 ipa trust-add with raw option gives internal error. + - trust-add: handle `--all/--raw` options properly +- Resolves: #1354493 Replica install fails with old IPA master + - DNS install: Ensure that DNS servers container exists +- Resolves: #1354628 ipa hostgroup-add-member does not return error message + when adding itself as member + - frontend: copy command arguments to output params on client +- Resolves: #1355856 ipa otptoken-add --type=totp gives internal error + - messages: specify message type for ResultFormattingError +- Resolves: #1356063 "ipa radiusproxy-add" command needs to prompt to enter + secret key + - expose `--secret` option in radiusproxy-* commands + - prevent search for RADIUS proxy servers by secret +- Resolves: #1356099 Bug in the ipapwd plugin + - Heap corruption in ipapwd plugin +- Resolves: #1356899 com.redhat.idm.trust.fetch_domains need update after thin + client changes + - Use server API in com.redhat.idm.trust-fetch-domains oddjob helper +- Resolves: #1356964 Renaming a user removes all of his principal aliases + - Preserve user principal aliases during rename operation + +* Fri Jul 15 2016 Petr Vobornik <pvoborni@redhat.com> - 4.4.0-2.1 +- Resolves: #1274524 [RFE] Qualify up to 60 IdM replicas +- Resolves: #1320838 [RFE] Support IdM Client in a DNS domain controlled by AD +- Related: #1356134 'kinit -E' does not work for IPA user + +* Thu Jul 14 2016 Petr Vobornik <pvoborni@redhat.com> - 4.4.0-2 +- Resolves: #1356102 Server uninstall does not stop tracking lightweight sub-CA + with certmonger + - uninstall: untrack lightweight CA certs +- Resolves: #1351807 ipa-nis-manage config.get_dn missing + - ipa-nis-manage: Use server API to retrieve plugin status +- Resolves: #1353452 ipa-compat-manage command failed, + exception: NotImplementedError: config.get_dn() + - ipa-compat-manage: use server API to retrieve plugin status +- Resolves: #1353899 ipa-advise: object of type 'type' has no len() + - ipa-advise: correct handling of plugin namespace iteration +- Resolves: #1356134 'kinit -E' does not work for IPA user + - kdb: check for local realm in enterprise principals +- Resolves: #1353072 ipa unknown command vault-add + - Enable vault-* commands on client + - vault-add: set the default vault type on the client side if none was given +- Resolves: #1353995 Default CA can be used without a CA ACL + - caacl: expand plugin documentation +- Resolves: #1356144 host-find should not print SSH keys by default, only + SSH fingerprints + - host-find: do not show SSH key by default +- Resolves: #1353506 ipa migrate-ds command fails for IPA in RHEL 7.3 + - Removed unused method parameter from migrate-ds + +* Fri Jul 1 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-1 +- Resolves: #747612 [RFE] IPA should support and manage DNS sites +- Resolves: #826790 Disabling password expiration (--maxlife=0 and --minlife=0) + in the default global_policy in IPA sets user's password expiration + (krbPasswordExpiration) to be 90 days +- Resolves: #896699 ipa-replica-manage -H does not delete DNS SRV records +- Resolves: #1084018 [RFE] Add IdM user password change support for legacy + client compat tree +- Resolves: #1117306 [RFE] Allow multiple Principals per host entry (Kerberos + aliases) + - Fix incorrect check for principal type when evaluating CA ACLs +- Resolves: #1146860 [RFE] Offer OTP generation for host enrollment in the UI +- Resolves: #1238190 ipasam unable to lookup group in directory yet manual + search works +- Resolves: #1250110 search by users which don't have read rights for all attrs + in search_attributes fails +- Resolves: #1263764 Show Certificate displays in useless format +- Resolves: #1272491 [WebUI] Certificate action dropdown does not display all + the options after adding new certificate +- Resolves: #1292141 Rebase to FreeIPA 4.4+ + - Rebase to 4.4.0 +- Resolves: #1294503 IPA fails to issue 3rd party certs +- Resolves: #1298242 [RFE] API compatibility - compatibility of clients +- Resolves: #1298848 [RFE] Centralized topology management +- Resolves: #1298966 [RFE] Extend Smart Card support +- Resolves: #1315146 Multiple clients cannot join domain simultaneously: + /var/run/httpd/ipa/clientcaches race condition? +- Resolves: #1318903 ipa server install failing when SUBCA signs the cert +- Resolves: #1319003 ipa-winsync-migrate: Traceback should be fixed with proper + console output +- Resolves: #1324055 IPA always qualify requests for admin +- Resolves: #1328552 [RFE] Allow users to authenticate with alternative names +- Resolves: #1334582 Inconsistent UI and CLI options for removing certificate + hold +- Resolves: #1346321 Exclude o=ipaca subtree from Retro Changelog (syncrepl) +- Resolves: #1349281 Fix `Conflicts` with ipa-python +- Resolves: #1350695 execution of copy-schema script fails +- Resolves: #1351118 upgrade failed for RHEL-7.3 from RHEL-7.2.z +- Resolves: #1351153 AVC seen on Replica during ipa-server upgrade test + execution to 7.3 +- Resolves: #1351276 ipa-server-install with dns cannot resolve itself to + create ipa-ca entry +- Related: #1343422 [RFE] Add GssapiImpersonate option + +* Wed Jun 22 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-0.2.alpha1 +- Resolves: #1348948 IPA server install fails with build + ipa-server-4.4.0-0.el7.1.alpha1 + - Revert "Increased mod_wsgi socket-timeout" + +* Wed Jun 22 2016 Jan Cholasta <jcholast@redhat.com> - 4.4.0-0.1.alpha1 +- Resolves: #712109 "krbExtraData not allowed" is logged in DS error log while + setting password for default sudo binddn. +- Resolves: #747612 [RFE] IPA should support and manage DNS sites +- Resolves: #768316 [RFE] ipa-getkeytab should auto-detect the ipa server name +- Resolves: #825391 [RFE] Replica installation should provide a means for + inheriting nssldap security access settings +- Resolves: #921497 Incorrect *.py[co] files placement +- Resolves: #1029640 RHEL7 IPA to add DNA Plugin config for dnaRemote support +- Resolves: #1029905 389 DS cache sizes not replicated to IPA replicas +- Resolves: #1196958 IPA replica installation failing with high number of users + (160000). +- Resolves: #1219402 IPA suggests to uninstall a client when the user needs to + uninstall a replica +- Resolves: #1224057 [RFE] TGS authorization decisions in KDC based on + Authentication Indicator +- Resolves: #1234222 [WebUI] UI error message is not appropriate for "Kerberos + principal expiration" +- Resolves: #1234223 [WebUI] General invalid password error message appearing + for "Locked user" +- Resolves: #1254267 ipa-server-install failure applying ldap updates with + limits exceeded +- Resolves: #1258626 realmdomains-mod --add-domain command throwing error when + doamin already is in forwardzone. +- Resolves: #1259020 ipa-server-adtrust-install doesn't allow + NetBIOS-name=EXAMPLE-TEST.COM (dash character) +- Resolves: #1260993 DNSSEC signing enablement on dnszone should throw error + message when DNSSEC master not installed +- Resolves: #1262747 dnssec options missing in ipa-dns-install man page +- Resolves: #1265900 Fail installation immediately after dirsrv fails to + install using ipa-server-install +- Resolves: #1265915 idoverrideuser-find fails if any SID anchor is not + resolvable anymore +- Resolves: #1268027 ipa-dnskeysync-replica crash with backtrace - + LimitsExceeded: limits exceeded for this query +- Resolves: #1269089 Certificate of managed-by host/service fails to resubmit +- Resolves: #1269200 ipa-server crashing while trying to preserve admin user +- Resolves: #1271321 Reduce ioblocktimeout and idletimeout defaults +- Resolves: #1271579 Automember rule expressions disappear from tables on + single expression delete +- Resolves: #1275816 Incomplete ports for IPA ad-trust +- Resolves: #1276351 [RFE] Remove + /usr/share/ipa/updates/50-lockout-policy.update file from IPA releases +- Resolves: #1277109 Add tool tips for Revert, Refresh, Undo, and Undo All in + the IPA UI +- Resolves: #1278426 Better error message needed for invalid ca-signing-algo + option +- Resolves: #1279932 ipa-client-install --request-cert needs workaround in + anaconda chroot +- Resolves: #1282521 Creating a user w/o private group fails when doing so in + WebUI +- Resolves: #1283879 ipa-winsync-migrate: Traceback message should be replaced + by "IPA is not configured on this system" +- Resolves: #1285071 ipa-kra-install fails on replica looking for admin cert + file +- Resolves: #1287194 [RFE] Support of UPN for trusted domains +- Resolves: #1288967 Normalize Manager entry in ipa user-add +- Resolves: #1289487 Priority field missing in Password Policy detail tab +- Resolves: #1291140 ipa client should configure kpasswd_server directive in + krb5.conf +- Resolves: #1292141 Rebase to FreeIPA 4.4+ + - Rebase to 4.4.0.alpha1 +- Resolves: #1298848 [RFE] Centralized topology management +- Resolves: #1300576 Browser setup page includes instructions for Internet + Explorer +- Resolves: #1301586 ipa host-del --updatedns should remove related dns + entries. +- Resolves: #1304618 Residual Files After IPA Server Uninstall +- Resolves: #1305144 ipa-python does not require its dependencies +- Resolves: #1309700 Process /usr/sbin/winbindd was killed by signal 6 +- Resolves: #1313798 Console output post ipa-winsync-migrate command should be + corrected. +- Resolves: #1314786 [RFE] External Trust with Active Directory domain +- Resolves: #1319023 Include description for 'status' option in man page for + ipactl command. +- Resolves: #1319912 ipa-server-install does not completely change hostname and + named-pkcs11 fails +- Resolves: #1320891 IPA Error 3009: Validation error: Invalid 'ptrrecord': + Reverse zone in-addr.arpa. requires exactly 4 IP address compnents, 5 given +- Resolves: #1327207 ipa cert-revoke --help doesn't provide enough info on + revocation reasons +- Resolves: #1328549 "ipa-kra-install" command reports incorrect message when + it is executed on server already installed with KRA. +- Resolves: #1329209 ipa-nis-manage enable: change service name from 'portmap' + to 'rpcbind' +- Resolves: #1329275 ipa-nis-manage command should include status option +- Resolves: #1330843 'man ipa' should be updated with latest commands +- Resolves: #1333755 ipa cert-request causes internal server error while + requesting certificate +- Resolves: #1337484 EOF is not handled for ipa-client-install command +- Resolves: #1338031 Insufficient 'write' privilege on some attributes for the + members of the role which has "User Administrators" privilege. +- Resolves: #1343142 IPA DNS should do better verification of DNS zones +- Resolves: #1347928 Frontpage exposes runtime error with no cookies enabled in + browser + +* Wed May 25 2016 Jan Cholasta <jcholast@redhat.com> - 4.3.1-0.201605241723GIT1b427d3.1 +- Resolves: #1339483 ipa-server-install fails with ERROR pkinit_cert_files + - Fix incorrect rebase of patch 1001 + +* Tue May 24 2016 Jan Cholasta <jcholast@redhat.com> - 4.3.1-0.201605241723GIT1b427d3 +- Resolves: #1339233 CA installed on replica is always marked as renewal master +- Related: #1292141 Rebase to FreeIPA 4.4+ + - Rebase to 4.3.1.201605241723GIT1b427d3 + +* Tue May 24 2016 Jan Cholasta <jcholast@redhat.com> - 4.3.1-0.201605191449GITf8edf37.1 +- Resolves: #1332809 ipa-server-4.2.0-15.el7_2.6.1.x86_64 fails to install + because of missing dependencies + - Rebuild with krb5-1.14.1 + +* Fri May 20 2016 Jan Cholasta <jcholast@redhat.com> - 4.3.1-0.201605191449GITf8edf37 +- Resolves: #837369 [RFE] Switch to client promotion to replica model +- Resolves: #1199516 [RFE] Move replication topology to the shared tree +- Resolves: #1206588 [RFE] Visualize FreeIPA server replication topology +- Resolves: #1211602 Hide ipa-server-install KDC master password option (-P) +- Resolves: #1212713 ipa-csreplica-manage: it could be nice to have also + list-ruv / clean-ruv / abort-clean-ruv for o=ipaca backend +- Resolves: #1267206 ipa-server-install uninstall should warn if no + installation found +- Resolves: #1295865 The Domain option is not correctly set in idmapd.conf when + ipa-client-automount is executed. +- Resolves: #1327092 URI details missing and OCSP-URI details are incorrectly + displayed when certificate generated using IPA on RHEL 7.2up2. +- Resolves: #1332809 ipa-server-4.2.0-15.el7_2.6.1.x86_64 fails to install + because of missing dependencies +- Related: #1292141 Rebase to FreeIPA 4.4+ + - Rebase to 4.3.1.201605191449GITf8edf37 + +* Mon Apr 18 2016 Jan Cholasta <jcholast@redhat.com> - 4.2.0-16 +- Resolves: #1277696 IPA certificate auto renewal fail with "Invalid + Credential" + - cert renewal: make renewal of ipaCert atomic +- Resolves: #1278330 installer options are not validated at the beginning of + installation + - install: fix command line option validation +- Resolves: #1282845 sshd_config change on ipa-client-install can prevent sshd + from starting up + - client install: do not corrupt OpenSSH config with Match sections +- Resolves: #1282935 ipa upgrade causes vault internal error + - install: export KRA agent PEM file in ipa-kra-install +- Resolves: #1283429 Default CA ACL rule is not created during + ipa-replica-install + - TLS and Dogtag HTTPS request logging improvements + - Avoid race condition caused by profile delete and recreate + - Do not erroneously reinit NSS in Dogtag interface + - Add profiles and default CA ACL on migration + - disconnect ldap2 backend after adding default CA ACL profiles + - do not disconnect when using existing connection to check default CA ACLs +- Resolves: #1283430 ipa-kra-install: fails to apply updates + - suppress errors arising from adding existing LDAP entries during KRA + install +- Resolves: #1283748 Caching of ipaconfig does not work in framework + - fix caching in get_ipa_config +- Resolves: #1283943 IPA DNS Zone/DNS Forward Zone details missing after + upgrade from RHEL 7.0 to RHEL 7.2 + - upgrade: fix migration of old dns forward zones + - Fix upgrade of forwardzones when zone is in realmdomains +- Resolves: #1284413 ipa-cacert-manage renew fails on nonexistent ldap + connection + - ipa-cacert-renew: Fix connection to ldap. +- Resolves: #1284414 ipa-otptoken-import fails on nonexistent ldap connection + - ipa-otptoken-import: Fix connection to ldap. +- Resolves: #1286635 IPA server upgrade fails from RHEL 7.0 to RHEL 7.2 using + "yum update ipa* sssd" + - Set minimal required version for openssl +- Resolves: #1286781 ipa-nis-manage does not update ldap with all NIS maps + - Upgrade: Fix upgrade of NIS Server configuration +- Resolves: #1289311 umask setting causes named-pkcs11 issue with directory + permissions on /var/lib/ipa/dnssec + - DNS: fix file permissions + - Explicitly call chmod on newly created directories + - Fix: replace mkdir with chmod +- Resolves: #1290142 Broken 7.2.0 to 7.2.z upgrade - flawed version comparison + - Fix version comparison + - use FFI call to rpmvercmp function for version comparison +- Resolves: #1292595 In IPA-AD trust environment some secondary IPA based Posix + groups are missing + - ipa-kdb: map_groups() consider all results +- Resolves: #1293870 User should be notified for wrong password in password + reset page + - Fixed login error message box in LoginScreen page +- Resolves: #1296196 Sysrestore did not restore state if a key is specified in + mixed case + - Allow to used mixed case for sysrestore +- Resolves: #1296214 DNSSEC key purging is not handled properly + - DNSSEC: Improve error reporting from ipa-ods-exporter + - DNSSEC: Make sure that current state in OpenDNSSEC matches key state in + LDAP + - DNSSEC: Make sure that current key state in LDAP matches key state in BIND + - DNSSEC: remove obsolete TODO note + - DNSSEC: add debug mode to ldapkeydb.py + - DNSSEC: logging improvements in ipa-ods-exporter + - DNSSEC: remove keys purged by OpenDNSSEC from master HSM from LDAP + - DNSSEC: ipa-dnskeysyncd: Skip zones with old DNSSEC metadata in LDAP + - DNSSEC: ipa-ods-exporter: add ldap-cleanup command + - DNSSEC: ipa-dnskeysyncd: call ods-signer ldap-cleanup on zone removal + - DNSSEC: Log debug messages at log level DEBUG +- Resolves: #1296216 ipa-server-upgrade fails if certmonger is not running + - prevent crash of CA-less server upgrade due to absent certmonger + - always start certmonger during IPA server configuration upgrade +- Resolves: #1297811 The ipa -e skip_version_check=1 still issues + incompatibility error when called against RHEL 6 server + - ipalib: assume version 2.0 when skip_version_check is enabled +- Resolves: #1298289 install fails when locale is "fr_FR.UTF-8" + - Do not decode HTTP reason phrase from Dogtag +- Resolves: #1300252 shared certificateProfiles container is missing on a + freshly installed RHEL7.2 system + - upgrade: unconditional import of certificate profiles into LDAP +- Resolves: #1301674 --setup-dns and other options is forgotten for using an + external PKI + - installer: Propagate option values from components instead of copying them. + - installer: Fix logic of reading option values from cache. +- Resolves: #1301687 issues with migration from RHEL 6 self-signed to RHEL 7 CA + IPA setup + - ipa-ca-install: print more specific errors when CA is already installed + - cert renewal: import all external CA certs on IPA CA cert renewal + - CA install: explicitly set dogtag_version to 10 + - fix standalone installation of externally signed CA on IPA master + - replica install: validate DS and HTTP server certificates + - replica install: improvements in the handling of CA-related IPA config + entries +- Resolves: #1301901 [RFE] compat tree: show AD members of IPA groups + - slapi-nis: update configuration to allow external members of IPA groups +- Resolves: #1305533 ipa trust-add succeded but after that ipa trust-find + returns "0 trusts matched" + - upgrade: fix config of sidgen and extdom plugins + - trusts: use ipaNTTrustPartner attribute to detect trust entries + - Warn user if trust is broken + - fix upgrade: wait for proper DS socket after DS restart + - Insure the admin_conn is disconnected on stop + - Fix connections to DS during installation + - Fix broken trust warnings +- Resolves: #1321092 Installers fail when there are multiple versions of the + same certificate + - certdb: never use the -r option of certutil +- Related: #1317381 Crash during IPA upgrade due to slapd + - spec file: update minimum required version of slapi-nis +- Related: #1322691 CVE-2015-5370 CVE-2016-2110 CVE-2016-2111 CVE-2016-2112 + CVE-2016-2113 CVE-2016-2114 CVE-2016-2115 CVE-2016-2118 samba: various flaws + [rhel-7.3] + - Rebuild against newer Samba version + +* Tue Oct 13 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-15 +- Resolves: #1252556 Missing CLI param and ACL for vault service operations + - vault: fix private service vault creation + +* Mon Oct 12 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-14 +- Resolves: #1262996 ipa vault internal error on replica without KRA + - upgrade: make sure ldap2 is connected in export_kra_agent_pem +- Resolves: #1270608 IPA upgrade fails for server with CA cert signed by + external CA + - schema: do not derive ipaVaultPublicKey from ipaPublicKey + +* Thu Oct 8 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-13 +- Resolves: #1217009 OTP sync in UI does not work for TOTP tokens + - Fix an integer underflow bug in libotp +- Resolves: #1262996 ipa vault internal error on replica without KRA + - install: always export KRA agent PEM file + - vault: select a server with KRA for vault operations +- Resolves: #1269777 IPA restore overwrites /etc/passwd and /etc/group files + - do not overwrite files with local users/groups when restoring authconfig +- Renamed patch 1011 to 0138, as it was merged upstream + +* Wed Sep 23 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-12 +- Resolves: #1204205 [RFE] ID Views: Automated migration tool from Winsync to + Trusts + - winsync-migrate: Convert entity names to posix friendly strings + - winsync-migrate: Properly handle collisions in the names of external groups +- Resolves: #1261074 Adjust Firefox configuration to new extension signing + policy + - webui: use manual Firefox configuration for Firefox >= 40 +- Resolves: #1263337 IPA Restore failed with installed KRA + - ipa-backup: Add mechanism to store empty directory structure +- Resolves: #1264793 CVE-2015-5284 ipa: ipa-kra-install includes certificate + and private key in world readable file [rhel-7.2] + - install: fix KRA agent PEM file permissions +- Resolves: #1265086 Mark IdM API Browser as experimental + - WebUI: add API browser is experimental warning +- Resolves: #1265277 Fix kdcproxy user creation + - install: create kdcproxy user during server install + - platform: add option to create home directory when adding user + - install: fix kdcproxy user home directory +- Resolves: #1265559 GSS failure after ipa-restore + - destroy httpd ccache after stopping the service + +* Thu Sep 17 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-11 +- Resolves: #1258965 ipa vault: set owner of vault container + - baseldap: make subtree deletion optional in LDAPDelete + - vault: add vault container commands + - vault: set owner to current user on container creation + - vault: update access control + - vault: add permissions and administrator privilege + - install: support KRA update +- Resolves: #1261586 ipa config-mod addattr fails for ipauserobjectclasses + - config: allow user/host attributes with tagging options +- Resolves: #1262315 Unable to establish winsync replication + - winsync: Add inetUser objectclass to the passsync sysaccount + +* Wed Sep 16 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-10 +- Resolves: #1260663 crash of ipa-dnskeysync-replica component during + ipa-restore + - IPA Restore: allows to specify files that should be removed +- Resolves: #1261806 Installing ipa-server package breaks httpd + - Handle timeout error in ipa-httpd-kdcproxy +- Resolves: #1262322 Failed to backup CS.cfg message in upgrade. + - Server Upgrade: backup CS.cfg when dogtag is turned off + +* Wed Sep 9 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-9 +- Resolves: #1257074 The KRA agent cert is stored in a PEM file that is not + tracked + - cert renewal: Include KRA users in Dogtag LDAP update + - cert renewal: Automatically update KRA agent PEM file +- Resolves: #1257163 renaming certificatte profile with --rename option leads + to integrity issues + - certprofile: remove 'rename' option +- Resolves: #1257968 kinit stop working after ipa-restore + - Backup: back up the hosts file +- Resolves: #1258926 Remove 'DNSSEC is experimental' warnings + - DNSSEC: remove "DNSSEC is experimental" warnings +- Resolves: #1258929 Uninstallation of IPA leaves extra entry in /etc/hosts + - Installer: do not modify /etc/hosts before user agreement +- Resolves: #1258944 DNSSEC daemons may deadlock when processing more than 1 + zone + - DNSSEC: backup and restore opendnssec zone list file + - DNSSEC: remove ccache and keytab of ipa-ods-exporter + - DNSSEC: prevent ipa-ods-exporter from looping after service auto-restart + - DNSSEC: Fix deadlock in ipa-ods-exporter <-> ods-enforcerd interaction + - DNSSEC: Fix HSM synchronization in ipa-dnskeysyncd when running on DNSSEC + key master + - DNSSEC: Fix key metadata export + - DNSSEC: Wrap master key using RSA OAEP instead of old PKCS v1.5. +- Resolves: #1258964 revert to use ldapi to add kra agent in KRA install + - Using LDAPI to setup CA and KRA agents. +- Resolves: #1259848 server closes connection and refuses commands after + deleting user that is still logged in + - ldap: Make ldap2 connection management thread-safe again +- Resolves: #1259996 AttributeError: 'NameSpace' object has no attribute + 'ra_certprofile' while ipa-ca-install + - load RA backend plugins during standalone CA install on CA-less IPA master + +* Wed Aug 26 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-8 +- Resolves: #1254689 Storing big file as a secret in vault raises traceback + - vault: Limit size of data stored in vault +- Resolves: #1255880 ipactl status should distinguish between different + pki-tomcat services + - ipactl: Do not start/stop/restart single service multiple times + +* Wed Aug 26 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-7 +- Resolves: #1256840 [webui] majority of required fields is no longer marked as + required + - fix missing information in object metadata +- Resolves: #1256842 [webui] no option to choose trust type when creating a + trust + - webui: add option to establish bidirectional trust +- Resolves: #1256853 Clear text passwords in KRA install log + - Removed clear text passwords from KRA install log. +- Resolves: #1257072 The "Standard Vault" MUST not be the default and must be + discouraged + - vault: change default vault type to symmetric +- Resolves: #1257163 renaming certificatte profile with --rename option leads + to integrity issues + - certprofile: prevent rename (modrdn) + +* Wed Aug 26 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-6 +- Resolves: #1249226 IPA dnssec-validation not working for AD dnsforwardzone + - DNSSEC: fix forward zone forwarders checks +- Resolves: #1250190 idrange is not added for sub domain + - trusts: format Kerberos principal properly when fetching trust topology +- Resolves: #1252334 User life cycle: missing ability to provision a stage user + from a preserved user + - Add user-stage command +- Resolves: #1252863 After applying RHBA-2015-1554 errata, IPA service fails to + start. + - spec file: Add Requires(post) on selinux-policy +- Resolves: #1254304 Changing vault encryption attributes + - Change internal rsa_(public|private)_key variable names + - Added support for changing vault encryption. +- Resolves: #1256715 Executing user-del --preserve twice removes the user + pernamently + - improve the usability of `ipa user-del --preserve` command + +* Wed Aug 19 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-5 +- Resolves: #1199530 [RFE] Provide user lifecycle managment capabilities + - user-undel: Fix error messages. +- Resolves: #1200694 [RFE] Support for multiple cert profiles + - Prohibit deletion of predefined profiles +- Resolves: #1232819 testing ipa-restore on fresh system install fails + - Backup/resore authentication control configuration +- Resolves: #1243331 pkispawn fails when migrating to 4.2 server from 3.0 + server + - Require Dogtag PKI >= 10.2.6 +- Resolves: #1245225 Asymmetric vault drops traceback when the key is not + proper + - Asymmetric vault: validate public key in client +- Resolves: #1248399 Missing DNSSEC related files in backup + - fix typo in BasePathNamespace member pointing to ods exporter config + - ipa-backup: archive DNSSEC zone file and kasp.db +- Resolves: #1248405 PassSync should be disabled after ipa-winsync-migrate is + finished + - winsync-migrate: Add warning about passsync + - winsync-migrate: Expand the man page +- Resolves: #1248524 User can't find any hosts using "ipa host-find $HOSTNAME" + - adjust search so that it works for non-admin users +- Resolves: #1250093 ipa certprofile-import accepts invalid config + - Require Dogtag PKI >= 10.2.6 +- Resolves: #1250107 IPA framework should not allow modifying trust on AD trust + agents + - trusts: Detect missing Samba instance +- Resolves: #1250111 User lifecycle - preserved users can be assigned + membership + - ULC: Prevent preserved users from being assigned membership +- Resolves: #1250145 Add permission for user to bypass caacl enforcement + - Add permission for bypassing CA ACL enforcement +- Resolves: #1250190 idrange is not added for sub domain + - idranges: raise an error when local IPA ID range is being modified + - trusts: harden trust-fetch-domains oddjobd-based script +- Resolves: #1250928 Man page for ipa-server-install is out of sync + - install: Fix server and replica install options +- Resolves: #1251225 IPA default CAACL does not allow cert-request for services + after upgrade + - Fix default CA ACL added during upgrade +- Resolves: #1251561 ipa vault-add Unknown option: ipavaultpublickey + - validate mutually exclusive options in vault-add +- Resolves: #1251579 ipa vault-add --user should set container owner equal to + user on first run + - Fixed vault container ownership. +- Resolves: #1252517 cert-request rejects request with correct + krb5PrincipalName SAN + - Fix KRB5PrincipalName / UPN SAN comparison +- Resolves: #1252555 ipa vault-find doesn't work for services + - vault: Add container information to vault command results + - Add flag to list all service and user vaults +- Resolves: #1252556 Missing CLI param and ACL for vault service operations + - Added CLI param and ACL for vault service operations. +- Resolves: #1252557 certprofile: improve profile format documentation + - certprofile-import: improve profile format documentation + - certprofile: add profile format explanation +- Resolves: #1253443 ipa vault-add creates vault with invalid type + - vault: validate vault type +- Resolves: #1253480 ipa vault-add-owner does not fail when adding an existing + owner + - baseldap: Allow overriding member param label in LDAPModMember + - vault: Fix param labels in output of vault owner commands +- Resolves: #1253511 ipa vault-find does not use criteria + - vault: Fix vault-find with criteria +- Resolves: #1254038 ipa-replica-install pk12util error returns exit status 10 + - install: Fix replica install with custom certificates +- Resolves: #1254262 ipa-dnskeysync-replica crash cannot contact kdc + - improve the handling of krb5-related errors in dnssec daemons +- Resolves: #1254412 when dirsrv is off ,upgrade from 7.1 to 7.2 fails with + starting CA and named-pkcs11.service + - Server Upgrade: Start DS before CA is started. +- Resolves: #1254637 Add ACI and permission for managing user userCertificate + attribute + - add permission: System: Manage User Certificates +- Resolves: #1254641 Remove CSR allowed-extensions restriction + - cert-request: remove allowed extensions check +- Resolves: #1254693 vault --service does not normalize service principal + - vault: normalize service principal in service vault operations +- Resolves: #1254785 ipa-client-install does not properly handle dual stacked + hosts + - client: Add support for multiple IP addresses during installation. + - Add dependency to SSSD 1.13.1 + - client: Add description of --ip-address and --all-ip-addresses to man page + +* Tue Aug 11 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-4 +- Resolves: #1072383 [RFE] Provide ability to map CAC identity certificates to + users in IdM + - store certificates issued for user entries as + - user-show: add --out option to save certificates to file +- Resolves: #1145748 [RFE] IPA running with One Way Trust + - Fix upgrade of sidgen and extdom plugins +- Resolves: #1195339 ipa-client-install changes the label on various files + which causes SELinux denials + - Use 'mv -Z' in specfile to restore SELinux context +- Resolves: #1198796 Text in UI should describe differing LDAP vs Krb behavior + for combinations of "User authentication types" + - webui: add LDAP vs Kerberos behavior description to user auth +- Resolves: #1199530 [RFE] Provide user lifecycle managment capabilities + - ULC: Fix stageused-add --from-delete command +- Resolves: #1200694 [RFE] Support for multiple cert profiles + - certprofile-import: do not require profileId in profile data + - Give more info on virtual command access denial + - Allow SAN extension for cert-request self-service + - Add profile for DNP3 / IEC 62351-8 certificates + - Work around python-nss bug on unrecognised OIDs +- Resolves: #1204501 [RFE] Add Password Vault (KRA) functionality + - Validate vault's file parameters + - Fixed missing KRA agent cert on replica. +- Resolves: #1225866 display browser config options that apply to the browser. + - webui: add Kerberos configuration instructions for Chrome + - Remove ico files from Makefile +- Resolves: #1246342 Unapply idview raises internal error + - idviews: Check for the Default Trust View only if applying the view +- Resolves: #1248102 [webui] regression - incorrect/no failed auth messages + - webui: fix regressions failed auth messages +- Resolves: #1248396 Internal error in DomainValidator.__search_in_dc + - dcerpc: Fix UnboundLocalError for ccache_name +- Resolves: #1249455 ipa trust-add failed CIFS server configuration does not + allow access to \\pipe\lsarpc + - Fix selector of protocol for LSA RPC binding string + - dcerpc: Simplify generation of LSA-RPC binding strings +- Resolves: #1250192 Error in ipa trust-fecth-domains + - Fix incorrect type comparison in trust-fetch-domains +- Resolves: #1251553 Winsync setup fails with unexpected error + - replication: Fix incorrect exception invocation +- Resolves: #1251854 ipa aci plugin is not parsing aci's correctly. + - ACI plugin: correctly parse bind rules enclosed in +- Resolves: #1252414 Trust agent install does not detect available replicas to + add to master + - adtrust-install: Correctly determine 4.2 FreeIPA servers + +* Fri Jul 24 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-3 +- Resolves: #1170770 [AD TRUST]IPA should detect inconsistent realm domains + that conflicts with AD DC + - trusts: Check for AD root domain among our trusted domains +- Resolves: #1195339 ipa-client-install changes the label on various files + which causes SELinux denials + - sysrestore: copy files instead of moving them to avoind SELinux issues +- Resolves: #1196656 [ipa-client][rhel71] enable debugging for spawned + commands / ntpd -qgc $tmpfile hangs + - enable debugging of ntpd during client installation +- Resolves: #1205264 Migration UI Does Not Work When Anonymous Bind is Disabled + - migration: Use api.env variables. +- Resolves: #1212719 abort-clean-ruv subcommand should allow + replica-certifyall: no + - Allow value 'no' for replica-certify-all attr in abort-clean-ruv subcommand +- Resolves: #1216935 ipa trust-add shows ipa: ERROR: an internal error has + occurred + - dcerpc: Expand explanation for WERR_ACCESS_DENIED + - dcerpc: Fix UnboundLocalError for ccache_name +- Resolves: #1222778 idoverride group-del can delete user and user-del can + delete group + - dcerpc: Add get_trusted_domain_object_type method + - idviews: Restrict anchor to name and name to anchor conversions + - idviews: Enforce objectclass check in idoverride*-del +- Resolves: #1234919 Be able to request certificates without certmonger service + running + - cermonger: Use private unix socket when DBus SystemBus is not available. + - ipa-client-install: Do not (re)start certmonger and DBus daemons. +- Resolves: #1240939 Please add dependency on bind-pkcs11 + - Create server-dns sub-package. + - ipaplatform: Add constants submodule + - DNS: check if DNS package is installed +- Resolves: #1242914 Bump minimal selinux-policy and add booleans to allow + calling out oddjobd-activated services + - selinux: enable httpd_run_ipa to allow communicating with oddjobd services +- Resolves: #1243261 non-admin users cannot search hbac rules + - fix hbac rule search for non-admin users + - fix selinuxusermap search for non-admin users +- Resolves: #1243652 Client has missing dependency on memcache + - do not import memcache on client +- Resolves: #1243835 [webui] user change password dialog does not work + - webui: fix user reset password dialog +- Resolves: #1244802 spec: selinux denial during kdcproxy user creation + - Fix selinux denial during kdcproxy user creation +- Resolves: #1246132 trust-fetch-domains: Do not chown keytab to the sssd user + - oddjob: avoid chown keytab to sssd if sssd user does not exist +- Resolves: #1246136 Adding a privilege to a permission avoids validation + - Validate adding privilege to a permission +- Resolves: #1246141 DNS Administrators cannot search in zones + - DNS: Consolidate DNS RR types in API and schema +- Resolves: #1246143 User plugin - user-find doesn't work properly with manager + option + - fix broken search for users by their manager + +* Wed Jul 15 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-2 +- Resolves: #1131907 [ipa-client-install] cannot write certificate file + '/etc/ipa/ca.crt.new': must be string or buffer, not None +- Resolves: #1195775 unsaved changes dialog internally inconsistent +- Resolves: #1199530 [RFE] Provide user lifecycle managment capabilities + - Stageusedr-activate: show username instead of DN +- Resolves: #1200694 [RFE] Support for multiple cert profiles + - Prevent to rename certprofile profile id +- Resolves: #1222047 IPA to AD Trust: IPA ERROR 4016: Remote Retrieve Error +- Resolves: #1224769 copy-schema-to-ca.py does not overwrites schema files + - copy-schema-to-ca: allow to overwrite schema files +- Resolves: #1241941 kdc component installation of IPA failed + - spec file: Update minimum required version of krb5 +- Resolves: #1242036 Replica install fails to update DNS records + - Fix DNS records installation for replicas +- Resolves: #1242884 Upgrade to 4.2.0 fails when enabling kdc proxy + - Start dirsrv for kdcproxy upgrade + +* Thu Jul 9 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-1 +- Resolves: #846033 [RFE] Documentation for JSONRPC IPA API +- Resolves: #989091 Ability to manage IdM/IPA directly from a standard LDAP + client +- Resolves: #1072383 [RFE] Provide ability to map CAC identity certificates to + users in IdM +- Resolves: #1115294 [RFE] Add support for DNSSEC +- Resolves: #1145748 [RFE] IPA running with One Way Trust +- Resolves: #1199520 [RFE] Introduce single upgrade tool - ipa-server-upgrade +- Resolves: #1199530 [RFE] Provide user lifecycle managment capabilities +- Resolves: #1200694 [RFE] Support for multiple cert profiles +- Resolves: #1200728 [RFE] Replicate PKI Profile information +- Resolves: #1200735 [RFE] Allow issuing certificates for user accounts +- Resolves: #1204054 SSSD database is not cleared between installs and + uninstalls of ipa +- Resolves: #1204205 [RFE] ID Views: Automated migration tool from Winsync to + Trusts +- Resolves: #1204501 [RFE] Add Password Vault (KRA) functionality +- Resolves: #1204504 [RFE] Add access control so hosts can create their own + services +- Resolves: #1206534 [RFE] Offer Kerberos over HTTP (kdcproxy) by default +- Resolves: #1206613 [RFE] Configure IPA to be a trust agent by default +- Resolves: #1209476 package ipa-client does not require package dbus-python +- Resolves: #1211589 [RFE] Add option to skip the verify_client_version +- Resolves: #1211608 [RFE] Generic support for unknown DNS RR types (RFC 3597) +- Resolves: #1215735 ipa-replica-prepare automatically adds a DNS zone +- Resolves: #1217010 OTP Manager field is not exposed in the UI +- Resolves: #1222475 krb5kdc : segfault at 0 ip 00007fa9f64d82bb sp + 00007fffd68b2340 error 6 in libc-2.17.so +- Related: #1204809 Rebase ipa to 4.2 + - Update to upstream 4.2.0 + - Move /etc/ipa/kdcproxy to the server subpackage + +* Tue Jun 23 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-0.2.alpha1 +- Resolves: #1228671 pkispawn fails in ipa-ca-install and ipa-kra-install +- Related: #1204809 Rebase ipa to 4.2 + - Fix minimum version of slapi-nis + - Require python-sss and python-sss-murmur (provided by sssd-1.13.0) + +* Mon Jun 22 2015 Jan Cholasta <jcholast@redhat.com> - 4.2.0-0.1.alpha1 +- Resolves: #805188 [RFE] "ipa migrate-ds" ldapsearches with scope=1 +- Resolves: #1019272 With 20000+ users, adding a user to a group intermittently + throws Internal server error +- Resolves: #1035494 Unable to add Kerberos principal via kadmin.local +- Resolves: #1045153 ipa-managed-entries --list -p <badpassword> still requires + DM password +- Resolves: #1125950 ipa-server-install --uinstall doesn't remove port 7389 + from ldap_port_t +- Resolves: #1132540 [RFE] Expose service delegation rules in UI and CLI +- Resolves: #1145584 ipaserver/install/cainstance.py creates pkiuser not + matching uidgid +- Resolves: #1176036 IDM client registration failure in a high load environment +- Resolves: #1183116 Remove Requires: subscription-manager +- Resolves: #1186054 permission-add does not prompt to enter --right option in + interactive mode +- Resolves: #1187524 Replication agreement with replica not disabled when + ipa-restore done without IPA installed +- Resolves: #1188195 Fax number not displayed for user-show when kinit'ed as + normal user. +- Resolves: #1189034 "an internal error has occurred" during ipa host-del + --updatedns +- Resolves: #1193554 ipa-client-automount: failing with error LDAP server + returned UNWILLING_TO_PERFORM. This likely means that minssf is enabled. +- Resolves: #1193759 IPA extdom plugin fails when encountering large groups +- Resolves: #1194312 [ipa-python] ipalib.errors.LDAPError: failed to decode + certificate: (SEC_ERROR_INVALID_ARGS) security library: invalid arguments. +- Resolves: #1194633 Default trust view can be deleted in lower case +- Resolves: #1196455 ipa-server-install step [8/27]: starting certificate + server instance - confusing CA staus message on TLS error +- Resolves: #1198263 Limit deadlocks between DS plugin DNA and slapi-nis +- Resolves: #1199527 [RFE] Use datepicker component for datetime fields +- Resolves: #1200867 [RFE] Make OTP validation window configurable +- Resolves: #1200883 [RFE] Switch apache to use mod_auth_gssapi +- Resolves: #1202998 CVE-2015-1827 ipa: memory corruption when using + get_user_grouplist() [rhel-7.2] +- Resolves: #1204637 slow group operations +- Resolves: #1204642 migrate-ds: slow add o users to default group +- Resolves: #1208461 IPA CA master server update stuck on checking getStatus + via https +- Resolves: #1211602 Hide ipa-server-install KDC master password option (-P) +- Resolves: #1211708 ipa-client-install gets stuck during NTP sync +- Resolves: #1215197 ipa-client-install ignores --ntp-server option during time + sync +- Resolves: #1215200 ipa-client-install configures IPA server as NTP source + even if IPA server has not ntpd configured +- Resolves: #1217009 OTP sync in UI does not work for TOTP tokens +- Related: #1204809 Rebase ipa to 4.2 + - Update to upstream 4.2.0.alpha1 + +* Thu Mar 19 2015 Jan Cholasta <jcholast@redhat.com> - 4.1.0-18.3 +- [ipa-python] ipalib.errors.LDAPError: failed to decode certificate: + (SEC_ERROR_INVALID_ARGS) security library: invalid arguments. (#1194312) + +* Wed Mar 18 2015 Alexander Bokovoy <abokovoy@redhat.com> - 4.1.0-18.2 +- IPA extdom plugin fails when encountering large groups (#1193759) +- CVE-2015-0283 ipa: slapi-nis: infinite loop in getgrnam_r() and getgrgid_r() + (#1202998) + +* Thu Mar 5 2015 Jan Cholasta <jcholast@redhat.com> - 4.1.0-18.1 +- "an internal error has occurred" during ipa host-del --updatedns (#1198431) +- Renamed patch 1013 to 0114, as it was merged upstream +- Fax number not displayed for user-show when kinit'ed as normal user. + (#1198430) +- Replication agreement with replica not disabled when ipa-restore done without + IPA installed (#1199060) +- Limit deadlocks between DS plugin DNA and slapi-nis (#1199128) + +* Thu Jan 29 2015 Martin Kosek <mkosek@redhat.com> - 4.1.0-18 +- Fix ipa-pwd-extop global configuration caching (#1187342) +- group-detach does not add correct objectclasses (#1187540) + +* Tue Jan 27 2015 Jan Cholasta <jcholast@redhat.com> - 4.1.0-17 +- Wrong directories created on full restore (#1186398) +- ipa-restore crashes if replica is unreachable (#1186396) +- idoverrideuser-add option --sshpubkey does not work (#1185410) + +* Wed Jan 21 2015 Jan Cholasta <jcholast@redhat.com> - 4.1.0-16 +- PassSync does not sync passwords due to missing ACIs (#1181093) +- ipa-replica-manage list does not list synced domain (#1181010) +- Do not assume certmonger is running in httpinstance (#1181767) +- ipa-replica-manage disconnect fails without password (#1183279) +- Put LDIF files to their original location in ipa-restore (#1175277) +- DUA profile not available anonymously (#1184149) +- IPA replica missing data after master upgraded (#1176995) + +* Wed Jan 14 2015 Jan Cholasta <jcholast@redhat.com> - 4.1.0-15 +- Re-add accidentally removed patches for #1170695 and #1164896 + +* Wed Jan 14 2015 Jan Cholasta <jcholast@redhat.com> - 4.1.0-14 +- IPA Replicate creation fails with error "Update failed! Status: [10 Total + update abortedLDAP error: Referral]" (#1166265) +- running ipa-server-install --setup-dns results in a crash (#1072502) +- DNS zones are not migrated into forward zones if 4.0+ replica is added + (#1175384) +- gid is overridden by uid in default trust view (#1168904) +- When migrating warn user if compat is enabled (#1177133) +- Clean up debug log for trust-add (#1168376) +- No error message thrown on restore(full kind) on replica from full backup + taken on master (#1175287) +- ipa-restore proceed even IPA not configured (#1175326) +- Data replication not working as expected after data restore from full backup + (#1175277) +- IPA externally signed CA cert expiration warning missing from log (#1178128) +- ipa-upgradeconfig fails in CA-less installs (#1181767) +- IPA certs fail to autorenew simultaneouly (#1173207) +- More validation required on ipa-restore's options (#1176034) + +* Wed Dec 17 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-13 +- Expand the token auth/sync windows (#919228) +- Access is not rejected for disabled domain (#1172598) +- krb5kdc crash in ldap_pvt_search (#1170695) +- RHEL7.1 IPA server httpd avc denials after upgrade (#1164896) + +* Wed Dec 10 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-12 +- RHEL7.1 ipa-cacert-manage renewed certificate from MS ADCS not compatible + (#1169591) +- CLI doesn't show SSHFP records with SHA256 added via nsupdate (regression) + (#1172578) + +* Tue Dec 9 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-11 +- Throw zonemgr error message before installation proceeds (#1163849) +- Winsync: Setup is broken due to incorrect import of certificate (#1169867) +- Enable last token deletion when password auth type is configured (#919228) +- ipa-otp-lasttoken loads all user's tokens on every mod/del (#1166641) +- add --hosts and --hostgroup options to allow/retrieve keytab methods + (#1007367) +- Extend host-show to add the view attribute in set of default attributes + (#1168916) +- Prefer TCP connections to UDP in krb5 clients (#919228) +- [WebUI] Not able to unprovisioning service in IPA 4.1 (#1168214) +- webui: increase notification duration (#1171089) +- RHEL7.1 ipa automatic CA cert renewal stuck in submitting state (#1166931) +- RHEL7.1 ipa-cacert-manage cannot change external to self-signed ca cert + (#1170003) +- Improve validation of --instance and --backend options in ipa-restore + (#951581) +- RHEL7.1 ipa replica unable to replicate to rhel6 master (#1167964) +- Disable TLS 1.2 in nss.conf until mod_nss supports it (#1156466) + +* Wed Nov 26 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-10 +- Use NSS protocol range API to set available TLS protocols (#1156466) + +* Tue Nov 25 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-9 +- schema update on RHEL-6.6 using latest copy-schema-to-ca.py from RHEL-7.1 + build fails (#1167196) +- Investigate & fix Coverity defects in IPA DS/KDC plugins (#1160756) +- "ipa trust-add ... " cmd says : (Trust status: Established and verified) + while in the logs we see "WERR_ACCESS_DENIED" during verification step. + (#1144121) +- POODLE: force using safe ciphers (non-SSLv3) in IPA client and server + (#1156466) +- Add support/hooks for a one-time password system like SecureID in IPA + (#919228) +- Tracebacks with latest build for --zonemgr cli option (#1167270) +- ID Views: Support migration from the sync solution to the trust solution + (#891984) + +* Mon Nov 24 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-8 +- Improve otptoken help messages (#919228) +- Ensure users exist when assigning tokens to them (#919228) +- Enable QR code display by default in otptoken-add (#919228) +- Show warning instead of error if CA did not start (#1158410) +- CVE-2014-7850 freeipa: XSS flaw can be used to escalate privileges (#1165774) +- Traceback when adding zone with long name (#1164859) +- Backup & Restore mechanism (#951581) +- ignoring user attributes in migrate-ds does not work if uppercase characters + are returned by ldap (#1159816) +- Allow ipa-getkeytab to optionally fetch existing keys (#1007367) +- Failure when installing on dual stacked system with external ca (#1128380) +- ipa-server should keep backup of CS.cfg (#1059135) +- Tracebacks with latest build for --zonemgr cli option (#1167270) +- webui: use domain name instead of domain SID in idrange adder dialog + (#891984) +- webui: normalize idview tab labels (#891984) + +* Wed Nov 19 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-7 +- ipa-csreplica-manage connect fails (#1157735) +- error message which is not understandable when IDNA2003 characters are + present in --zonemgr (#1163849) +- Fix warning message should not contain CLI commands (#1114013) +- Renewing the CA signing certificate does not extend its validity period end + (#1163498) +- RHEL7.1 ipa-server-install --uninstall Could not set SELinux booleans for + httpd (#1159330) + +* Thu Nov 13 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-6 +- Fix: DNS installer adds invalid zonemgr email (#1056202) +- ipaplatform: Use the dirsrv service, not target (#951581) +- Fix: DNS policy upgrade raises asertion error (#1161128) +- Fix upgrade referint plugin (#1161128) +- Upgrade: fix trusts objectclass violationi (#1161128) +- group-add doesn't accept gid parameter (#1149124) + +* Tue Nov 11 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-5 +- Update slapi-nis dependency to pull 0.54-2 (#891984) +- ipa-restore: Don't crash if AD trust is not installed (#951581) +- Prohibit setting --rid-base for ranges of ipa-trust-ad-posix type (#1138791) +- Trust setting not restored for CA cert with ipa-restore command (#1159011) +- ipa-server-install fails when restarting named (#1162340) + +* Thu Nov 06 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-4 +- Update Requires on pki-ca to 10.1.2-4 (#1129558) +- build: increase java stack size for all arches +- Add ipaSshPubkey and gidNumber to the ACI to read ID user overrides (#891984) +- Fix dns zonemgr validation regression (#1056202) +- Handle profile changes in dogtag-ipa-ca-renew-agent (#886645) +- Do not wait for new CA certificate to appear in LDAP in ipa-certupdate + (#886645) +- Add bind-dyndb-ldap working dir to IPA specfile +- Fail if certmonger can't see new CA certificate in LDAP in ipa-cacert-manage + (#886645) +- Investigate & fix Coverity defects in IPA DS/KDC plugins (#1160756) +- Deadlock in schema compat plugin (#1161131) +- ipactl stop should stop dirsrv last (#1161129) +- Upgrade 3.3.5 to 4.1 failed (#1161128) +- CVE-2014-7828 freeipa: password not required when OTP in use (#1160877) + +* Wed Oct 22 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-3 +- Do not check if port 8443 is available in step 2 of external CA install + (#1129481) + +* Wed Oct 22 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-2 +- Update Requires on selinux-policy to 3.13.1-4 + +* Tue Oct 21 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-1 +- Update to upstream 4.1.0 (#1109726) + +* Mon Sep 29 2014 Jan Cholasta <jcholast@redhat.com> - 4.1.0-0.1.alpha1 +- Update to upstream 4.1.0 Alpha 1 (#1109726) + +* Fri Sep 26 2014 Petr Vobornik <pvoborni@redhat.com> - 4.0.3-3 +- Add redhat-access-plugin-ipa dependency + +* Thu Sep 25 2014 Jan Cholasta <jcholast@redhat.com> - 4.0.3-2 +- Re-enable otptoken_yubikey plugin + +* Mon Sep 15 2014 Jan Cholasta <jcholast@redhat.com> - 4.0.3-1 +- Update to upstream 4.0.3 (#1109726) + +* Thu Aug 14 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-29 +- Server installation fails using external signed certificates with + "IndexError: list index out of range" (#1111320) +- Add rhino to BuildRequires to fix Web UI build error + +* Tue Apr 1 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-28 +- ipa-client-automount fails with incompatibility error when installed against + older IPA server (#1083108) + +* Wed Mar 26 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-27 +- Proxy PKI URI /ca/ee/ca/profileSubmit to enable replication with future + PKI versions (#1080865) + +* Tue Mar 25 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-26 +- When IdM server trusts multiple AD forests, IPA client returns invalid group + membership info (#1079498) + +* Thu Mar 13 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-25 +- Deletion of active subdomain range should not be allowed (#1075615) + +* Thu Mar 13 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-24 +- PKI database is ugraded during replica installation (#1075118) + +* Wed Mar 12 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-23 +- Unable to add trust successfully with --trust-secret (#1075704) + +* Wed Mar 12 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-22 +- ipa-replica-install never checks for 7389 port (#1075165) +- Non-terminated string may be passed to LDAP search (#1075091) +- ipa-sam may fail to translate group SID into GID (#1073829) +- Excessive LDAP calls by ipa-sam during Samba FS operations (#1075132) + +* Thu Mar 6 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-21 +- Do not fetch a principal two times, remove potential memory leak (#1070924) + +* Wed Mar 5 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-20 +- trustdomain-find with pkey-only fails (#1068611) +- Invalid credential cache in trust-add (#1069182) +- ipa-replica-install prints unexpected error (#1069722) +- Too big font in input fields in details facet in Firefox (#1069720) +- trust-add for POSIX AD does not fetch trustdomains (#1070925) +- Misleading trust-add error message in some cases (#1070926) +- Access is not rejected for disabled domain (#1070924) + +* Wed Feb 26 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-19 +- Remove ipa-backup and ipa-restore functionality from RHEL (#1003933) + +* Wed Feb 12 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-18 +- Display server name in ipa command's verbose mode (#1061703) +- Remove sourcehostcategory from default HBAC rule (#1061187) +- dnszone-add cannot add classless PTR zones (#1058688) +- Move ipa-otpd socket directory to /var/run/krb5kdc (#1063850) + +* Tue Feb 4 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-17 +- Lockout plugin crashed during ipa-server-install (#912725) + +* Fri Jan 31 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-16 +- Fallback to global policy in ipa lockout plugin (#912725) +- Migration does not add users to default group (#903232) + +* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 3.3.3-15 +- Mass rebuild 2014-01-24 + +* Thu Jan 23 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-14 +- Fix NetBIOS name generation in CLDAP plugin (#1030517) + +* Mon Jan 20 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-13 +- Do not add krbPwdPolicyReference for new accounts, hardcode it (#1045218) +- Increase default timeout for IPA services (#1033273) +- Error while running trustdomain-find (#1054376) +- group-show lists SID instead of name for external groups (#1054391) +- Fix IPA server NetBIOS name in samba configuration (#1030517) +- dnsrecord-mod produces missing API version warning (#1054869) +- Hide trust-resolve command as internal (#1052860) +- Add Trust domain Web UI (#1054870) +- ipasam cannot delete multiple child trusted domains (#1056120) + +* Wed Jan 15 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-12 +- Missing objectclasses when empty password passed to host-add (#1052979) +- sudoOrder missing in sudoers (#1052983) +- Missing examples in sudorule help (#1049464) +- Client automount does not uninstall when fstore is empty (#910899) +- Error not clear for invalid realm given to trust-fetch-domains (#1052981) +- trust-fetch-domains does not add idrange for subdomains found (#1049926) +- Add option to show if an AD subdomain is enabled/disabled (#1052973) +- ipa-adtrust-install still failed with long NetBIOS names (#1030517) +- Error not clear for invalid relam given to trustdomain-find (#1049455) +- renewed client cert not recognized during IPA CA renewal (#1033273) + +* Fri Jan 10 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-11 +- hbactest does not work for external users (#848531) + +* Wed Jan 08 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-10 +- PKI service restart after CA renewal failed (#1040018) + +* Mon Jan 06 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-9 +- Move ipa-tests package to separate srpm (#1032668) + +* Fri Jan 3 2014 Martin Kosek <mkosek@redhat.com> - 3.3.3-8 +- Fix status trust-add command status message (#910453) +- NetBIOS was not trimmed at 15 characters (#1030517) +- Harden CA subsystem certificate renewal on CA clones (#1040018) + +* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 3.3.3-7 +- Mass rebuild 2013-12-27 + +* Mon Dec 2 2013 Martin Kosek <mkosek@redhat.com> - 3.3.3-6 +- Remove "Listen 443 http" hack from deployed nss.conf (#1029046) +- Re-adding existing trust fails (#1033216) +- IPA uninstall exits with a samba error (#1033075) +- Added RELRO hardening on /usr/libexec/ipa-otpd (#1026260) +- Fixed ownership of /usr/share/ipa/ui/js (#1026260) +- ipa-tests: support external names for hosts (#1032668) +- ipa-client-install fail due fail to obtain host TGT (#1029354) + +* Fri Nov 22 2013 Martin Kosek <mkosek@redhat.com> - 3.3.3-5 +- Trust add tries to add same value of --base-id for sub domain, + causing an error (#1033068) +- Improved error reporting for adding trust case (#1029856) + +* Wed Nov 13 2013 Martin Kosek <mkosek@redhat.com> - 3.3.3-4 +- Winsync agreement cannot be created (#1023085) + +* Wed Nov 6 2013 Martin Kosek <mkosek@redhat.com> - 3.3.3-3 +- Installer did not detect different server and IPA domain (#1026845) +- Allow kernel keyring CCACHE when supported (#1026861) + +* Tue Nov 5 2013 Martin Kosek <mkosek@redhat.com> - 3.3.3-2 +- ipa-server-install crashes when AD subpackage is not installed (#1026434) + +* Fri Nov 1 2013 Martin Kosek <mkosek@redhat.com> - 3.3.3-1 +- Update to upstream 3.3.3 (#991064) + +* Tue Oct 29 2013 Martin Kosek <mkosek@redhat.com> - 3.3.2-5 +- Temporarily move ipa-backup and ipa-restore functionality + back to make them available in public Beta (#1003933) + +* Tue Oct 29 2013 Martin Kosek <mkosek@redhat.com> - 3.3.2-4 +- Server install failure during client enrollment shouldn't + roll back (#1023086) +- nsds5ReplicaStripAttrs are not set on agreements (#1023085) +- ipa-server conflicts with mod_ssl (#1018172) + +* Wed Oct 16 2013 Martin Kosek <mkosek@redhat.com> - 3.3.2-3 +- Reinstalling ipa server hangs when configuring certificate + server (#1018804) + +* Fri Oct 11 2013 Martin Kosek <mkosek@redhat.com> - 3.3.2-2 +- Deprecate --serial-autoincrement option (#1016645) +- CA installation always failed on replica (#1005446) +- Re-initializing a winsync connection exited with error (#994980) + +* Fri Oct 4 2013 Martin Kosek <mkosek@redhat.com> - 3.3.2-1 +- Update to upstream 3.3.2 (#991064) +- Add delegation info to MS-PAC (#915799) +- Warn about incompatibility with AD when IPA realm and domain + differs (#1009044) +- Allow PKCS#12 files with empty password in install tools (#1002639) +- Privilege "SELinux User Map Administrators" did not list + permissions (#997085) +- SSH key upload broken when client joins an older server (#1009024) + +* Mon Sep 23 2013 Martin Kosek <mkosek@redhat.com> - 3.3.1-5 +- Remove dependency on python-paramiko (#1002884) +- Broken redirection when deleting last entry of DNS resource + record (#1006360) + +* Tue Sep 10 2013 Martin Kosek <mkosek@redhat.com> - 3.3.1-4 +- Remove ipa-backup and ipa-restore functionality from RHEL (#1003933) + +* Mon Sep 9 2013 Martin Kosek <mkosek@redhat.com> - 3.3.1-3 +- Replica installation fails for RHEL 6.4 master (#1004680) +- Server uninstallation crashes if DS is not available (#998069) + +* Thu Sep 5 2013 Martin Kosek <mkosek@redhat.com> - 3.3.1-2 +- Unable to remove replica by ipa-replica-manage (#1001662) +- Before uninstalling a server, warn about active replicas (#998069) + +* Thu Aug 29 2013 Rob Crittenden <rcritten@redhat.com> - 3.3.1-1 +- Update to upstream 3.3.1 (#991064) +- Update minimum version of bind-dyndb-ldap to 3.5 + +* Tue Aug 20 2013 Rob Crittenden <rcritten@redhat.com> - 3.3.0-7 +- Fix replica installation failing on certificate subject (#983075) + +* Tue Aug 13 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-6 +- Allow ipa-tests to work with older version (1.7.7) of python-paramiko + +* Tue Aug 13 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-5 +- Prevent multilib failures in *.pyo and *.pyc files + +* Mon Aug 12 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-4 +- ipa-server-install fails if --subject parameter is other than default + realm (#983075) +- do not allow configuring bind-dyndb-ldap without persistent search (#967876) + +* Mon Aug 12 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-3 +- diffstat was missing as a build dependency causing multilib problems + +* Thu Aug 8 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-2 +- Remove ipa-server-selinux obsoletes as upgrades from version prior to + 3.3.0 are not allowed +- Wrap server-trust-ad subpackage description better +- Add (noreplace) flag for %%{_sysconfdir}/tmpfiles.d/ipa.conf +- Change permissions on default_encoding_utf8.so to fix ipa-python Provides + +* Thu Aug 8 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-1 +- Update to upstream 3.3.0 (#991064) + +* Thu Aug 8 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-0.2.beta2 +- Require slapi-nis 0.47.7 delivering a core feature of 3.3.0 release + +* Wed Aug 7 2013 Martin Kosek <mkosek@redhat.com> - 3.3.0-0.1.beta2 +- Update to upstream 3.3.0 Beta 2 (#991064) + +* Thu Jul 18 2013 Martin Kosek <mkosek@redhat.com> - 3.2.2-1 +- Update to upstream 3.2.2 +- Drop ipa-server-selinux subpackage +- Drop redundant directory /var/cache/ipa/sessions +- Do not create /var/lib/ipa/pki-ca/publish, retain reference as ghost +- Run ipa-upgradeconfig and server restart in posttrans to avoid inconsistency + issues when there are still old parts of software (like entitlements plugin) + +* Fri Jun 14 2013 Martin Kosek <mkosek@redhat.com> - 3.2.1-1 +- Update to upstream 3.2.1 +- Drop dogtag-pki-server-theme requires, it won't be build for RHEL-7.0 + +* Tue May 14 2013 Rob Crittenden <rcritten@redhat.com> - 3.2.0-2 +- Add OTP patches +- Add patch to set KRB5CCNAME for 389-ds-base + +* Fri May 10 2013 Rob Crittenden <rcritten@redhat.com> - 3.2.0-1 +- Update to upstream 3.2.0 GA +- ipa-client-install fails if /etc/ipa does not exist (#961483) +- Certificate status is not visible in Service and Host page (#956718) +- ipa-client-install removes needed options from ldap.conf (#953991) +- Handle socket.gethostbyaddr() exceptions when verifying hostnames (#953957) +- Add triggerin scriptlet to support OpenSSH 6.2 (#953617) +- Require nss 3.14.3-12.0 to address certutil certificate import + errors (#953485) +- Require pki-ca 10.0.2-3 to pull in fix for sslget and mixed IPv4/6 + environments. (#953464) +- ipa-client-install removes 'sss' from /etc/nsswitch.conf (#953453) +- ipa-server-install --uninstall doesn't stop dirsrv instances (#953432) +- Add requires for openldap-2.4.35-4 to pickup fixed SASL_NOCANON behavior for + socket based connections (#960222) +- Require libsss_nss_idmap-python +- Add Conflicts on nss-pam-ldapd < 0.8.4. The mapping from uniqueMember to + member is now done automatically and having it in the config file raises + an error. +- Add backup and restore tools, directory. +- require at least systemd 38 which provides the journal (we no longer + need to require syslog.target) +- Update Requires on policycoreutils to 2.1.14-37 +- Update Requires on selinux-policy to 3.12.1-42 +- Update Requires on 389-ds-base to 1.3.1.0 +- Remove a Requires for java-atk-wrapper + +* Tue Apr 23 2013 Rob Crittenden <rcritten@redhat.com> - 3.2.0-0.4.beta1 +- Remove release from krb5-server in strict sub-package to allow for rebuilds. + +* Mon Apr 22 2013 Rob Crittenden <rcritten@redhat.com> - 3.2.0-0.3.beta1 +- Add a Requires for java-atk-wrapper until we can determine which package + should be pulling it in, dogtag or tomcat. + +* Tue Apr 16 2013 Rob Crittenden <rcritten@redhat.com> - 3.2.0-0.2.beta1 +- Update to upstream 3.2.0 Beta 1 + +* Tue Apr 2 2013 Martin Kosek <mkosek@redhat.com> - 3.2.0-0.1.pre1 +- Update to upstream 3.2.0 Prerelease 1 +- Use upstream reference spec file as a base for Fedora spec file + +* Sat Mar 30 2013 Kevin Fenzi <kevin@scrye.com> 3.1.2-4 +- Rebuild for broken deps +- Fix 389-ds-base strict dep to be 1.3.0.5 and krb5-server 1.11.1 + +* Sat Feb 23 2013 Kevin Fenzi <kevin@scrye.com> - 3.1.2-3 +- Rebuild for broken deps in rawhide +- Fix 389-ds-base strict dep to be 1.3.0.3 + +* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jan 23 2013 Rob Crittenden <rcritten@redhat.com> - 3.1.2-1 +- Update to upstream 3.1.2 +- CVE-2012-4546: Incorrect CRLs publishing +- CVE-2012-5484: MITM Attack during Join process +- CVE-2013-0199: Cross-Realm Trust key leak +- Updated strict dependencies to 389-ds-base = 1.3.0.2 and + pki-ca = 10.0.1 + +* Thu Dec 20 2012 Martin Kosek <mkosek@redhat.com> - 3.1.0-2 +- Remove redundat Requires versions that are already in Fedora 17 +- Replace python-crypto Requires with m2crypto +- Add missing Requires(post) for client and server-trust-ad subpackages +- Restart httpd service when server-trust-ad subpackage is installed +- Bump selinux-policy Requires to pick up PKI/LDAP port labeling fixes + +* Mon Dec 10 2012 Rob Crittenden <rcritten@redhat.com> - 3.1.0-1 +- Updated to upstream 3.1.0 GA +- Set minimum for sssd to 1.9.2 +- Set minimum for pki-ca to 10.0.0-1 +- Set minimum for 389-ds-base to 1.3.0 +- Set minimum for selinux-policy to 3.11.1-60 +- Remove unneeded dogtag package requires + +* Tue Oct 23 2012 Martin Kosek <mkosek@redhat.com> - 3.0.0-3 +- Update Requires on krb5-server to 1.11 + +* Fri Oct 12 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-2 +- Configure CA replication to use TLS instead of SSL + +* Fri Oct 12 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-1 +- Updated to upstream 3.0.0 GA +- Set minimum for samba to 4.0.0-153. +- Make sure server-trust-ad subpackage alternates winbind_krb5_locator.so + plugin to /dev/null since they cannot be used when trusts are configured +- Restrict krb5-server to 1.10. +- Update BR for 389-ds-base to 1.3.0 +- Add directory /var/lib/ipa/pki-ca/publish for CRL published by pki-ca +- Add Requires on zip for generating FF browser extension + +* Fri Oct 5 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-0.10 +- Updated to upstream 3.0.0 rc 2 +- Include new FF configuration extension +- Set minimum Requires of selinux-policy to 3.11.1-33 +- Set minimum Requires dogtag to 10.0.0-0.43.b1 +- Add new optional strict sub-package to allow users to limit other + package upgrades. + +* Tue Oct 2 2012 Martin Kosek <mkosek@redhat.com> - 3.0.0-0.9 +- Require samba packages instead of obsoleted samba4 packages + +* Fri Sep 21 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-0.8 +- Updated to upstream 3.0.0 rc 1 +- Update BR for 389-ds-base to 1.2.11.14 +- Update BR for krb5 to 1.10 +- Update BR for samba4-devel to 4.0.0-139 (rc1) +- Add BR for python-polib +- Update BR and Requires on sssd to 1.9.0 +- Update Requires on policycoreutils to 2.1.12-5 +- Update Requires on 389-ds-base to 1.2.11.14 +- Update Requires on selinux-policy to 3.11.1-21 +- Update Requires on dogtag to 10.0.0-0.33.a1 +- Update Requires on certmonger to 0.60 +- Update Requires on tomcat to 7.0.29 +- Update minimum version of bind to 9.9.1-10.P3 +- Update minimum version of bind-dyndb-ldap to 1.1.0-0.16.rc1 +- Remove Requires on authconfig from python sub-package + +* Wed Sep 5 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-0.7 +- Rebuild against samba4 beta8 + +* Fri Aug 31 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-0.6 +- Rebuild against samba4 beta7 + +* Wed Aug 22 2012 Alexander Bokovoy <abokovoy@redhat.com> - 3.0.0-0.5 +- Adopt to samba4 beta6 (libsecurity -> libsamba-security) +- Add dependency to samba4-winbind + +* Fri Aug 17 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-0.4 +- Updated to upstream 3.0.0 beta 2 + +* Mon Aug 6 2012 Martin Kosek <mkosek@redhat.com> - 3.0.0-0.3 +- Updated to current upstream state of 3.0.0 beta 2 development + +* Mon Jul 23 2012 Alexander Bokovoy <abokovy@redhat.com> - 3.0.0-0.2 +- Rebuild against samba4 beta4 + +* Mon Jul 2 2012 Rob Crittenden <rcritten@redhat.com> - 3.0.0-0.1 +- Updated to upstream 3.0.0 beta 1 + +* Thu May 3 2012 Rob Crittenden <rcritten@redhat.com> - 2.2.0-1 +- Updated to upstream 2.2.0 GA +- Update minimum n-v-r of certmonger to 0.53 +- Update minimum n-v-r of slapi-nis to 0.40 +- Add Requires in client to oddjob-mkhomedir and python-krbV +- Update minimum selinux-policy to 3.10.0-110 + +* Mon Mar 19 2012 Rob Crittenden <rcritten@redhat.com> - 2.1.90-0.2 +- Update to upstream 2.2.0 beta 1 (2.1.90.rc1) +- Set minimum n-v-r for pki-ca and pki-silent to 9.0.18. +- Add Conflicts on mod_ssl +- Update minimum n-v-r of 389-ds-base to 1.2.10.4 +- Update minimum n-v-r of sssd to 1.8.0 +- Update minimum n-v-r of slapi-nis to 0.38 +- Update minimum n-v-r of pki-* to 9.0.18 +- Update conflicts on bind-dyndb-ldap to < 1.1.0-0.9.b1 +- Update conflicts on bind to < 9.9.0-1 +- Drop requires on krb5-server-ldap +- Add patch to remove escaping arguments to pkisilent + +* Mon Feb 06 2012 Rob Crittenden <rcritten@redhat.com> - 2.1.90-0.1 +- Update to upstream 2.2.0 alpha 1 (2.1.90.pre1) + +* Wed Feb 01 2012 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.4-5 +- Force to use 389-ds 1.2.10-0.8.a7 or above +- Improve upgrade script to handle systemd 389-ds change +- Fix freeipa to work with python-ldap 2.4.6 + +* Wed Jan 11 2012 Martin Kosek <mkosek@redhat.com> - 2.1.4-4 +- Fix ipa-replica-install crashes +- Fix ipa-server-install and ipa-dns-install logging +- Set minimum version of pki-ca to 9.0.17 to fix sslget problem + caused by FEDORA-2011-17400 update (#771357) + +* Wed Dec 21 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.4-3 +- Allow Web-based migration to work with tightened SE Linux policy (#769440) +- Rebuild slapi plugins against re-enterant version of libldap + +* Sun Dec 11 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.4-2 +- Allow longer dirsrv startup with systemd: + - IPAdmin class will wait until dirsrv instance is available up to 10 seconds + - Helps with restarts during upgrade for ipa-ldap-updater +- Fix pylint warnings from F16 and Rawhide + +* Tue Dec 6 2011 Rob Crittenden <rcritten@redhat.com> - 2.1.4-1 +- Update to upstream 2.1.4 (CVE-2011-3636) + +* Mon Dec 5 2011 Rob Crittenden <rcritten@redhat.com> - 2.1.3-8 +- Update SELinux policy to allow ipa_kpasswd to connect ldap and + read /dev/urandom. (#759679) + +* Wed Nov 30 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.3-7 +- Fix wrong path in packaging freeipa-systemd-upgrade + +* Wed Nov 30 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.3-6 +- Introduce upgrade script to recover existing configuration after systemd migration + as user has no means to recover FreeIPA from systemd migration +- Upgrade script: + - recovers symlinks in Dogtag instance install + - recovers systemd configuration for FreeIPA's directory server instances + - recovers freeipa.service + - migrates directory server and KDC configs to use proper keytabs for systemd services + +* Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.3-5 +- Rebuilt for glibc bug#747377 + +* Wed Oct 19 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.3-4 +- clean up spec +- Depend on sssd >= 1.6.2 for better user experience + +* Tue Oct 18 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.3-3 +- Fix Fedora package changelog after merging systemd changes + +* Tue Oct 18 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.3-2 +- Fix postin scriplet for F-15/F-16 + +* Tue Oct 18 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.3-1 +- 2.1.3 + +* Mon Oct 17 2011 Alexander Bokovoy <abokovoy@redhat.com> - 2.1.2-1 +- Default to systemd for Fedora 16 and onwards + +* Tue Aug 16 2011 Rob Crittenden <rcritten@redhat.com> - 2.1.0-1 +- Update to upstream 2.1.0 + +* Fri May 6 2011 Simo Sorce <ssorce@redhat.com> - 2.0.1-2 +- Fix bug #702633 + +* Mon May 2 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.1-1 +- Update minimum selinux-policy to 3.9.16-18 +- Update minimum pki-ca and pki-selinux to 9.0.7 +- Update minimum 389-ds-base to 1.2.8.0-1 +- Update to upstream 2.0.1 + +* Thu Mar 24 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.0-1 +- Update to upstream GA release +- Automatically apply updates when the package is upgraded + +* Fri Feb 25 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.0-0.4.rc2 +- Update to upstream freeipa-2.0.0.rc2 +- Set minimum version of python-nss to 0.11 to make sure IPv6 support is in +- Set minimum version of sssd to 1.5.1 +- Patch to include SuiteSpotGroup when setting up 389-ds instances +- Move a lot of BuildRequires so this will build with ONLY_CLIENT enabled + +* Tue Feb 15 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.0-0.3.rc1 +- Set the N-V-R so rc1 is an update to beta2. + +* Mon Feb 14 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.0-0.1.rc1 +- Set minimum version of sssd to 1.5.1 +- Update to upstream freeipa-2.0.0.rc1 +- Move server-only binaries from admintools subpackage to server + +* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.0-0.2.beta2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Feb 3 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.0-0.1.beta2 +- Set min version of 389-ds-base to 1.2.8 +- Set min version of mod_nss 1.0.8-10 +- Set min version of selinux-policy to 3.9.7-27 +- Add dogtag themes to Requires +- Update to upstream freeipa-2.0.0.pre2 + +* Thu Jan 27 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.0-0.2.beta.git80e87e7 +- Remove unnecessary moving of v1 CA serial number file in post script +- Add Obsoletes for server-selinxu subpackage +- Using git snapshot 442d6ad30ce1156914e6245aa7502499e50ec0da + +* Wed Jan 26 2011 Rob Crittenden <rcritten@redhat.com> - 2.0.0-0.1.beta.git80e87e7 +- Prepare spec file for release +- Using git snapshot 80e87e75bd6ab56e3e20c49ece55bd4d52f1a503 + +* Tue Jan 25 2011 Rob Crittenden <rcritten@redhat.com> - 1.99-41 +- Re-arrange doc and defattr to clean up rpmlint warnings +- Remove conditionals on older releases +- Move some man pages into admintools subpackage +- Remove some explicit Requires in client that aren't needed +- Consistent use of buildroot vs RPM_BUILD_ROOT + +* Wed Jan 19 2011 Adam Young <ayoung@redhat.com> - 1.99-40 +- Moved directory install/static to install/ui + +* Thu Jan 13 2011 Simo Sorce <ssorce@redhat.com> - 1.99-39 +- Remove dependency on nss_ldap/nss-pam-ldapd +- The official client is sssd and that's what we use by default. + +* Thu Jan 13 2011 Simo Sorce <ssorce@redhat.com> - 1.99-38 +- Remove radius subpackages + +* Thu Jan 13 2011 Rob Crittenden <rcritten@redhat.com> - 1.99-37 +- Set minimum pki-ca and pki-silent versions to 9.0.0 + +* Wed Jan 12 2011 Rob Crittenden <rcritten@redhat.com> - 1.99-36 +- Drop BuildRequires on mozldap-devel + +* Mon Dec 13 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-35 +- Add Requires on krb5-pkinit-openssl + +* Fri Dec 10 2010 Jr Aquino <jr.aquino@citrix.com> - 1.99-34 +- Add ipa-host-net-manage script + +* Tue Dec 7 2010 Simo Sorce <ssorce@redhat.com> - 1.99-33 +- Add ipa init script + +* Fri Nov 19 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-32 +- Set minimum level of 389-ds-base to 1.2.7 for enhanced memberof plugin + +* Wed Nov 3 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-31 +- remove ipa-fix-CVE-2008-3274 + +* Wed Oct 6 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-30 +- Remove duplicate %%files entries on share/ipa/static +- Add python default encoding shared library + +* Mon Sep 20 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-29 +- Drop requires on python-configobj (not used any more) +- Drop ipa-ldap-updater message, upgrades are done differently now + +* Wed Sep 8 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-28 +- Drop conflicts on mod_nss +- Require nss-pam-ldapd on F-14 or higher instead of nss_ldap (#606847) +- Drop a slew of conditionals on older Fedora releases (< 12) +- Add a few conditionals against RHEL 6 +- Add Requires of nss-tools on ipa-client + +* Fri Aug 13 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-27 +- Set minimum version of certmonger to 0.26 (to pck up #621670) +- Set minimum version of pki-silent to 1.3.4 (adds -key_algorithm) +- Set minimum version of pki-ca to 1.3.6 +- Set minimum version of sssd to 1.2.1 + +* Tue Aug 10 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-26 +- Add BuildRequires for authconfig + +* Mon Jul 19 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-25 +- Bump up minimum version of python-nss to pick up nss_is_initialize() API + +* Thu Jun 24 2010 Adam Young <ayoung@redhat.com> - 1.99-24 +- Removed python-asset based webui + +* Thu Jun 24 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-23 +- Change Requires from fedora-ds-base to 389-ds-base +- Set minimum level of 389-ds-base to 1.2.6 for the replication + version plugin. + +* Tue Jun 1 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-22 +- Drop Requires of python-krbV on ipa-client + +* Mon May 17 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-21 +- Load ipa_dogtag.pp in post install + +* Mon Apr 26 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-20 +- Set minimum level of sssd to 1.1.1 to pull in required hbac fixes. + +* Thu Mar 4 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-19 +- No need to create /var/log/ipa_error.log since we aren't using + TurboGears any more. + +* Mon Mar 1 2010 Jason Gerard DeRose <jderose@redhat.com> - 1.99-18 +- Fixed share/ipa/wsgi.py so .pyc, .pyo files are included + +* Wed Feb 24 2010 Jason Gerard DeRose <jderose@redhat.com> - 1.99-17 +- Added Require mod_wsgi, added share/ipa/wsgi.py + +* Thu Feb 11 2010 Jason Gerard DeRose <jderose@redhat.com> - 1.99-16 +- Require python-wehjit >= 0.2.2 + +* Wed Feb 3 2010 Rob Crittenden <rcritten@redhat.com> - 1.99-15 +- Add sssd and certmonger as a Requires on ipa-client + +* Wed Jan 27 2010 Jason Gerard DeRose <jderose@redhat.com> - 1.99-14 +- Require python-wehjit >= 0.2.0 + +* Fri Dec 4 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-13 +- Add ipa-rmkeytab tool + +* Tue Dec 1 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-12 +- Set minimum of python-pyasn1 to 0.0.9a so we have support for the ASN.1 + Any type + +* Wed Nov 25 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-11 +- Remove v1-style /etc/ipa/ipa.conf, replacing with /etc/ipa/default.conf + +* Fri Nov 13 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-10 +- Add bash completion script and own /etc/bash_completion.d in case it + doesn't already exist + +* Tue Nov 3 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-9 +- Remove ipa_webgui, its functions rolled into ipa_httpd + +* Mon Oct 12 2009 Jason Gerard DeRose <jderose@redhat.com> - 1.99-8 +- Removed python-cherrypy from BuildRequires and Requires +- Added Requires python-assets, python-wehjit + +* Mon Aug 24 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-7 +- Added httpd SELinux policy so CRLs can be read + +* Thu May 21 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-6 +- Move ipalib to ipa-python subpackage +- Bump minimum version of slapi-nis to 0.15 + +* Wed May 6 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-5 +- Set 0.14 as minimum version for slapi-nis + +* Wed Apr 22 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-4 +- Add Requires: python-nss to ipa-python sub-package + +* Thu Mar 5 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-3 +- Remove the IPA DNA plugin, use the DS one + +* Wed Mar 4 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-2 +- Build radius separately +- Fix a few minor issues + +* Tue Feb 3 2009 Rob Crittenden <rcritten@redhat.com> - 1.99-1 +- Replace TurboGears requirement with python-cherrypy + +* Sat Jan 17 2009 Tomas Mraz <tmraz@redhat.com> - 1.2.1-3 +- rebuild with new openssl + +* Fri Dec 19 2008 Dan Walsh <dwalsh@redhat.com> - 1.2.1-2 +- Fix SELinux code + +* Mon Dec 15 2008 Simo Sorce <ssorce@redhat.com> - 1.2.1-1 +- Fix breakage caused by python-kerberos update to 1.1 + +* Fri Dec 5 2008 Simo Sorce <ssorce@redhat.com> - 1.2.1-0 +- New upstream release 1.2.1 + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 1.2.0-4 +- Rebuild for Python 2.6 + +* Fri Nov 14 2008 Simo Sorce <ssorce@redhat.com> - 1.2.0-3 +- Respin after the tarball has been re-released upstream + New hash is 506c9c92dcaf9f227cba5030e999f177 + +* Thu Nov 13 2008 Simo Sorce <ssorce@redhat.com> - 1.2.0-2 +- Conditionally restart also dirsrv and httpd when upgrading + +* Wed Oct 29 2008 Rob Crittenden <rcritten@redhat.com> - 1.2.0-1 +- Update to upstream version 1.2.0 +- Set fedora-ds-base minimum version to 1.1.3 for winsync header +- Set the minimum version for SELinux policy +- Remove references to Fedora 7 + +* Wed Jul 23 2008 Simo Sorce <ssorce@redhat.com> - 1.1.0-3 +- Fix for CVE-2008-3274 +- Fix segfault in ipa-kpasswd in case getifaddrs returns a NULL interface +- Add fix for bug #453185 +- Rebuild against openldap libraries, mozldap ones do not work properly +- TurboGears is currently broken in rawhide. Added patch to not build + the UI locales and removed them from the ipa-server files section. + +* Wed Jun 18 2008 Rob Crittenden <rcritten@redhat.com> - 1.1.0-2 +- Add call to /usr/sbin/upgradeconfig to post install + +* Wed Jun 11 2008 Rob Crittenden <rcritten@redhat.com> - 1.1.0-1 +- Update to upstream version 1.1.0 +- Patch for indexing memberof attribute +- Patch for indexing uidnumber and gidnumber +- Patch to change DNA default values for replicas +- Patch to fix uninitialized variable in ipa-getkeytab + +* Fri May 16 2008 Rob Crittenden <rcritten@redhat.com> - 1.0.0-5 +- Set fedora-ds-base minimum version to 1.1.0.1-4 and mod_nss minimum + version to 1.0.7-4 so we pick up the NSS fixes. +- Add selinux-policy-base(post) to Requires (446496) + +* Tue Apr 29 2008 Rob Crittenden <rcritten@redhat.com> - 1.0.0-4 +- Add missing entry for /var/cache/ipa/kpasswd (444624) +- Added patch to fix permissions problems with the Apache NSS database. +- Added patch to fix problem with DNS querying where the query could be + returned as the answer. +- Fix spec error where patch1 was in the wrong section + +* Fri Apr 25 2008 Rob Crittenden <rcritten@redhat.com> - 1.0.0-3 +- Added patch to fix problem reported by ldapmodify + +* Fri Apr 25 2008 Rob Crittenden <rcritten@redhat.com> - 1.0.0-2 +- Fix Requires for krb5-server that was missing for Fedora versions > 9 +- Remove quotes around test for fedora version to package egg-info + +* Fri Apr 18 2008 Rob Crittenden <rcritten@redhat.com> - 1.0.0-1 +- Update to upstream version 1.0.0 + +* Tue Mar 18 2008 Rob Crittenden <rcritten@redhat.com> 0.99-12 +- Pull upstream changelog 722 +- Add Conflicts mod_ssl (435360) + +* Fri Feb 29 2008 Rob Crittenden <rcritten@redhat.com> 0.99-11 +- Pull upstream changelog 698 +- Fix ownership of /var/log/ipa_error.log during install (435119) +- Add pwpolicy command and man page + +* Thu Feb 21 2008 Rob Crittenden <rcritten@redhat.com> 0.99-10 +- Pull upstream changelog 678 +- Add new subpackage, ipa-server-selinux +- Add Requires: authconfig to ipa-python (bz #433747) +- Package i18n files + +* Mon Feb 18 2008 Rob Crittenden <rcritten@redhat.com> 0.99-9 +- Pull upstream changelog 641 +- Require minimum version of krb5-server on F-7 and F-8 +- Package some new files + +* Thu Jan 31 2008 Rob Crittenden <rcritten@redhat.com> 0.99-8 +- Marked with wrong license. IPA is GPLv2. + +* Tue Jan 29 2008 Rob Crittenden <rcritten@redhat.com> 0.99-7 +- Ensure that /etc/ipa exists before moving user-modifiable html files there +- Put html files into /etc/ipa/html instead of /etc/ipa + +* Tue Jan 29 2008 Rob Crittenden <rcritten@redhat.com> 0.99-6 +- Pull upstream changelog 608 which renamed several files + +* Thu Jan 24 2008 Rob Crittenden <rcritten@redhat.com> 0.99-5 +- package the sessions dir /var/cache/ipa/sessions +- Pull upstream changelog 597 + +* Thu Jan 24 2008 Rob Crittenden <rcritten@redhat.com> 0.99-4 +- Updated upstream pull (596) to fix bug in ipa_webgui that was causing the + UI to not start. + +* Thu Jan 24 2008 Rob Crittenden <rcritten@redhat.com> 0.99-3 +- Included LICENSE and README in all packages for documentation +- Move user-modifiable content to /etc/ipa and linked back to + /usr/share/ipa/html +- Changed some references to /usr to the {_usr} macro and /etc + to {_sysconfdir} +- Added popt-devel to BuildRequires for Fedora 8 and higher and + popt for Fedora 7 +- Package the egg-info for Fedora 9 and higher for ipa-python + +* Tue Jan 22 2008 Rob Crittenden <rcritten@redhat.com> 0.99-2 +- Added auto* BuildRequires + +* Mon Jan 21 2008 Rob Crittenden <rcritten@redhat.com> 0.99-1 +- Unified spec file + +* Thu Jan 17 2008 Rob Crittenden <rcritten@redhat.com> - 0.6.0-2 +- Fixed License in specfile +- Include files from /usr/lib/python*/site-packages/ipaserver + +* Fri Dec 21 2007 Karl MacMillan <kmacmill@redhat.com> - 0.6.0-1 +- Version bump for release + +* Wed Nov 21 2007 Karl MacMillan <kmacmill@mentalrootkit.com> - 0.5.0-1 +- Preverse mode on ipa-keytab-util +- Version bump for relase and rpm name change + +* Thu Nov 15 2007 Rob Crittenden <rcritten@redhat.com> - 0.4.1-2 +- Broke invididual Requires and BuildRequires onto separate lines and + reordered them +- Added python-tgexpandingformwidget as a dependency +- Require at least fedora-ds-base 1.1 + +* Thu Nov 1 2007 Karl MacMillan <kmacmill@redhat.com> - 0.4.1-1 +- Version bump for release + +* Wed Oct 31 2007 Karl MacMillan <kmacmill@redhat.com> - 0.4.0-6 +- Add dep for freeipa-admintools and acl + +* Wed Oct 24 2007 Rob Crittenden <rcritten@redhat.com> - 0.4.0-5 +- Add dependency for python-krbV + +* Fri Oct 19 2007 Rob Crittenden <rcritten@redhat.com> - 0.4.0-4 +- Require mod_nss-1.0.7-2 for mod_proxy fixes + +* Thu Oct 18 2007 Karl MacMillan <kmacmill@redhat.com> - 0.4.0-3 +- Convert to autotools-based build + +* Tue Sep 25 2007 Karl MacMillan <kmacmill@redhat.com> - 0.4.0-2 + +* Fri Sep 7 2007 Karl MacMillan <kmacmill@redhat.com> - 0.3.0-1 +- Added support for libipa-dna-plugin + +* Fri Aug 10 2007 Karl MacMillan <kmacmill@redhat.com> - 0.2.0-1 +- Added support for ipa_kpasswd and ipa_pwd_extop + +* Sun Aug 5 2007 Rob Crittenden <rcritten@redhat.com> - 0.1.0-3 +- Abstracted client class to work directly or over RPC + +* Wed Aug 1 2007 Rob Crittenden <rcritten@redhat.com> - 0.1.0-2 +- Add mod_auth_kerb and cyrus-sasl-gssapi to Requires +- Remove references to admin server in ipa-server-setupssl +- Generate a client certificate for the XML-RPC server to connect to LDAP with +- Create a keytab for Apache +- Create an ldif with a test user +- Provide a certmap.conf for doing SSL client authentication + +* Fri Jul 27 2007 Karl MacMillan <kmacmill@redhat.com> - 0.1.0-1 +- Initial rpm version