def run(self): try: self.agent_port = int( self.config.get('network', 'agent-port', '9099')) self.debug_mode = self.config.getboolean('system', 'debug') self.multi_thread = self.config.getboolean('system', 'multi-thread') # 不用注册远程方法了 # self.tell_online_services() # 暂时不用 # self.post_ip() # self.post_host_info() result = post_url('%s/openStack/initRegister' % remote_base_url, payload=get_nfs_disk()) post_url('%s/openStack/nodeRegister' % remote_base_url, payload=get_sytem_info()) print('register result: ', result) self.app.run(host='0.0.0.0', port=self.agent_port, debug=self.debug_mode, use_reloader=self.debug_mode, threaded=self.multi_thread) except Exception as e: print_exception(__name__, e)
def run(self): try: #读取配置文件 self.agent_port = int( self.config.get('network', 'agent-port', '9099')) self.debug_mode = self.config.getboolean('system', 'debug') self.multi_thread = self.config.getboolean('system', 'multi-thread') # Tell switch server about what service is online # self.tell_online_services() # self.post_ip() # 获取磁盘信息保存到全局变量中 self.post_host_info() # vmpath=self.global_wrapper('json@storage:disk') vmpath = { 'disk': [get_vm_disks_for_enc(), getip(), self.agent_port] } post_url('%s/oVirt/initRegister' % remote_base_url, payload=vmpath) post_url('%s/oVirt/nodeRegister' % remote_base_url, payload=get_sytem_info()) print 'value: ', vmpath print 'system: ', get_sytem_info() # vmpath.write() # Run services self.app.run(host='0.0.0.0', port=self.agent_port, debug=self.debug_mode, use_reloader=self.debug_mode, threaded=self.multi_thread) except Exception, e: print_exception(__name__, e)
def unregister_service(service_name, version): try: with connection.connect_db() as (db): db.execute_and_commit( ['DELETE FROM servtag_table WHERE name=? AND version=?'], [[(service_name, version)]]) except Exception as e: print_exception(__name__, e)
def register_service(service_name, version): try: with connection.connect_db() as (db): # print '%s %s '% (service_name, version) res = db.query( "SELECT name FROM servtag_table WHERE name='%s' AND version='%s'" % (service_name, version)) if not res: db.execute_and_commit( ['INSERT INTO servtag_table VALUES (?, ?)'], [[(service_name, version)]]) except Exception as e: print_exception(__name__, e)
def __init__(self, module_name): self.module_name = module_name self.modules = None self.local_key = None # Agent port self.agent_port = None # Debug mode switch self.debug_mode = True # Multi-thread mode switch self.multi_thread = False # Servtag online table self.services_online = [] global server_port global agent_version global remote_base_url # Load configuration try: config_name = '%s.conf' % __name__ self.config = ConfigParser() self.config.read(config_name) self.agent_port = int( self.config.get('network', 'agent-port', '9099')) server_port = int(self.config.get('network', 'server-port', '8083')) db_filename = self.config.get('database', 'file', ':memory:') agent_version = self.config.get('system', 'version', '1.0.3') remote_base_url = self.config.get('network', 'server-base', 'http://localhost:8083') self.local_key = self.config.get('module', 'local-key', 'agent_path') paths = self.config.get('module', 'path', '') if paths: self.modules = str(paths).split(';') # Prepare database connection(db_filename).prepare() # Load Server Base URL # load_remote_base_url_from_local() # Initialize service self.app = Flask(self.module_name) # register_api_resources(Api(self.app), API_MAP, '/switch/agent') register_api_resources(Api(self.app), API_MAP, '') except Exception, e: print 'Error on initialization.\nPlease check if the config file name is "%s"' % config_name print_exception(__name__, e)
def openvas_version(args): from lib.utility import print_exception try: from vas.openvas import omp_wrapper RESPONSE_FAILURE = 'Unknown' omp = omp_wrapper(agent.global_wrapper) if omp is None: return RESPONSE_FAILURE version_info = omp.get_version() return version_info if version_info else RESPONSE_FAILURE except BaseException, e: print_exception(__name__, e)
def openvas_available(args): from lib.utility import print_exception try: from vas.openvas import omp_wrapper RESPONSE_FAILURE = {'status': 0} RESPONSE_SUCCESS = {'status': 1} omp = omp_wrapper(agent.global_wrapper) if omp is None: return RESPONSE_FAILURE available = omp.ping() return RESPONSE_SUCCESS if available else RESPONSE_FAILURE except BaseException, e: print_exception(__name__, e)
def run(self): try: self.agent_port = int( self.config.get('network', 'agent-port', '9099')) self.debug_mode = self.config.getboolean('system', 'debug') self.multi_thread = self.config.getboolean('system', 'multi-thread') # 不用注册远程方法了 # self.tell_online_services() # 暂时不用 # self.post_ip() # self.post_host_info() self.app.run(host='0.0.0.0', port=self.agent_port, debug=self.debug_mode, use_reloader=self.debug_mode, threaded=self.multi_thread) except Exception as e: print_exception(__name__, e)
def __init__(self, module_name): global agent_version global remote_base_url global server_port self.module_name = module_name self.modules = None self.local_key = None self.agent_port = None self.debug_mode = True self.multi_thread = False self.services_online = [] try: config_name = '%s.conf' % __name__ self.config = ConfigParser() self.config.read(config_name) server_port = int(self.config.get('network', 'server-port', '5000')) db_filename = self.config.get('database', 'file', ':memory:') agent_version = self.config.get('system', 'version', '1.0.3') #remote base url remote_base_url = self.config.get('network', 'server-base', 'http://localhost:5000') self.local_key = self.config.get('module', 'local-key', 'agent_path') paths = self.config.get('module', 'path', '') if paths: self.modules = str(paths).split(';') # connection database connection(db_filename).prepare() self.app = Flask(self.module_name) # register_api_resources(Api(self.app), API_MAP, '/switch/agent/') register_api_resources(Api(self.app), API_MAP, '') except Exception as e: print 'Error on initialization.\nPlease check if the config file name is "%s"' % config_name print_exception(__name__, e) return
def openvas_testcase(subtask_id, args): from lib.utility import uuid, print_exception from time import sleep TASK_WAIT_INTERVAL = 10 try: if not args: raise BaseException('openvas_testcase(): argument is invalid') from vas.openvas import omp_wrapper omp = omp_wrapper(agent.global_wrapper) if omp is None: raise BaseException('openvas_testcase(): can not open openvas-cli') config_name = args['config'] task_name = args['name'] task_comment = args['comment'] targets = args['targets'] target_id = None targets_got, xml_root = omp.get_targets() if targets_got: hosts_set = set(targets) for target in targets_got: hosts1 = set(target['hosts']) if hosts_set == hosts1: target_id = target['id'] if not target_id: target_id = omp.create_target(name='Target for %s [%s]' % (task_name, uuid()), ip_list=targets) if not target_id: raise BaseException('openvas_testcase(): target create failed') configs, xml_root = omp.get_configs(name=config_name) if not configs: raise BaseException('openvas_testcase(): can not find scan config') config = configs[0] config_id = config['id'] task_id = omp.create_task(name='%s [%s]' % (task_name, uuid()), comment=task_comment, config_id=config_id, target_id=target_id) if not task_id: raise BaseException('openvas_testcase(): task create failed') if not omp.start_task(task_id=task_id): raise BaseException('openvas_testcase(): task start failed') bad_count = 0 report_id = None while True: sleep(TASK_WAIT_INTERVAL) tasks, xml_root = omp.get_tasks(task_id=task_id) if tasks: task = tasks[0] status = task['status'] if status and status == 'Done': report_id = task['last_report_id'] break else: bad_count += 1 if bad_count > 2: raise BaseException('openvas_testcase(): can not read task info') if not report_id: raise BaseException('openvas_testcase(): bad report id') reports, xml_root = omp.get_reports(report_id=report_id) if not reports: raise BaseException('openvas_testcase(): can not read report by report id: %s' % report_id) report = reports[0] brief = '' detail = '' severity = 0.0 vulns_count = report['vulns_count'] results = report['results'] if results: for result in results: try: current_severity = result['severity'] if current_severity > severity: severity = current_severity except: pass agent.post_report(subtask_id, severity=severity, result=1 if vulns_count else 0, brief=brief, detail=detail, json_data=report) except BaseException, e: print_exception(__name__, e) agent.post_failure(subtask_id=subtask_id)