#!/usr/bin/python3 # -*- coding: utf-8 -*- # Author: Caner Feyzullahoglu """ Style Guide is PEP-8 https://www.python.org/dev/peps/pep-0008/ """ import json import os from base.plugin.abstract_plugin import AbstractPlugin class UserPrivilegeSafeMode(AbstractPlugin): def __init__(self, context): super(AbstractPlugin, self).__init__() self.username = str(context.get_username()) self.context = context self.logger = self.get_logger() def handle_safe_mode(self): self.logger.debug('Handling safe mode.') self.logger.debug('Getting plugin path.') p_path = self.Ahenk.plugins_path() privilege_file = p_path + 'user-privilege/privilege.changes/' + self.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(self.username) + ' ' + group_name + '"') self.execute('deluser ' + str(self.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(self.username) + ' ' + group_name + '"') self.execute('adduser ' + str(self.username) + ' ' + group_name) else: self.logger.debug('Changes file not found for {} user.'.format(self.username)) def handle_mode(context): user_privilege = UserPrivilegeSafeMode(context) user_privilege.handle_safe_mode()