def __runPlugins(self,filename): # 获得模块名称 plugins_name=os.path.splitext(filename)[0] # 导入模块 plugin=__import__("plugin."+plugins_name,fromlist=[plugins_name]) # 获得模块对象 clazz=plugin.getPluginClass() o=clazz() # 把自身传给模块 o.setScan_Main(self) ## 开始处理 # 任务列表 t=Db_module() # 每次运行先 all_item=t.find_all("select * from w3a_Scan_Task where t_status_num=2") if all_item: print all_item else: print None
def __mainProgram(self): # 加载数据库钥匙,并初始化对象 db_key=Db_module() # 更新数据,将前30条未初始化的任务设置为待调度的状态 db_key.execute_sql("update w3a_Scan_Task set t_status_num=1 where t_status_num=0 limit 30") # 查出10条已经待调度状态的扫描任务,并进行处理 while True: ## 1\将任务读取出来并存储 temp_data=db_key.find_all("select * from w3a_Scan_Task where t_status_num=1 limit 10") if temp_data>0: ## 2\将取出的任务状态更新为正在扫描状态 db_key.execute_sql("update w3a_Scan_Task set t_status_num=2 where t_status_num=1 limit 10") ## 3\分析T_type任务类型 for t_data in temp_data: # 如果是Web扫描 if t_data[2]==0: # 选择对应的扫描模板 t_scan_temp=db_key.find_all("select tl_mode,tl_switch from w3a_Scan_Task_Template where id="+t_data[3]+" and tl_type=0") if t_scan_temp: # 判断该模板是否启用 if t_scan_temp[1]==0: module_name=t_scan_temp[0].split(';') # 传入任务ID\任务目标\模块名称 self.__loadPlugins(t_data[0],t_data[6],module_name) else: # 如果没有启用,则直接更新任务状态为异常停止 db_key.execute_sql("update w3a_Scan_Task set t_status_num=4,t_status=100 where id="+temp_data[0]) continue else: db_key.execute_sql("update w3a_Scan_Task set t_status_num=4,t_status=100 where id="+temp_data[0]) continue elif t_data[2]==1: pass else: break