Ahenk/usr/share/ahenk/plugins/user-privilege/init.py

95 lines
3.9 KiB
Python

#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Style Guide is PEP-8
https://www.python.org/dev/peps/pep-0008/
"""
import glob
import json
import os
from base.plugin.abstract_plugin import AbstractPlugin
class UserPrivilegeInitMode(AbstractPlugin):
def __init__(self, context):
super(AbstractPlugin, self).__init__()
self.context = context
self.logger = self.get_logger()
def handle_for_this_user(self, username):
p_path = self.Ahenk.plugins_path()
privilege_file = p_path + 'user-privilege/privilege.changes/' + username + '.changes'
if self.is_exist(privilege_file):
self.logger.debug('Reading privilege_file: ' + privilege_file)
with open(privilege_file) as data_file:
self.logger.debug('Creating object from JSON data file.')
data = json.load(data_file)
command_path_list = data['command_path_list']
added_user_list = data['added_user_list']
deleted_user_list = data['deleted_user_list']
if len(command_path_list) != 0:
self.logger.debug('Removing wrapper files and renaming original files.')
for command_path in command_path_list:
if os.path.exists(command_path + '-ahenk'):
self.logger.debug('Executing: ' + '"rm ' + command_path + '"')
self.execute('rm ' + command_path)
self.logger.debug(
'Executing: ' + '"mv ' + command_path + '-ahenk ' + command_path + '"')
self.execute('mv ' + command_path + '-ahenk ' + command_path)
else:
self.logger.debug(
'File will not be deleted because ' + command_path + 'does not exists.')
if len(added_user_list) != 0:
self.logger.debug('Removing user from groups that it has been added in advance.')
for group_name in added_user_list:
self.logger.debug(
'Executing: ' + '"deluser ' + str(username) + ' ' + group_name + '"')
self.execute('deluser ' + str(username) + ' ' + group_name)
if len(deleted_user_list) != 0:
self.logger.debug('Adding user to groups that it has been removed in advance.')
for group_name in deleted_user_list:
self.logger.debug(
'Executing: ' + '"adduser ' + str(username) + ' ' + group_name + '"')
self.execute('adduser ' + str(username) + ' ' + group_name)
else:
self.logger.debug('Changes file not found for {} user.'.format(username))
def handle_init_mode(self):
self.logger.debug('Handling init mode.')
changes_file_arr = self.Ahenk.plugins_path() + 'user-privilege/privilege.changes/*.changes'
change_files = glob.glob(changes_file_arr)
if change_files is not None and len(change_files) > 0:
self.logger.debug('Some user changes found.')
for file in change_files:
tmp = file.replace(self.Ahenk.plugins_path() + 'user-privilege/privilege.changes/', '')
tmp = tmp.replace('.changes', '')
self.logger.debug('Handling init for user {0}'.format(tmp))
try:
self.handle_for_this_user(tmp)
self.logger.debug('Handled init for user {0}'.format(tmp))
except Exception as e:
self.logger.error(
'A problem occurred while handling init action for user {0}. Error Message: {1}'.format(
tmp, str(e)))
else:
self.logger.debug('Changes files not found.')
def handle_mode(context):
user_privilege = UserPrivilegeInitMode(context)
user_privilege.handle_init_mode()