def __run__(self, tasks_queue, stop_flag, queue_wait): """[summary] 사용자가 작성할 run() 함수의 Wrapper Arguments: tasks_queue {instnace} -- [description] 작업 큐 stop_flag {instance} -- [description] 프로세스 종료여부 Flag queue_wait {int} -- [description] 다음 Queue 확인까지 대기 시간 """ try: # 전처리 # Log 초기화 Log.init(log_name="work", log_level=config.log_level, log_path=config.log_path, log_cmd=config.log_cmd) # 처리 self.run(tasks_queue, stop_flag, queue_wait) # 후처리 except: _, msg, obj = sys.exc_info() msg = "{} ({}::{})".format(msg, obj.tb_lineno, obj.tb_frame.f_globals.get("__file__")) Log.error(msg) finally: pass
def __run__(self, scanResult, scanObject): """[summary] 분석 엔진 run() 의 Wrapper Arguments: scanResult {instance} -- [description] ScanResult 인스턴스 scanObject {instance} -- [description] ScanObject 인스턴스 """ error = False err_msg = "" try: # Log 초기화 Log.init(log_name=self.__engine__.split(".")[-1], log_level=config.log_level, log_path=config.log_path, log_cmd=config.log_cmd) # Log.info("{} : {}".format(self.__engine__, scanObject.get_file_name())) Log.info(self.__engine__) # 전처리 # 호출 모듈명을 저장한다. scanObject.updateScanModule(self.__engine__) # 상태를 변경한다. # monitoring.__analyzing__(scanObject) # 분석 self.run(scanResult, scanObject) # 후처리 except: # 에러로그를 작성한다. _, msg, obj = sys.exc_info() msg = "{} ({}::{})".format(msg, obj.tb_lineno, obj.tb_frame.f_globals.get("__file__")) Log.error(msg) # 에러 상태를 업데이트한다. error = True err_msg = msg finally: scanObject.updateResult(error, err_msg)
def __run__(self, task_queue, result_queue): error = False err_msg = "" try: # Log 초기화 Log.init(log_name=self.__engine__.split(".")[1], log_level=config.log_level, log_path=config.log_path, log_cmd=config.log_cmd) # 전처리 # Job을 가져온다. scanResult, scanObject = task_queue.get() # 호출 모듈명을 저장한다. scanObject.updateScanModule(self.__engine__) # 상태를 변경한다. monitoring.__analyzing__(scanObject) # 분석 self.run(scanResult, scanObject) except: # 에러로그를 작성한다. _, msg, obj = sys.exc_info() msg = "{} ({}::{})".format(msg, obj.tb_lineno, obj.tb_frame.f_globals.get("__file__")) Log.error(msg) # 에러 상태를 업데이트한다. error = True err_msg = msg finally: # 후처리 # 분석 결과를 저장한다. scanObject.updateResult(error, err_msg) # 분석 결과를 반환한다. dict_data = scanObject.to_dict() serialized_data = utils.convert_dict2serialize(dict_data) result_queue.put(utils.compress(serialized_data))
return None, None finally: pass if __name__ == "__main__": try: # 외부 설정 정보 가져오기 parser, args = parse_argument() if parser is None or args is None: raise SystemExit # 로그 설정 Log.init(log_level=config.log_level, log_path=config.log_path, log_cmd=config.log_cmd) # 시작 로그 Log.info("[*] start") # 메인함수 시작 jobs.start(args) # 종료 로그 Log.info("[*] done") except SystemExit: pass except: