def listen_task(self): ''' 持续监听,访问server,监听是否存在未完成的task 若server有返回task信息,则将task信息写入task pool ''' while self.flag: try: serverurl = 'http://' + self.server + '/dist_hi.php' postdata = { 'token': self.token, 'os': self.os, 'mac': self.mac, 'type': 'start' } r = requests.post(serverurl, data=postdata) # print r.status_code if r.status_code == 200: # print r.text ret = json.loads(r.text) code = ret['code'] info = ret['info'] data = ret['data'] globalTaskVar.logger.debug( 'worker: hello server, any task?') globalTaskVar.logger.debug('server: %s' % info) # 添加一个任务 if code and 'no task' not in info: # data = base64.decodestring(data) pprint(data) data['global']['server'] = self.server data['global']['token'] = self.token target = data['targetname'] conffile = BASEDIR + '/cache/conf/' + genFileName_v2( target) + '.json' json.dump(data, open(conffile, 'w')) globalTaskVar.logger.info('[*] new task %s' % target) globalTaskVar.logger.info('%s' % pformat(data)) if type(data) == dict: self.lock.acquire() self.tasks.append(data) self.lock.release() # 终止一个任务 else: globalTaskVar.logger.error( 'return error, please check token and server') pass except requests.HTTPError, e: globalTaskVar.logger.error('requests.HTTPError %s' % e) time.sleep(10)
def listen_task(self): ''' 持续监听,访问server,监听是否存在未完成的task 若server有返回task信息,则将task信息写入task pool ''' while self.flag: try: serverurl = 'http://' + self.server +'/dist_hi.php' postdata = {'token':self.token,'os':self.os,'mac':self.mac,'type':'start'} r = requests.post(serverurl,data=postdata) # print r.status_code if r.status_code == 200: # print r.text ret = json.loads(r.text) code = ret['code'] info = ret['info'] data = ret['data'] globalTaskVar.logger.debug('worker: hello server, any task?') globalTaskVar.logger.debug('server: %s' % info) # 添加一个任务 if code and 'no task' not in info: # data = base64.decodestring(data) pprint(data) data['global']['server'] = self.server data['global']['token'] = self.token target = data['targetname'] conffile = BASEDIR + '/cache/conf/' + genFileName_v2(target) + '.json' json.dump(data,open(conffile,'w')) globalTaskVar.logger.info('[*] new task %s' % target) globalTaskVar.logger.info('%s' % pformat(data)) if type(data)==dict: self.lock.acquire() self.tasks.append(data) self.lock.release() # 终止一个任务 else: globalTaskVar.logger.error('return error, please check token and server') pass except requests.HTTPError,e: globalTaskVar.logger.error('requests.HTTPError %s' %e) time.sleep(10)
def deal_task(self): ''' 持续执行task ''' while self.flag: try: if len(self.tasks): self.lock.acquire() arg = self.tasks[0] del(self.tasks[0]) self.lock.release() target = arg['targetname'] conffile = BASEDIR + '/cache/conf/' + genFileName_v2(target) + '.json' p = multiprocessing.Process(target=self.deal_onetask,args=(conffile,)) p.start() except Exception,e: globalTaskVar.logger.error('Exception: %s' % e) time.sleep(20)
def deal_task(self): ''' 持续执行task ''' while self.flag: try: if len(self.tasks): self.lock.acquire() arg = self.tasks[0] del (self.tasks[0]) self.lock.release() target = arg['targetname'] conffile = BASEDIR + '/cache/conf/' + genFileName_v2( target) + '.json' p = multiprocessing.Process(target=self.deal_onetask, args=(conffile, )) p.start() except Exception, e: globalTaskVar.logger.error('Exception: %s' % e) time.sleep(20)
_target = config['global']['target'] if _threads: config['global']['threads'] = _threads else: _threads = config['global']['threads'] if _vv: config['global']['loglevel'] = _vv else: _vv = config['global']['loglevel'] if _gather_depth: config['global']['gatherdepth'] = _gather_depth else: _gather_depth = config['global']['gatherdepth'] globalVar.config = dict(config) conffile = 'cache/conf/' + genFileName_v2(_target) + '.json' json.dump(globalVar.config,open(conffile,'w')) if '_plugin' in dir() and _plugin: # 单插件模式 # plugin type scan sn = PluginMultiRunner(server=_server,token=_token,target=_target,loglevel=_vv,threads=_threads,pluginfilepath=_plugin,pluginargs=_plugin_arg) sn.initInfo() sn.scan() else: # 自收集模式 sn = Scanner(conffile=conffile) sn.safeRun() # sn.initInfo() # sn.infoGather()
_target = config['global']['target'] if _threads: config['global']['threads'] = _threads else: _threads = config['global']['threads'] if _vv: config['global']['loglevel'] = _vv else: _vv = config['global']['loglevel'] if _gather_depth: config['global']['gatherdepth'] = _gather_depth else: _gather_depth = config['global']['gatherdepth'] globalVar.config = dict(config) conffile = 'cache/conf/' + genFileName_v2(_target) + '.json' json.dump(globalVar.config, open(conffile, 'w')) if '_plugin' in dir() and _plugin: # 单插件模式 # plugin type scan sn = PluginMultiRunner(server=_server, token=_token, target=_target, loglevel=_vv, threads=_threads, pluginfilepath=_plugin, pluginargs=_plugin_arg) sn.initInfo() sn.scan() else: