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

pamd - fixed single line issue (#2989) (#3013)

* fixed pamd single line issue

* added changelog fragment

* supported case for 0 lines, improved test

(cherry picked from commit a3a40f6de3)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
patchback[bot] 2021-07-14 13:21:57 +02:00 committed by GitHub
parent 22591fb6e1
commit 9244d0ae47
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 72 additions and 4 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- pamd - fixed problem with files containing only one or two lines (https://github.com/ansible-collections/community.general/issues/2925).

View file

@ -733,14 +733,19 @@ class PamdService(object):
lines = [] lines = []
current_line = self._head current_line = self._head
mark = "# Updated by Ansible - %s" % datetime.now().isoformat()
while current_line is not None: while current_line is not None:
lines.append(str(current_line)) lines.append(str(current_line))
current_line = current_line.next current_line = current_line.next
if lines[1].startswith("# Updated by Ansible"): if len(lines) <= 1:
lines.pop(1) lines.insert(0, "")
lines.insert(1, mark)
lines.insert(1, "# Updated by Ansible - " + datetime.now().isoformat()) else:
if lines[1].startswith("# Updated by Ansible"):
lines[1] = mark
else:
lines.insert(1, mark)
return '\n'.join(lines) + '\n' return '\n'.join(lines) + '\n'

View file

@ -0,0 +1,5 @@
shippable/posix/group1
skip/aix
skip/freebsd
skip/osx
skip/macos

View file

@ -0,0 +1,56 @@
# (c) 2021, Alexei Znamensky
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
- name: Set value for temp limit configuration
set_fact:
test_pamd_file: "/tmp/pamd_file"
- name: Copy temporary pam.d file
copy:
content: "session required pam_lastlog.so silent showfailed"
dest: "{{ test_pamd_file }}"
- name: Test working on a single-line file works (2925)
community.general.pamd:
path: /tmp
name: pamd_file
type: session
control: required
module_path: pam_lastlog.so
module_arguments: silent
state: args_absent
register: pamd_file_output
- name: Check if changes made
assert:
that:
- pamd_file_output is changed
- name: Copy temporary pam.d file
copy:
content: ""
dest: "{{ test_pamd_file }}"
# This test merely demonstrates that, as-is, module will not perform any changes on an empty file
# All the existing values for "state" will first search for a rule matching type, control, module_path
# and will not perform any change whatsoever if no existing rules match.
- name: Test working on a empty file works (2925)
community.general.pamd:
path: /tmp
name: pamd_file
type: session
control: required
module_path: pam_lastlog.so
module_arguments: silent
register: pamd_file_output_empty
- name: Read back the file
slurp:
src: "{{ test_pamd_file }}"
register: pamd_file_slurp
- name: Check if changes made
assert:
that:
- pamd_file_output_empty is not changed
- pamd_file_slurp.content|b64decode == ''