|
|
91acb2 |
From b95817e35716bbab000633043817202e17d7c53e Mon Sep 17 00:00:00 2001
|
|
|
91acb2 |
From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com>
|
|
|
91acb2 |
Date: Thu, 6 Aug 2020 17:07:36 +0200
|
|
|
91acb2 |
Subject: [PATCH] IPA-EPN: Use a helper to retrieve LDAP attributes from an
|
|
|
91acb2 |
entry
|
|
|
91acb2 |
|
|
|
91acb2 |
Allow for empty attributes.
|
|
|
91acb2 |
|
|
|
91acb2 |
Reviewed-By: Francois Cami <fcami@redhat.com>
|
|
|
91acb2 |
---
|
|
|
91acb2 |
ipaclient/install/ipa_epn.py | 22 +++++++++++++++-------
|
|
|
91acb2 |
1 file changed, 15 insertions(+), 7 deletions(-)
|
|
|
91acb2 |
|
|
|
91acb2 |
diff --git a/ipaclient/install/ipa_epn.py b/ipaclient/install/ipa_epn.py
|
|
|
91acb2 |
index 65f9f3d47..0d1ae2add 100644
|
|
|
91acb2 |
--- a/ipaclient/install/ipa_epn.py
|
|
|
91acb2 |
+++ b/ipaclient/install/ipa_epn.py
|
|
|
91acb2 |
@@ -122,22 +122,30 @@ class EPNUserList:
|
|
|
91acb2 |
"""Return len(self)."""
|
|
|
91acb2 |
return len(self._expiring_password_user_dq)
|
|
|
91acb2 |
|
|
|
91acb2 |
+ def get_ldap_attr(self, entry, attr):
|
|
|
91acb2 |
+ """Get a single value from a multi-valued attr in a safe way"""
|
|
|
91acb2 |
+ return str(entry.get(attr, [""]).pop(0))
|
|
|
91acb2 |
+
|
|
|
91acb2 |
def add(self, entry):
|
|
|
91acb2 |
"""Parses and appends an LDAP user entry with the uid, cn,
|
|
|
91acb2 |
givenname, sn, krbpasswordexpiration and mail attributes.
|
|
|
91acb2 |
"""
|
|
|
91acb2 |
try:
|
|
|
91acb2 |
self._sorted = False
|
|
|
91acb2 |
+ if entry.get("mail") is None:
|
|
|
91acb2 |
+ logger.error("IPA-EPN: No mail address defined for: %s",
|
|
|
91acb2 |
+ entry.dn)
|
|
|
91acb2 |
+ return
|
|
|
91acb2 |
self._expiring_password_user_dq.append(
|
|
|
91acb2 |
dict(
|
|
|
91acb2 |
- uid=str(entry["uid"].pop(0)),
|
|
|
91acb2 |
- cn=str(entry["cn"].pop(0)),
|
|
|
91acb2 |
- givenname=str(entry["givenname"].pop(0)),
|
|
|
91acb2 |
- sn=str(entry["sn"].pop(0)),
|
|
|
91acb2 |
- krbpasswordexpiration=str(
|
|
|
91acb2 |
- entry["krbpasswordexpiration"].pop(0)
|
|
|
91acb2 |
+ uid=self.get_ldap_attr(entry, "uid"),
|
|
|
91acb2 |
+ cn=self.get_ldap_attr(entry, "cn"),
|
|
|
91acb2 |
+ givenname=self.get_ldap_attr(entry, "givenname"),
|
|
|
91acb2 |
+ sn=self.get_ldap_attr(entry, "sn"),
|
|
|
91acb2 |
+ krbpasswordexpiration=(
|
|
|
91acb2 |
+ self.get_ldap_attr(entry,"krbpasswordexpiration")
|
|
|
91acb2 |
),
|
|
|
91acb2 |
- mail=str(entry["mail"]),
|
|
|
91acb2 |
+ mail=str(entry.get("mail")),
|
|
|
91acb2 |
)
|
|
|
91acb2 |
)
|
|
|
91acb2 |
except IndexError as e:
|
|
|
91acb2 |
--
|
|
|
91acb2 |
2.26.2
|
|
|
91acb2 |
|
|
|
91acb2 |
From 8e810d8cf38ec60d76178bd673e218fb05d56c8e Mon Sep 17 00:00:00 2001
|
|
|
91acb2 |
From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com>
|
|
|
91acb2 |
Date: Thu, 6 Aug 2020 17:13:19 +0200
|
|
|
91acb2 |
Subject: [PATCH] IPA-EPN: fix configuration file typo
|
|
|
91acb2 |
MIME-Version: 1.0
|
|
|
91acb2 |
Content-Type: text/plain; charset=UTF-8
|
|
|
91acb2 |
Content-Transfer-Encoding: 8bit
|
|
|
91acb2 |
|
|
|
91acb2 |
Signed-off-by: François Cami <fcami@redhat.com>
|
|
|
91acb2 |
Reviewed-By: Francois Cami <fcami@redhat.com>
|
|
|
91acb2 |
---
|
|
|
91acb2 |
client/share/epn.conf | 2 +-
|
|
|
91acb2 |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
91acb2 |
|
|
|
91acb2 |
diff --git a/client/share/epn.conf b/client/share/epn.conf
|
|
|
91acb2 |
index 0e590dfc3..e3645801c 100644
|
|
|
91acb2 |
--- a/client/share/epn.conf
|
|
|
91acb2 |
+++ b/client/share/epn.conf
|
|
|
91acb2 |
@@ -23,7 +23,7 @@ smtp_port = 25
|
|
|
91acb2 |
# Default None (empty value).
|
|
|
91acb2 |
# smtp_password =
|
|
|
91acb2 |
|
|
|
91acb2 |
-# pecifies the number of seconds to wait for SMTP to respond.
|
|
|
91acb2 |
+# Specifies the number of seconds to wait for SMTP to respond.
|
|
|
91acb2 |
smtp_timeout = 60
|
|
|
91acb2 |
|
|
|
91acb2 |
# Specifies the type of secure connection to make. Options are: none,
|
|
|
91acb2 |
--
|
|
|
91acb2 |
2.26.2
|
|
|
91acb2 |
|
|
|
91acb2 |
From 1b1dbcbe9d83ba35f3cfdd01399f123816ec6e5b Mon Sep 17 00:00:00 2001
|
|
|
91acb2 |
From: Rob Crittenden <rcritten@redhat.com>
|
|
|
91acb2 |
Date: Thu, 6 Aug 2020 18:57:10 -0400
|
|
|
91acb2 |
Subject: [PATCH] IPA-EPN: Test that users without givenname and/or mail are
|
|
|
91acb2 |
handled
|
|
|
91acb2 |
|
|
|
91acb2 |
The admin user does not have a givenname by default, allow for that.
|
|
|
91acb2 |
|
|
|
91acb2 |
Report errors for users without a default e-mail address.
|
|
|
91acb2 |
|
|
|
91acb2 |
Update the SHA256 hash with the typo fix.
|
|
|
91acb2 |
|
|
|
91acb2 |
Reviewed-By: Francois Cami <fcami@redhat.com>
|
|
|
91acb2 |
---
|
|
|
91acb2 |
ipatests/test_integration/test_epn.py | 22 +++++++++++++++++++++-
|
|
|
91acb2 |
1 file changed, 21 insertions(+), 1 deletion(-)
|
|
|
91acb2 |
|
|
|
91acb2 |
diff --git a/ipatests/test_integration/test_epn.py b/ipatests/test_integration/test_epn.py
|
|
|
91acb2 |
index 18f73c722..c5c73835a 100644
|
|
|
91acb2 |
--- a/ipatests/test_integration/test_epn.py
|
|
|
91acb2 |
+++ b/ipatests/test_integration/test_epn.py
|
|
|
91acb2 |
@@ -240,7 +240,7 @@ class TestEPN(IntegrationTest):
|
|
|
91acb2 |
assert epn_conf in cmd1.stdout_text
|
|
|
91acb2 |
assert epn_template in cmd1.stdout_text
|
|
|
91acb2 |
cmd2 = self.master.run_command(["sha256sum", epn_conf])
|
|
|
91acb2 |
- ck = "4c207b5c9c760c36db0d3b2b93da50ea49edcc4002d6d1e7383601f0ec30b957"
|
|
|
91acb2 |
+ ck = "192481b52fb591112afd7b55b12a44c6618fdbc7e05a3b1866fd67ec579c51df"
|
|
|
91acb2 |
assert cmd2.stdout_text.find(ck) == 0
|
|
|
91acb2 |
|
|
|
91acb2 |
def test_EPN_smoketest_1(self):
|
|
|
91acb2 |
@@ -591,3 +591,23 @@ class TestEPN(IntegrationTest):
|
|
|
91acb2 |
self.master.put_file_contents('/etc/ipa/epn.conf', epn_conf)
|
|
|
91acb2 |
result = tasks.ipa_epn(self.master, raiseonerr=False)
|
|
|
91acb2 |
assert "smtp_delay cannot be less than zero" in result.stderr_text
|
|
|
91acb2 |
+
|
|
|
91acb2 |
+ def test_EPN_admin(self):
|
|
|
91acb2 |
+ """The admin user is special and has no givenName by default
|
|
|
91acb2 |
+ It also doesn't by default have an e-mail address
|
|
|
91acb2 |
+ Check --dry-run output.
|
|
|
91acb2 |
+ """
|
|
|
91acb2 |
+ epn_conf = textwrap.dedent('''
|
|
|
91acb2 |
+ [global]
|
|
|
91acb2 |
+ ''')
|
|
|
91acb2 |
+ self.master.put_file_contents('/etc/ipa/epn.conf', epn_conf)
|
|
|
91acb2 |
+ self.master.run_command(
|
|
|
91acb2 |
+ ['ipa', 'user-mod', 'admin', '--password-expiration',
|
|
|
91acb2 |
+ datetime_to_generalized_time(
|
|
|
91acb2 |
+ datetime.datetime.utcnow() + datetime.timedelta(days=7)
|
|
|
91acb2 |
+ )]
|
|
|
91acb2 |
+ )
|
|
|
91acb2 |
+ (unused, stderr_text, _unused) = self._check_epn_output(
|
|
|
91acb2 |
+ self.master, dry_run=True
|
|
|
91acb2 |
+ )
|
|
|
91acb2 |
+ assert "uid=admin" in stderr_text
|
|
|
91acb2 |
--
|
|
|
91acb2 |
2.26.2
|
|
|
91acb2 |
|