You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.4 KiB
52 lines
2.4 KiB
from flask import Blueprint |
|
from flask_restful import reqparse, Resource, Api |
|
from flask_apscheduler import APScheduler |
|
from units import token_auth,consul_kv |
|
import json |
|
from .jobs import deljob,addjob,runjob |
|
blueprint = Blueprint('avd',__name__) |
|
api = Api(blueprint) |
|
|
|
parser = reqparse.RequestParser() |
|
parser.add_argument('avd_config_dict',type=dict) |
|
|
|
class Avd(Resource): |
|
decorators = [token_auth.auth.login_required] |
|
def get(self,stype): |
|
if stype == 'list': |
|
avd_dict = consul_kv.get_kv_dict('ConsulManager/avd/list') |
|
avd_list = list(avd_dict.values()) |
|
return {'code': 20000, 'avd_list': avd_list} |
|
if stype == 'config': |
|
avd_config = consul_kv.get_value('ConsulManager/avd/switch') |
|
return {'code': 20000, 'avd_config': avd_config} |
|
def post(self,stype): |
|
if stype == 'config': |
|
args = parser.parse_args() |
|
avd_config_dict = args['avd_config_dict'] |
|
consul_kv.put_kv('ConsulManager/avd/switch',avd_config_dict) |
|
avd_job_id = 'avd_list' |
|
avd_job_func = '__main__:avd_list.get_avd' |
|
avd_job_args = [] |
|
avd_job_interval = 60 |
|
if avd_config_dict['switch']: |
|
addjob(avd_job_id,avd_job_func,avd_job_args,avd_job_interval) |
|
avd_job_dict = {'id':avd_job_id,'func':avd_job_func,'args':avd_job_args,'minutes':avd_job_interval, |
|
'trigger': 'interval','replace_existing': True} |
|
consul_kv.put_kv('ConsulManager/avd/jobs/avd_list',avd_job_dict) |
|
runjob(avd_job_id) |
|
return {'code': 20000, 'data': '漏洞采集通知功能开启!'} |
|
else: |
|
deljob(avd_job_id) |
|
consul_kv.del_key('ConsulManager/avd/jobs/avd_list') |
|
consul_kv.del_key_all('ConsulManager/avd/list/') |
|
return {'code': 20000, 'data': '漏洞采集通知功能关闭!'} |
|
if stype == 'run': |
|
avd_config_dict = consul_kv.get_value('ConsulManager/avd/switch') |
|
if avd_config_dict.get('switch',False): |
|
consul_kv.del_key('ConsulManager/avd/list/0') |
|
runjob('avd_list') |
|
return {'code': 20000, 'data': '漏洞采集通知执行成功!'} |
|
else: |
|
return {'code': 50000, 'data': '漏洞采集功能未开启!'} |
|
api.add_resource(Avd, '/api/avd/<stype>')
|
|
|