1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

htpasswd: fix passlib module version comparison (#20202)

Previously, we used StrictVersion which failed to parse some passlib
version strings. For example, Debian currently ship passlib with a
__version__ of '1.7.0.post20161128115349'

StrictVersion throws an exception when parsing this version string.

Change to using LooseVersion which successfully parses version strings
such as this.

Fixes #20199
This commit is contained in:
James Braid 2017-06-19 04:02:06 -07:00 committed by John R Barker
parent 846174b4ba
commit 0be0aa5f10

View file

@ -104,7 +104,7 @@ EXAMPLES = """
import os import os
import tempfile import tempfile
from distutils.version import StrictVersion from distutils.version import LooseVersion
try: try:
from passlib.apache import HtpasswdFile, htpasswd_context from passlib.apache import HtpasswdFile, htpasswd_context
@ -138,7 +138,7 @@ def present(dest, username, password, crypt_scheme, create, check_mode):
if check_mode: if check_mode:
return ("Create %s" % dest, True) return ("Create %s" % dest, True)
create_missing_directories(dest) create_missing_directories(dest)
if StrictVersion(passlib.__version__) >= StrictVersion('1.6'): if LooseVersion(passlib.__version__) >= LooseVersion('1.6'):
ht = HtpasswdFile(dest, new=True, default_scheme=crypt_scheme, context=context) ht = HtpasswdFile(dest, new=True, default_scheme=crypt_scheme, context=context)
else: else:
ht = HtpasswdFile(dest, autoload=False, default=crypt_scheme, context=context) ht = HtpasswdFile(dest, autoload=False, default=crypt_scheme, context=context)
@ -149,7 +149,7 @@ def present(dest, username, password, crypt_scheme, create, check_mode):
ht.save() ht.save()
return ("Created %s and added %s" % (dest, username), True) return ("Created %s and added %s" % (dest, username), True)
else: else:
if StrictVersion(passlib.__version__) >= StrictVersion('1.6'): if LooseVersion(passlib.__version__) >= LooseVersion('1.6'):
ht = HtpasswdFile(dest, new=False, default_scheme=crypt_scheme, context=context) ht = HtpasswdFile(dest, new=False, default_scheme=crypt_scheme, context=context)
else: else:
ht = HtpasswdFile(dest, default=crypt_scheme, context=context) ht = HtpasswdFile(dest, default=crypt_scheme, context=context)
@ -176,7 +176,7 @@ def absent(dest, username, check_mode):
""" Ensures user is absent """ Ensures user is absent
Returns (msg, changed) """ Returns (msg, changed) """
if StrictVersion(passlib.__version__) >= StrictVersion('1.6'): if LooseVersion(passlib.__version__) >= LooseVersion('1.6'):
ht = HtpasswdFile(dest, new=False) ht = HtpasswdFile(dest, new=False)
else: else:
ht = HtpasswdFile(dest) ht = HtpasswdFile(dest)