Esempio n. 1
0
 def init_ahenk_db():
     """ docstring"""
     db_service = AhenkDbService()
     db_service.connect()
     db_service.initialize_table()
     Scope.get_instance().set_sb_service(db_service)
     return db_service
Esempio n. 2
0
    def __init__(self, parameter_map):

        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        logging.getLogger("paramiko").setLevel(logging.INFO)

        try:
            self.target_hostname = parameter_map['host']
            self.target_port = parameter_map['port']
            self.target_username = parameter_map['username']
            self.target_path = parameter_map['path']
            self.target_password = None
            self.p_key = None
            if Util.has_attr_json(parameter_map, 'password'):
                self.target_password = parameter_map['password']
            else:
                self.p_key = parameter_map['pkey']
        except Exception as e:
            self.logger.error(
                'A problem occurred while parsing ssh connection parameters. Error Message: {0}'
                .format(str(e)))

        self.connection = None
        self.logger.debug('Parameters set up')
Esempio n. 3
0
    def process_task(self, task):

        ##
        scope = Scope().get_instance()
        self.messenger = scope.get_messenger()
        ##

        try:
            plugin_name = task.get_plugin().get_name().lower()
            plugin_ver = task.get_plugin().get_version()

            if self.does_plugin_exist(
                    plugin_name,
                    plugin_ver) and plugin_name in self.plugin_queue_dict:
                self.plugin_queue_dict[plugin_name].put(task, 1)
            else:
                self.logger.warning(
                    '{0} plugin not found. Task was delayed. Ahenk will request plugin from Lider if distribution available'
                    .format(plugin_name, plugin_ver))
                self.delayed_tasks[plugin_name] = task
                msg = self.message_manager.missing_plugin_message(
                    PluginBean(name=plugin_name, version=plugin_ver))
                self.messenger.send_direct_message(msg)
        except Exception as e:
            self.logger.error(
                'Exception occurred while processing task. Error Message: {0}'.
                format(str(e)))
Esempio n. 4
0
 def init_plugin_manager():
     """ docstring"""
     plugin_manager = PluginManagerFactory.get_instance()
     Scope.get_instance().set_plugin_manager(plugin_manager)
     # order changed, problem?
     plugin_manager.load_plugins()
     return plugin_manager
    def __init__(self, message):
        # global scope of ahenk
        scope = Scope().get_instance()

        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        self.registration = scope.get_registration()
        self.event_manager = scope.get_event_manager()

        self.host = str(socket.gethostbyname(self.configuration_manager.get('CONNECTION', 'host')))
        self.service = str(self.configuration_manager.get('CONNECTION', 'servicename'))
        self.port = str(self.configuration_manager.get('CONNECTION', 'port'))

        ClientXMPP.__init__(self, self.service, None)

        self.message = message
        self.receiver_resource = self.configuration_manager.get('CONNECTION', 'receiverresource')
        self.receiver = self.configuration_manager.get('CONNECTION',
                                                       'receiverjid') + '@' + self.configuration_manager.get(
            'CONNECTION', 'servicename')
        if self.receiver_resource:
            self.receiver += '/' + self.receiver_resource

        if self.configuration_manager.get('CONNECTION', 'use_tls').strip().lower() == 'true':
            self.use_tls = True
        else:
            self.use_tls = False

        self.logger.debug('XMPP Receiver parameters were set')

        self.add_listeners()
        self.register_extensions()
Esempio n. 6
0
 def init_logger():
     """ docstring"""
     print('init logger...')
     logger = Logger()
     logger.info('Log was set')
     Scope.get_instance().set_logger(logger)
     return logger
Esempio n. 7
0
 def init_config_manager(config_file_path, configfile_folder_path):
     """ docstring"""
     config_manager = ConfigManager(config_file_path,
                                    configfile_folder_path)
     config = config_manager.read()
     Scope.get_instance().set_configuration_manager(config)
     return config
Esempio n. 8
0
    def show_message(username, display, message='', title=''):
        ask_path = Util.get_ask_path_file() + 'confirm.py'
        Scope.get_instance().get_logger().debug(
            'DISPLAYYYY --------->>>>>>>>: ' + str(display))
        if display is None:
            display_number = Util.get_username_display()
        else:
            display_number = display
        try:
            if Util.get_desktop_env() == "gnome":
                display_number = Util.get_username_display_gnome(username)
            if username is not None:
                command = 'su - {0} -c \'python3 {1} \"{2}\" \"{3}\" \"{4}\"\''.format(
                    username, ask_path, message, title, display_number)
                result_code, p_out, p_err = Util.execute(command)

                if p_out.strip() == 'Y':
                    return True
                elif p_out.strip() == 'N':
                    return False
                else:
                    return None
            else:
                return None
        except Exception as e:
            print("Error when showing message " + str(e))
            return None
Esempio n. 9
0
    def execute_win_command(filePath,
                            parameters=None,
                            shell=True,
                            result=True):

        try:
            Scope.get_instance().get_logger().debug('Executing command: ' +
                                                    str(filePath))
            process = subprocess.Popen([
                r'powershell.exe', '-ExecutionPolicy', 'Unrestricted',
                filePath, parameters
            ],
                                       stderr=subprocess.PIPE,
                                       stdout=subprocess.PIPE)

            Scope.get_instance().get_logger().debug('Executing command: ' +
                                                    str(filePath))

            if result is True:
                result_code = process.wait()
                p_out = process.stdout.read().decode("unicode_escape")
                p_err = process.stderr.read().decode("unicode_escape")

                return result_code, p_out, p_err
            else:
                return None, None, None
        except Exception as e:
            return 1, 'Could not execute command: {0}. Error Message: {1}'.format(
                filePath, str(e)), ''
Esempio n. 10
0
 def init_ahenk_db():
     """ docstring"""
     db_service = AhenkDbService()
     db_service.connect()
     db_service.initialize_table()
     Scope.get_instance().set_sb_service(db_service)
     return db_service
Esempio n. 11
0
 def init_plugin_manager():
     """ docstring"""
     plugin_manager = PluginManagerFactory.get_instance()
     Scope.get_instance().set_plugin_manager(plugin_manager)
     # order changed, problem?
     plugin_manager.load_plugins()
     return plugin_manager
Esempio n. 12
0
 def init_message_response_queue():
     """ docstring"""
     response_queue = queue.Queue()
     message_response_queue = MessageResponseQueue(response_queue)
     message_response_queue.setDaemon(True)
     message_response_queue.start()
     Scope.get_instance().set_response_queue(response_queue)
     return response_queue
Esempio n. 13
0
 def __init__(self):
     scope = Scope().get_instance()
     self.logger = scope.get_logger()
     self.message_manager = scope.get_message_manager()
     self.messenger = scope.get_messenger()
     self.db_service = scope.get_db_service()
     self.ask_path = '/opt/ahenk/base/agreement/ask.py'
     self.logger.debug('Instance initialized.')
Esempio n. 14
0
 def init_message_response_queue():
     """ docstring"""
     response_queue = queue.Queue()
     message_response_queue = MessageResponseQueue(response_queue)
     message_response_queue.setDaemon(True)
     message_response_queue.start()
     Scope.get_instance().set_response_queue(response_queue)
     return response_queue
Esempio n. 15
0
 def get_username():
     user_name = Scope.get_instance().get_db_service().select_one_result(
         'session', 'username', " 1=1 order by id desc ")
     domain = Scope.get_instance().get_db_service().select_one_result(
         'session', 'domain', " 1=1 order by id desc ")
     if domain:
         user_name = "{0}\\{1}".format(domain, user_name)
     return user_name
Esempio n. 16
0
 def get_as_user():
     as_user = Scope.get_instance().get_db_service().select_one_result(
         'session', 'username', " 1=1 order by id desc ")
     domain = Scope.get_instance().get_db_service().select_one_result(
         'session', 'domain', " 1=1 order by id desc ")
     if domain:
         as_user = "******".format(domain, as_user)
     return as_user
Esempio n. 17
0
    def execute_script(self, arg):
        try:
            self.logger.debug('Executing script...')
            messenger = Scope().get_instance().get_messenger()

            json_data = json.loads(arg)
            result_code, p_out, p_err = Util.execute(str(json_data['command']))

            self.logger.debug('Executed script')

            data = dict()
            data['type'] = 'SCRIPT_RESULT'
            data['timestamp'] = str(Util.timestamp())

            if result_code == 0:
                self.logger.debug('Command execution was finished successfully')
                try:
                    temp_name = str(Util.generate_uuid())
                    temp_full_path = System.Ahenk.received_dir_path() + temp_name
                    self.logger.debug('Writing result to file')
                    Util.write_file(temp_full_path, str(p_out))
                    md5 = Util.get_md5_file(temp_full_path)
                    Util.rename_file(temp_full_path, System.Ahenk.received_dir_path() + md5)

                    file_manager = FileTransferManager(json_data['fileServerConf']['protocol'],
                                                       json_data['fileServerConf']['parameterMap'])
                    file_manager.transporter.connect()
                    self.logger.debug('File transfer connection was created')
                    success = file_manager.transporter.send_file(System.Ahenk.received_dir_path() + md5, md5)
                    self.logger.debug('File was transferred')
                    file_manager.transporter.disconnect()
                    self.logger.debug('File transfer connection was closed')

                    if success is False:
                        self.logger.error('A problem occurred while file transferring')
                        data['resultCode'] = '-1'
                        data[
                            'errorMessage'] = 'Command executed successfully but a problem occurred while sending result file'

                    else:
                        data['md5'] = md5

                except Exception as e:
                    self.logger.error(
                        'A problem occurred while file transferring. Error Message :{0}'.format(
                            str(e)))
                    raise
            else:
                self.logger.error(
                    'Command execution was failed. Error Message :{0}'.format(str(result_code)))
                data['resultCode'] = str(result_code)
                data['errorMessage'] = str(p_err)

            messenger.send_direct_message(json.dumps(data))
        except Exception as e:
            self.logger.error(
                'A problem occurred while running execute script action. Error Message :{0}'.format(
                    str(e)))
Esempio n. 18
0
    def execute_script(self, arg):
        try:
            self.logger.debug('Executing script...')
            messenger = Scope().get_instance().get_messenger()

            json_data = json.loads(arg)
            result_code, p_out, p_err = Util.execute(str(json_data['command']))

            self.logger.debug('Executed script')

            data = dict()
            data['type'] = 'SCRIPT_RESULT'
            data['timestamp'] = str(Util.timestamp())

            if result_code == 0:
                self.logger.debug('Command execution was finished successfully')
                try:
                    temp_name = str(Util.generate_uuid())
                    temp_full_path = System.Ahenk.received_dir_path() + temp_name
                    self.logger.debug('Writing result to file')
                    Util.write_file(temp_full_path, str(p_out))
                    md5 = Util.get_md5_file(temp_full_path)
                    Util.rename_file(temp_full_path, System.Ahenk.received_dir_path() + md5)

                    file_manager = FileTransferManager(json_data['fileServerConf']['protocol'],
                                                       json_data['fileServerConf']['parameterMap'])
                    file_manager.transporter.connect()
                    self.logger.debug('File transfer connection was created')
                    success = file_manager.transporter.send_file(System.Ahenk.received_dir_path() + md5, md5)
                    self.logger.debug('File was transferred')
                    file_manager.transporter.disconnect()
                    self.logger.debug('File transfer connection was closed')

                    if success is False:
                        self.logger.error('A problem occurred while file transferring')
                        data['resultCode'] = '-1'
                        data[
                            'errorMessage'] = 'Command executed successfully but a problem occurred while sending result file'

                    else:
                        data['md5'] = md5

                except Exception as e:
                    self.logger.error(
                        'A problem occurred while file transferring. Error Message :{0}'.format(
                            str(e)))
                    raise
            else:
                self.logger.error(
                    'Command execution was failed. Error Message :{0}'.format(str(result_code)))
                data['resultCode'] = str(result_code)
                data['errorMessage'] = str(p_err)

            messenger.send_direct_message(json.dumps(data))
        except Exception as e:
            self.logger.error(
                'A problem occurred while running execute script action. Error Message :{0}'.format(
                    str(e)))
Esempio n. 19
0
 def init_scheduler():
     """ docstring"""
     scheduler_ins = SchedulerFactory.get_intstance()
     scheduler_ins.initialize()
     Scope.get_instance().set_scheduler(scheduler_ins)
     sc_thread = threading.Thread(target=scheduler_ins.run)
     sc_thread.setDaemon(True)
     sc_thread.start()
     return scheduler_ins
Esempio n. 20
0
 def init_scheduler():
     """ docstring"""
     scheduler_ins = SchedulerFactory.get_intstance()
     scheduler_ins.initialize()
     Scope.get_instance().set_scheduler(scheduler_ins)
     sc_thread = threading.Thread(target=scheduler_ins.run)
     sc_thread.setDaemon(True)
     sc_thread.start()
     return scheduler_ins
Esempio n. 21
0
 def __init__(self, data, context):
     super(AbstractPlugin, self).__init__()
     scope = Scope().get_instance()
     self.data = data
     self.context = context
     self.logger = self.get_logger()
     self.message_code = self.get_message_code()
     self.conf_manager = scope.get_configuration_manager()
     self.hostname_file = '/etc/hostname'
     self.hosts_file = '/etc/hosts'
Esempio n. 22
0
    def __init__(self, parameter_map):

        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        try:
            self.url = parameter_map['url']
        except Exception as e:
            self.logger.error(
                'A problem occurred while parsing parameter map. Error Message: {0}'.format(str(e)))
Esempio n. 23
0
    def run(self):
        """ docstring"""
        print('Ahenk running...')

        global_scope = Scope()
        global_scope.set_instance(global_scope)

        config_file_folder_path = 'C:\\Users\\hasan\\ahenk\\'

        # configuration manager must be first load
        self.init_config_manager(System.Ahenk.config_path(), config_file_folder_path)

        # Logger must be second
        self.logger = self.init_logger()
        self.logger.info('Pid file was created')
        print("logger is set")
        # print("dsadasişşğşüğşşüğşğşüğ")
        self.logger.info('şiğüğüğüşğüşüğşüğşüğşüğşüğşüğ'.encode().decode('utf-8'))

        self.init_event_manager()
        self.logger.info('Event Manager was set')

        self.init_ahenk_db()
        self.logger.info('DataBase Service was set')

        self.init_messaging()
        self.logger.info('Message Manager was set')

        self.init_plugin_manager()
        self.logger.info('Plugin Manager was set')

        self.init_scheduler()
        self.logger.info('Scheduler was set')

        self.init_task_manager()
        self.logger.info('Task Manager was set')

        self.init_registration()
        self.logger.info('Registration was set')

        self.init_execution_manager()
        self.logger.info('Execution Manager was set')

        self.check_registration()

        self.messenger = self.init_messenger()
        self.logger.info('Messenger was set')

        self.init_signal_listener()
        self.logger.info('Signals listeners was set')

        self.init_message_response_queue()

        while True:
            time.sleep(1)
    def __init__(self, parameter_map):

        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        try:
            self.url = parameter_map['url']
        except Exception as e:
            self.logger.error(
                'A problem occurred while parsing parameter map. Error Message: {0}'
                .format(str(e)))
Esempio n. 25
0
 def __init__(self):
     scope = Scope().get_instance()
     self.logger = scope.get_logger()
     self.plugin_manager = scope.get_plugin_manager()
     self.message_manager = scope.get_message_manager()
     self.messenger = scope.get_messenger()
     self.conf_manager = scope.get_configuration_manager()
     self.db_service = scope.get_db_service()
     self.execute_manager = scope.get_execution_manager()
Esempio n. 26
0
    def plugin_installation_failure(self, plugin_name, plugin_version):

        self.logger.warning('{0} plugin installation failure '.format(plugin_name))

        if plugin_name in self.plugin_manager.delayed_profiles.keys():
            profile = self.plugin_manager.delayed_profiles[plugin_name]
            self.logger.warning('An error message sending with related profile properties...')
            related_policy = self.db_service.select('policy', ['version', 'execution_id'],
                                                    'id={0}'.format(profile.get_id()))
            data = dict()
            data['message'] = "Profil işletilirken eklenti bulunamadı "
            "ve eksik olan eklenti kurulmaya çalışırken hata ile karşılaşıldı. "
            "İlgili eklenti Ahenk'e yüklendiğinde, başarısız olan bu profil "
            "(Başka bir politika tarafından ezilmedikçe) "
            "çalıştırılacaktır"
            " Sorunu çözmek için Lider yapılandırma dosyasındaki eklenti dağıtım "
            "bilgilerinin doğruluğundan ve belirtilen dizinde geçerli eklenti paketinin "
            "bulunduğundan emin olun."
            response = Response(type=MessageType.POLICY_STATUS.value, id=profile.get_id(),
                                code=MessageCode.POLICY_ERROR.value,
                                message="Profil işletilirken eklenti bulunamadı "
                                        "ve eksik olan eklenti kurulurken hata oluştu",
                                execution_id=related_policy[0][1], policy_version=related_policy[0][0],
                                data=json.dumps(data), content_type=ContentType.APPLICATION_JSON.value)
            messenger = Scope.get_instance().get_messenger()
            messenger.send_direct_message(self.message_manager.policy_status_msg(response))
            self.logger.warning(
                'Error message was sent about {0} plugin installation failure while trying to run a profile')

        if plugin_name in self.plugin_manager.delayed_tasks.keys():
            task = self.plugin_manager.delayed_tasks[plugin_name]
            self.logger.warning('An error message sending with related task properties...')

            data = dict()
            data['message'] = "Görev işletilirken eklenti bulunamadı "
            "ve eksik olan eklenti kurulmaya çalışırken hata ile karşılaşıldı. "
            "İlgili eklenti Ahenk'e yüklendiğinde, başarısız olan bu görev "
            "çalıştırılacaktır"
            " Sorunu çözmek için Lider yapılandırma dosyasındaki eklenti dağıtım "
            "bilgilerinin doğruluğundan ve belirtilen dizinde geçerli eklenti paketinin "
            "bulunduğundan emin olun."
            response = Response(type=MessageType.TASK_STATUS.value, id=task.get_id(),
                                code=MessageCode.TASK_ERROR.value,
                                message="Görev işletilirken eklenti bulunamadı "
                                        "ve eksik olan eklenti kurulmaya çalışırken oluştu.",
                                data=json.dumps(data), content_type=ContentType.APPLICATION_JSON.value)
            messenger = Scope.get_instance().get_messenger()
            messenger.send_direct_message(self.message_manager.task_status_msg(response))
            self.logger.warning(
                'Error message was sent about {0} plugin installation failure while trying to run a task')
Esempio n. 27
0
    def plugin_installation_failure(self, plugin_name, plugin_version):

        self.logger.warning('{0} plugin installation failure '.format(plugin_name))

        if plugin_name in self.plugin_manager.delayed_profiles.keys():
            profile = self.plugin_manager.delayed_profiles[plugin_name]
            self.logger.warning('An error message sending with related profile properties...')
            related_policy = self.db_service.select('policy', ['version', 'execution_id'],
                                                    'id={0}'.format(profile.get_id()))
            data = dict()
            data['message'] = "Profil işletilirken eklenti bulunamadı "
            "ve eksik olan eklenti kurulmaya çalışırken hata ile karşılaşıldı. "
            "İlgili eklenti Ahenk'e yüklendiğinde, başarısız olan bu profil "
            "(Başka bir politika tarafından ezilmedikçe) "
            "çalıştırılacaktır"
            " Sorunu çözmek için Lider yapılandırma dosyasındaki eklenti dağıtım "
            "bilgilerinin doğruluğundan ve belirtilen dizinde geçerli eklenti paketinin "
            "bulunduğundan emin olun."
            response = Response(type=MessageType.POLICY_STATUS.value, id=profile.get_id(),
                                code=MessageCode.POLICY_ERROR.value,
                                message="Profil işletilirken eklenti bulunamadı "
                                        "ve eksik olan eklenti kurulurken hata oluştu",
                                execution_id=related_policy[0][1], policy_version=related_policy[0][0],
                                data=json.dumps(data), content_type=ContentType.APPLICATION_JSON.value)
            messenger = Scope.get_instance().get_messenger()
            messenger.send_direct_message(self.message_manager.policy_status_msg(response))
            self.logger.warning(
                'Error message was sent about {0} plugin installation failure while trying to run a profile')

        if plugin_name in self.plugin_manager.delayed_tasks.keys():
            task = self.plugin_manager.delayed_tasks[plugin_name]
            self.logger.warning('An error message sending with related task properties...')

            data = dict()
            data['message'] = "Görev işletilirken eklenti bulunamadı "
            "ve eksik olan eklenti kurulmaya çalışırken hata ile karşılaşıldı. "
            "İlgili eklenti Ahenk'e yüklendiğinde, başarısız olan bu görev "
            "çalıştırılacaktır"
            " Sorunu çözmek için Lider yapılandırma dosyasındaki eklenti dağıtım "
            "bilgilerinin doğruluğundan ve belirtilen dizinde geçerli eklenti paketinin "
            "bulunduğundan emin olun."
            response = Response(type=MessageType.TASK_STATUS.value, id=task.get_id(),
                                code=MessageCode.TASK_ERROR.value,
                                message="Görev işletilirken eklenti bulunamadı "
                                        "ve eksik olan eklenti kurulmaya çalışırken oluştu.",
                                data=json.dumps(data), content_type=ContentType.APPLICATION_JSON.value)
            messenger = Scope.get_instance().get_messenger()
            messenger.send_direct_message(self.message_manager.task_status_msg(response))
            self.logger.warning(
                'Error message was sent about {0} plugin installation failure while trying to run a task')
Esempio n. 28
0
    def __init__(self):
        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.message_manager = scope.get_message_manager()
        self.event_manager = scope.get_event_manager()
        self.messenger = scope.get_messenger()
        self.conf_manager = scope.get_configuration_manager()
        self.db_service = scope.get_db_service()
        self.util = Util()
        self.servicename = 'im.liderahenk.org'
        self.local_user_disable = None

        #self.event_manager.register_event('REGISTRATION_RESPONSE', self.registration_process)
        self.event_manager.register_event('REGISTRATION_SUCCESS',
                                          self.registration_success)
        self.event_manager.register_event('REGISTRATION_ERROR',
                                          self.registration_error)

        self.ldap_login_cancel = ExecuteCancelSSSDAuthentication()
        self.ad_login_cancel = ExecuteCancelSSSDAdAuthentication()
        self.ldap_login = ExecuteSSSDAuthentication()
        self.ad_login = ExecuteSSSDAdAuthentication()

        self.directory_server = None

        if self.is_registered():
            self.logger.debug('Ahenk already registered')
        else:
            self.register(True)
Esempio n. 29
0
 def __init__(self):
     # super(TaskManager, self).__init__()
     scope = Scope.get_instance()
     self.pluginManager = scope.get_plugin_manager()
     self.logger = scope.get_logger()
     self.db_service = scope.get_db_service()
     self.scheduler = scope.get_scheduler()
Esempio n. 30
0
 def get_logger(self):
     try:
         return Scope.get_instance().get_logger()
     except Exception as e:
         self.scope.get_logger().error(
             'A problem occurred while getting logger. Error Message: {0}'.format(str(e)))
         return None
Esempio n. 31
0
    def update_scheduled_task(self, arg):
        self.logger.debug('Working on scheduled task ...')
        update_scheduled_json = json.loads(arg)
        scheduler = Scope.get_instance().get_scheduler()

        if str(update_scheduled_json['cronExpression']).lower(
        ) == 'none' or update_scheduled_json['cronExpression'] is None:
            self.logger.debug('Scheduled task will be removed')
            scheduler.remove_job(int(update_scheduled_json['taskId']))
            self.logger.debug('Task removed from scheduled database')
            self.db_service.update(
                'task', ['deleted'], ['True'],
                'id={0}'.format(update_scheduled_json['taskId']))
            self.logger.debug('Task table updated.')
        else:
            self.logger.debug(
                'Scheduled task cron expression will be updated.')
            self.db_service.update(
                'task', ['cron_expr'],
                [str(update_scheduled_json['cronExpression'])],
                'id={0}'.format(update_scheduled_json['taskId']))
            self.logger.debug('Task table updated.')
            scheduler.remove_job(str(update_scheduled_json['taskId']))
            self.logger.debug('Previous scheduled task removed.')
            scheduler.add_job(
                ScheduleTaskJob(
                    self.get_task_bean_by_id(update_scheduled_json['taskId'])))
            self.logger.debug('New scheduled task added')
Esempio n. 32
0
    def __init__(self):
        super(Logger, self).__init__()
        scope = Scope.get_instance()
        config_manger = scope.get_configuration_manager()

        logging.config.fileConfig(config_manger.get('BASE', 'logConfigurationFilePath'))
        self.logger = logging.getLogger()
Esempio n. 33
0
    def __init__(self):
        super(ExecutionManager, self).__init__()

        scope = Scope.get_instance()
        self.config_manager = scope.get_configuration_manager()
        self.event_manager = scope.get_event_manager()
        self.task_manager = scope.get_task_manager()
        self.messenger = scope.get_messenger()
        self.logger = scope.get_logger()
        self.db_service = scope.get_db_service()
        self.message_manager = scope.get_message_manager()
        self.plugin_manager = scope.get_plugin_manager()
        self.policy_executed = dict()

        self.event_manager.register_event(MessageType.EXECUTE_SCRIPT.value,
                                          self.execute_script)
        self.event_manager.register_event(MessageType.EXECUTE_TASK.value,
                                          self.execute_task)
        self.event_manager.register_event(MessageType.EXECUTE_POLICY.value,
                                          self.execute_policy)
        self.event_manager.register_event(MessageType.INSTALL_PLUGIN.value,
                                          self.install_plugin)
        self.event_manager.register_event(MessageType.RESPONSE_AGREEMENT.value,
                                          self.agreement_update)
        self.event_manager.register_event(
            MessageType.UPDATE_SCHEDULED_TASK.value,
            self.update_scheduled_task)
Esempio n. 34
0
 def __init__(self):
     # super(TaskManager, self).__init__()
     scope = Scope.get_instance()
     self.pluginManager = scope.get_plugin_manager()
     self.logger = scope.get_logger()
     self.db_service = scope.get_db_service()
     self.scheduler = scope.get_scheduler()
Esempio n. 35
0
    def check_registration(self):
        """ docstring"""
        # max_attempt_number = int(System.Hardware.Network.interface_size()) * 3
        max_attempt_number = 1
        # self.logger.debug()
        # logger = Scope.getInstance().getLogger()
        registration = Scope.get_instance().get_registration()

        try:
            #if registration.is_registered() is False:
            #    self.logger.debug('Ahenk is not registered. Attempting for registration')
            #    if registration.registration_request() == False:
            #        self.registration_failed()

            if registration.is_registered() is False:
                print("Registration attemp")
                max_attempt_number -= 1
                self.logger.debug(
                    'Ahenk is not registered. Attempting for registration')
                registration.registration_request(self.register_hostname,
                                                  self.register_user_name,
                                                  self.register_user_password)

                #if max_attempt_number < 0:
                #    self.logger.warning('Number of Attempting for registration is over')
                #    self.registration_failed()
                #    break
        except Exception as e:
            self.registration_failed()
            self.logger.error('Registration failed. Error message: {0}'.format(
                str(e)))
Esempio n. 36
0
 def __init__(self, data, context):
     super(AbstractPlugin, self).__init__()
     scope = Scope.get_instance()
     self.data = data
     self.context = context
     self.logger = self.get_logger()
     self.message_code = self.get_message_code()
Esempio n. 37
0
 def __init__(self):
     scope = Scope().get_instance()
     self.logger = scope.get_logger()
     self.plugin_manager = scope.get_plugin_manager()
     self.message_manager = scope.get_message_manager()
     self.messenger = scope.get_messenger()
     self.conf_manager = scope.get_configuration_manager()
     self.db_service = scope.get_db_service()
     self.execute_manager = scope.get_execution_manager()
Esempio n. 38
0
    def __init__(self):
        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        try:
            self.smtp_host = self.configuration_manager.get('MAIL', 'smtp_host')
            self.smtp_port = int(self.configuration_manager.get('MAIL', 'smtp_port'))
            self.from_username = self.configuration_manager.get('MAIL', 'from_username')
            self.from_password = self.configuration_manager.get('MAIL', 'from_password')
            self.to_address = self.configuration_manager.get('MAIL', 'to_address')

        except Exception as e:
            self.logger.error(
                'A problem occurred while reading mail server parameters from conf file. Error Message: {0}'.format(
                    e))
        self.server = None
        self.logger.debug('Mail service initialized.')
Esempio n. 39
0
    def init_message_response_queue():
        """ docstring"""
        self.logger.debug('init_message_response_queue1')
        response_queue = queue.Queue()

        self.logger.debug('init_message_response_queue2')
        message_response_queue = MessageResponseQueue(response_queue)

        self.logger.debug('init_message_response_queue3')
        message_response_queue.setDaemon(True)

        self.logger.debug('init_message_response_queue4')
        message_response_queue.start()

        self.logger.debug('init_message_response_queue5')
        Scope.get_instance().set_response_queue(response_queue)
        return response_queue
Esempio n. 40
0
    def __init__(self):
        super(Logger, self).__init__()
        scope = Scope.get_instance()
        config_manger = scope.get_configuration_manager()

        logging.config.fileConfig(
            config_manger.get('BASE', 'logConfigurationFilePath'))
        self.logger = logging.getLogger()
Esempio n. 41
0
 def get_logger(self):
     try:
         return Scope.get_instance().get_logger()
     except Exception as e:
         self.scope.get_logger().error(
             'A problem occurred while getting logger. Error Message: {0}'.
             format(str(e)))
         return None
Esempio n. 42
0
    def __init__(self):
        scope = Scope.get_instance()
        self.logger = scope.get_logger()
        self.configurationManager = scope.get_configuration_manager()
        self.db_path = self.configurationManager.get('BASE', 'dbPath')
        self.connection = None
        self.cursor = None

        self.lock = threading.Lock()
Esempio n. 43
0
    def is_registered(self):
        try:
            registration = Scope.get_instance().get_registration()
            if registration.is_registered() is False:
                self.registration_failed()

        except Exception as e:
            self.registration_failed()
            self.logger.error('Registration failed. Error message: {0}'.format(str(e)))
Esempio n. 44
0
    def __init__(self):
        scope = Scope.get_instance()
        self.logger = scope.get_logger()
        self.configurationManager = scope.get_configuration_manager()
        self.db_path = self.configurationManager.get('BASE', 'dbPath')
        self.connection = None
        self.cursor = None

        self.lock = threading.Lock()
Esempio n. 45
0
    def __init__(self):
        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        self.event_manager = scope.get_event_manager()

        self.user_name = str(
            self.configuration_manager.get('CONNECTION', 'ActiveMQ_username'))
        self.password = str(
            self.configuration_manager.get('CONNECTION', 'ActiveMQ_password'))
        self.queue_name_to_read_from = 'q4_' + str(
            self.configuration_manager.get('CONNECTION', 'uid')) + '_2read'
        self.queue_name_to_write_to = 'q4_server_2read'
        self.host_and_port_info = [
            (str(
                self.configuration_manager.get('CONNECTION',
                                               'ActiveMQ_server')),
             str(self.configuration_manager.get('CONNECTION',
                                                'ActiveMQ_port')))
        ]
Esempio n. 46
0
    def __init__(self, name, in_ueue):
        threading.Thread.__init__(self)
        self.name = name
        self.in_queue = in_ueue

        scope = Scope.get_instance()
        self.logger = scope.get_logger()
        self.response_queue = scope.get_response_queue()
        self.messaging = scope.get_message_manager()
        self.db_service = scope.get_db_service()

        self.keep_run = True
        self.context = Context()
Esempio n. 47
0
    def process_task(self, task):

        ##
        scope = Scope().get_instance()
        self.messenger = scope.get_messenger()
        ##

        try:
            plugin_name = task.get_plugin().get_name().lower()
            plugin_ver = task.get_plugin().get_version()

            if self.does_plugin_exist(plugin_name, plugin_ver) and plugin_name in self.plugin_queue_dict:
                self.plugin_queue_dict[plugin_name].put(task, 1)
            else:
                self.logger.warning(
                    '{0} plugin not found. Task was delayed. Ahenk will request plugin from Lider if distribution available'.format(
                        plugin_name, plugin_ver))
                self.delayed_tasks[plugin_name] = task
                msg = self.message_manager.missing_plugin_message(PluginBean(name=plugin_name, version=plugin_ver))
                self.messenger.send_direct_message(msg)
        except Exception as e:
            self.logger.error(
                'Exception occurred while processing task. Error Message: {0}'.format(str(e)))
Esempio n. 48
0
    def __init__(self):
        scope = Scope().get_instance()

        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        self.event_manger = scope.get_event_manager()
        self.execution_manager = scope.get_execution_manager()

        self.my_jid = str(
            self.configuration_manager.get('CONNECTION', 'uid') + '@' + self.configuration_manager.get('CONNECTION',
                                                                                                       'servicename'))
        self.my_pass = str(self.configuration_manager.get('CONNECTION', 'password'))

        ClientXMPP.__init__(self, self.my_jid, self.my_pass)

        self.auto_authorize = True
        self.auto_subscribe = True

        self.hostname = str(socket.gethostbyname(self.configuration_manager.get('CONNECTION', 'host')))
        self.receiver_resource = self.configuration_manager.get('CONNECTION', 'receiverresource')

        if self.configuration_manager.get('CONNECTION', 'use_tls').strip().lower() == 'true':
            self.use_tls = True
        else:
            self.use_tls = False

        self.receiver = self.configuration_manager.get('CONNECTION',
                                                       'receiverjid') + '@' + self.configuration_manager.get(
            'CONNECTION', 'servicename')

        if self.receiver_resource:
            self.receiver += '/' + self.receiver_resource

        self.logger.debug('XMPP Messager parameters were set')

        self.register_extensions()
        self.add_listeners()
Esempio n. 49
0
    def __init__(self, parameter_map):

        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.configuration_manager = scope.get_configuration_manager()
        logging.getLogger("paramiko").setLevel(logging.INFO)

        try:
            self.target_hostname = parameter_map['host']
            self.target_port = parameter_map['port']
            self.target_username = parameter_map['username']
            self.target_path = parameter_map['path']
            self.target_password = None
            self.p_key = None
            if Util.has_attr_json(parameter_map, 'password'):
                self.target_password = parameter_map['password']
            else:
                self.p_key = parameter_map['pkey']
        except Exception as e:
            self.logger.error(
                'A problem occurred while parsing ssh connection parameters. Error Message: {0}'.format(str(e)))

        self.connection = None
        self.logger.debug('Parameters set up')
Esempio n. 50
0
    def __init__(self):
        super(PluginManager, self).__init__()
        self.scope = Scope.get_instance()
        self.config_manager = self.scope.get_configuration_manager()
        self.db_service = self.scope.get_db_service()
        self.message_manager = self.scope.get_message_manager()
        self.logger = self.scope.get_logger()

        self.plugins = []
        self.plugin_queue_dict = dict()

        # self.listener = \
        self.install_listener()
        self.delayed_profiles = dict()
        self.delayed_tasks = dict()
Esempio n. 51
0
    def __init__(self):
        scope = Scope().get_instance()
        self.logger = scope.get_logger()
        self.message_manager = scope.get_message_manager()
        self.event_manager = scope.get_event_manager()
        self.messenger = scope.get_messenger()
        self.conf_manager = scope.get_configuration_manager()
        self.db_service = scope.get_db_service()

        self.event_manager.register_event('REGISTRATION_RESPONSE', self.registration_process)

        if self.is_registered():
            self.logger.debug('Ahenk already registered')
        else:
            self.register(True)
Esempio n. 52
0
    def check_registration(self):
        """ docstring"""
        max_attempt_number = int(System.Hardware.Network.interface_size()) * 3
        # self.logger.debug()
        # logger = Scope.getInstance().getLogger()
        registration = Scope.get_instance().get_registration()

        try:
            while registration.is_registered() is False:
                max_attempt_number -= 1
                self.logger.debug('Ahenk is not registered. Attempting for registration')
                registration.registration_request()
                if max_attempt_number < 0:
                    self.logger.warning('Number of Attempting for registration is over')
                    self.registration_failed()
                    break
        except Exception as e:
            self.logger.error('Registration failed. Error message: {0}'.format(str(e)))
Esempio n. 53
0
    def __init__(self):
        super(ExecutionManager, self).__init__()

        scope = Scope.get_instance()
        self.config_manager = scope.get_configuration_manager()
        self.event_manager = scope.get_event_manager()
        self.task_manager = scope.get_task_manager()
        self.messenger = scope.get_messenger()
        self.logger = scope.get_logger()
        self.db_service = scope.get_db_service()
        self.message_manager = scope.get_message_manager()
        self.plugin_manager = scope.get_plugin_manager()
        self.policy_executed = dict()

        self.event_manager.register_event(MessageType.EXECUTE_SCRIPT.value, self.execute_script)
        self.event_manager.register_event(MessageType.EXECUTE_TASK.value, self.execute_task)
        self.event_manager.register_event(MessageType.EXECUTE_POLICY.value, self.execute_policy)
        self.event_manager.register_event(MessageType.INSTALL_PLUGIN.value, self.install_plugin)
        self.event_manager.register_event(MessageType.RESPONSE_AGREEMENT.value, self.agreement_update)
        self.event_manager.register_event(MessageType.UPDATE_SCHEDULED_TASK.value, self.update_scheduled_task)
Esempio n. 54
0
    def __init__(self, task):
        scope = Scope.get_instance()

        self.logger = scope.get_logger()
        self.task_manager = scope.get_task_manager()
        self.plugin_manager = scope.get_plugin_manager()
        self.task = task
        cron_sj = self.parse_cron_str(task.get_cron_str())
        try:
            if cron_sj:
                self.mins = self.conv_to_set(cron_sj[0])
                self.hours = self.conv_to_set(cron_sj[1])
                self.days = self.conv_to_set(cron_sj[2])
                self.months = self.conv_to_set(cron_sj[3])
                self.dow = self.conv_to_set(cron_sj[4])
                self.action = self.process_task
            self.logger.debug('Instance created.')
        except Exception as e:
            self.logger.error(
                'A problem occurred while creating instance of ScheduleTaskJob. Error Message : {0}'.format(
                    str(e)))
Esempio n. 55
0
    def update_scheduled_task(self, arg):
        self.logger.debug('Working on scheduled task ...')
        update_scheduled_json = json.loads(arg)
        scheduler = Scope.get_instance().get_scheduler()

        if str(update_scheduled_json['cronExpression']).lower() == 'none' or update_scheduled_json[
            'cronExpression'] is None:
            self.logger.debug('Scheduled task will be removed')
            scheduler.remove_job(int(update_scheduled_json['taskId']))
            self.logger.debug('Task removed from scheduled database')
            self.db_service.update('task', ['deleted'], ['True'],
                                   'id={0}'.format(update_scheduled_json['taskId']))
            self.logger.debug('Task table updated.')
        else:
            self.logger.debug('Scheduled task cron expression will be updated.')
            self.db_service.update('task', ['cron_expr'], [str(update_scheduled_json['cronExpression'])],
                                   'id={0}'.format(update_scheduled_json['taskId']))
            self.logger.debug('Task table updated.')
            scheduler.remove_job(str(update_scheduled_json['taskId']))
            self.logger.debug('Previous scheduled task removed.')
            scheduler.add_job(ScheduleTaskJob(self.get_task_bean_by_id(update_scheduled_json['taskId'])))
            self.logger.debug('New scheduled task added')
Esempio n. 56
0
 def init_messaging():
     """ docstring"""
     message_manager = Messaging()
     Scope.get_instance().set_message_manager(message_manager)
     return message_manager
 def __init__(self, protocol, parameter_map):
     scope = Scope().get_instance()
     self.logger = scope.get_logger()
     self.configuration_manager = scope.get_configuration_manager()
     self.transporter = self.get_instance(protocol, parameter_map)
Esempio n. 58
0
 def __init__(self):
     scope = Scope().get_instance()
     self.logger = scope.get_logger()
     self.conf_manager = scope.get_configuration_manager()
     self.db_service = scope.get_db_service()
     self.event_manger = scope.get_event_manager()
 def __init__(self, outQueue):
     super(MessageResponseQueue, self).__init__()
     scope = Scope.get_instance()
     self.logger = scope.get_logger()
     self.messageManager = scope.get_messenger()
     self.outQueue = outQueue
Esempio n. 60
0
 def __init__(self):
     self.events = []
     self.keep_run = True
     self.logger = Scope.get_instance().get_logger()
     self.scheduledb = ScheduleTaskDB()