diff options
Diffstat (limited to 'library/user_expiration.py')
| -rw-r--r-- | library/user_expiration.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/library/user_expiration.py b/library/user_expiration.py new file mode 100644 index 00000000..2bf88e8f --- /dev/null +++ b/library/user_expiration.py @@ -0,0 +1,48 @@ +#!/usr/local/bin/python3 + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + +from ansible.module_utils.basic import AnsibleModule +import json, shlex, os +from datetime import datetime + +EXPIRE_USER_JSON_PATH = "/var/reactance/.user_expiration.json" + +def run_module(): + changed = False + module = AnsibleModule( + argument_spec=dict( + users = dict(type='list', required=True) + ), + supports_check_mode=True + ) + + users = module.params["users"] + + user_expire_dict = {} + if os.path.exists(EXPIRE_USER_JSON_PATH): + with open(EXPIRE_USER_JSON_PATH, 'r') as f: + user_expire_dict = json.loads(f.read()) + + for user in users: + if 'expire' in user.keys(): + changed = True + time = str(datetime(*[int(i) for i in user['expire'].split('-')]).timestamp()) + if time not in user_expire_dict.keys(): + user_expire_entry = set() # To make sure we don't have duplicates + else: + user_expire_entry = set(user_expire_dict[time]) + user_expire_entry.add(user['user']) + user_expire_dict[time] = list(user_expire_entry) # JSON can't work with sets + + with open(EXPIRE_USER_JSON_PATH, 'w') as f: + f.write(json.dumps(user_expire_dict, indent=1)) + + module.exit_json(changed=changed) + +def main(): + run_module() + +if __name__ == "__main__": + main() |
