def unregister_msg(self, usernameForCheck, passwordForCheck): data = dict() data['type'] = 'UNREGISTER' data['from'] = str(self.conf_manager.get('CONNECTION', 'uid')) data['password'] = str(self.conf_manager.get('CONNECTION', 'password')) # unregistration from commandline.. if (usernameForCheck == None and passwordForCheck == None): # user_name = self.db_service.select_one_result('session', 'username') user_name = Util.get_as_user() display = self.db_service.select_one_result('session', 'display') #user_name = os.getlogin() #display = Util.get_username_display() self.logger.debug('User : '******'Makineyi etki alanından çıkarmak için zorunlu alanları giriniz. Lütfen DEVAM EDEN İŞLEMLERİNİZİ sonlandırdığınıza emin olunuz !', 'ETKI ALANINDAN ÇIKARMA') self.logger.debug('pout : ' + str(pout)) field_values = pout.split(' ') user_registration_info = list(field_values) if len(user_registration_info) > 1: data['userName'] = user_registration_info[0] data['userPassword'] = user_registration_info[1] else: return None else: data['userName'] = usernameForCheck data['userPassword'] = passwordForCheck #data['macAddresses'] = str(self.conf_manager.get('REGISTRATION', 'macAddresses')) #data['ipAddresses'] = str(self.conf_manager.get('REGISTRATION', 'ipAddresses')) #data['hostname'] = str(self.conf_manager.get('REGISTRATION', 'hostname')) # data['username'] = str(pwd.getpwuid( os.getuid() )[ 0 ]) data['timestamp'] = Util.timestamp() json_data = json.dumps(data) self.logger.debug('Unregister message was created') return json_data
def run(self): while self.keep_run: try: try: item_obj = self.in_queue.get(block=True) obj_name = item_obj.obj_name except Exception as e: self.logger.error( '[Plugin] A problem occurred while executing process. Error Message: {0}' .format(str(e))) if obj_name == "TASK": self.logger.debug('[Plugin] Executing task') self.context.put('task_id', item_obj.get_id()) if item_obj.get_file_server( ) is not None and item_obj.get_file_server() != 'null': self.context.put( 'protocol', json.loads(item_obj.get_file_server())['protocol']) self.context.put( 'parameterMap', json.loads( item_obj.get_file_server())['parameterMap']) if type(item_obj.get_parameter_map()) == str: task_data = json.loads(item_obj.get_parameter_map()) elif type(item_obj.get_parameter_map()) == dict: task_data = item_obj.get_parameter_map() # check if mail send is actve or not and set mail params to context object.. plugins get mail params via context object self.context.set_mail_send( task_data['mailSend'] if 'mailSend' in task_data else False) self.context.set_mail_subject( task_data['mailSubject'] if 'mailSubject' in task_data else '') self.context.set_mail_content( task_data['mailContent'] if 'mailContent' in task_data else '') self.logger.debug( '[Plugin] Sending notify to user about task process') if System.Sessions.user_name() is not None and len( System.Sessions.user_name( )) > 0 and self.is_user_notify_active == 1: for user in System.Sessions.user_name(): Util.send_notify( "Lider Ahenk", "{0} eklentisi şu anda bir görev çalıştırıyor." .format(self.getName()), System.Sessions.display(user), user) self.context.put('taskData', task_data) self.context.put('taskId', item_obj.get_id()) self.logger.debug('[Plugin] Handling task') Scope.get_instance().get_plugin_manager().find_command( self.getName(), item_obj.get_plugin().get_version(), item_obj.get_command_cls_id().lower()).handle_task( ast.literal_eval(str(task_data)), self.context) if self.context.data is not None and self.context.get( 'responseCode') is not None: self.logger.debug('[Plugin] Creating response') response = Response( type=MessageType.TASK_STATUS.value, id=item_obj.get_id(), code=self.context.get('responseCode'), message=self.context.get('responseMessage'), data=self.context.get('responseData'), content_type=self.context.get('contentType')) if response.get_data() and response.get_content_type( ) != ContentType.APPLICATION_JSON.value: success = False try: file_manager = FileTransferManager( json.loads(item_obj.get_file_server()) ['protocol'], json.loads(item_obj.get_file_server()) ['parameterMap']) file_manager.transporter.connect() md5 = str( json.loads(response.get_data())['md5']) success = file_manager.transporter.send_file( System.Ahenk.received_dir_path() + md5, md5) file_manager.transporter.disconnect() except Exception as e: self.logger.error( '[Plugin] A problem occurred while file transferring. Error Message :{0}' .format(str(e))) self.logger.debug('[Plugin] Sending response') message = self.messaging.task_status_msg(response) if success is False: response = Response( type=MessageType.TASK_STATUS.value, id=item_obj.get_id(), code=MessageCode.TASK_ERROR.value, message= 'Task processed successfully but file transfer not completed. Check defined server conf' ) message = self.messaging.task_status_msg( response) Scope.get_instance().get_messenger( ).send_direct_message(message) else: self.logger.debug('[Plugin] Sending task response') Scope.get_instance().get_messenger( ).send_direct_message( self.messaging.task_status_msg(response)) else: self.logger.error( '[Plugin] There is no Response. Plugin must create response after run a task!' ) elif obj_name == "PROFILE": self.logger.debug('[Plugin] Executing profile') profile_data = item_obj.get_profile_data() self.context.put('username', item_obj.get_username()) json_profile_data = json.loads(profile_data) self.context.set_mail_send( json_profile_data['mailSend'] if 'mailSend' in json_profile_data else False) self.context.set_mail_subject( json_profile_data['mailSubject'] if 'mailSubject' in json_profile_data else '') self.context.set_mail_content( json_profile_data['mailContent'] if 'mailContent' in json_profile_data else '') execution_id = self.get_execution_id(item_obj.get_id()) policy_ver = self.get_policy_version(item_obj.get_id()) self.context.put('policy_version', policy_ver) self.context.put('execution_id', execution_id) # if item_obj.get_file_server() is not None and item_obj.get_file_server() !='null': # self.context.put('protocol', json.loads(item_obj.get_file_server())['protocol']) # self.context.put('parameterMap', json.loads(item_obj.get_file_server())['parameterMap']) self.logger.debug( '[Plugin] Sending notify to user about profile process' ) # Util.send_notify("Lider Ahenk", # "{0} eklentisi şu anda bir profil çalıştırıyor.".format(self.getName()), # System.Sessions.display(item_obj.get_username()), # item_obj.get_username()) display = System.Sessions.display(item_obj.get_username()) if Util.get_desktop_env() == "gnome": display = Util.get_username_display_gnome( Util.get_username()) if self.is_user_notify_active == 1: Util.send_notify( "Lider Ahenk", "{0} eklentisi şu anda bir profil çalıştırıyor.". format(self.getName()), display, Util.get_as_user()) self.logger.debug('[Plugin] Handling profile') Scope.get_instance().get_plugin_manager( ).find_policy_module( item_obj.get_plugin().get_name()).handle_policy( profile_data, self.context) if self.context.data is not None and self.context.get( 'responseCode') is not None: self.logger.debug('[Plugin] Creating response') response = Response( type=MessageType.POLICY_STATUS.value, id=item_obj.get_id(), code=self.context.get('responseCode'), message=self.context.get('responseMessage'), data=self.context.get('responseData'), content_type=self.context.get('contentType'), execution_id=execution_id, policy_version=policy_ver) if response.get_data() and response.get_content_type( ) != ContentType.APPLICATION_JSON.value: success = False try: file_manager = FileTransferManager( json.loads(item_obj.get_file_server()) ['protocol'], json.loads(item_obj.get_file_server()) ['parameterMap']) file_manager.transporter.connect() md5 = str( json.loads(response.get_data())['md5']) success = file_manager.transporter.send_file( System.Ahenk.received_dir_path() + md5, md5) file_manager.transporter.disconnect() except Exception as e: self.logger.error( '[Plugin] A problem occurred while file transferring. Error Message :{0}' .format(str(e))) self.logger.debug('[Plugin] Sending response') message = self.messaging.task_status_msg(response) if success is False: response = Response( type=MessageType.POLICY_STATUS.value, id=item_obj.get_id(), code=MessageCode.POLICY_ERROR.value, message= 'Policy processed successfully but file transfer not completed. Check defined server conf' ) message = self.messaging.task_status_msg( response) Scope.get_instance().get_messenger( ).send_direct_message(message) else: self.logger.debug( '[Plugin] Sending profile response') Scope.get_instance().get_messenger( ).send_direct_message( self.messaging.policy_status_msg(response)) else: self.logger.error( '[Plugin] There is no Response. Plugin must create response after run a policy!' ) elif 'MODE' in obj_name: module = Scope.get_instance().get_plugin_manager( ).find_module(obj_name, self.name) if module is not None: if item_obj.obj_name in ('LOGIN_MODE', 'LOGOUT_MODE', 'SAFE_MODE'): self.context.put('username', item_obj.username) try: self.logger.debug( '[Plugin] {0} is running on {1} plugin'.format( str(item_obj.obj_name), str(self.name))) module.handle_mode(self.context) except Exception as e: self.logger.error( '[Plugin] A problem occurred while running {0} on {1} plugin. Error Message: {2}' .format(str(obj_name), str(self.name), str(e))) if item_obj.obj_name is 'SHUTDOWN_MODE': self.logger.debug( '[Plugin] {0} plugin is stopping...'.format( str(self.name))) self.keep_run = False else: self.logger.warning( "[Plugin] Not supported object type: {0}".format( str(obj_name))) self.context.empty_data() except Exception as e: self.logger.error( "[Plugin] Plugin running exception. Exception Message: {0} " .format(str(e)))