forked from jcifox/WAScope
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWeb_API.py
More file actions
76 lines (59 loc) · 2.04 KB
/
Web_API.py
File metadata and controls
76 lines (59 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import os
import base64
from flask import Flask, jsonify, send_from_directory, render_template
from flask_cors import CORS
from core.ControllerRequestRecord import ControllerRequestRecord
from core.ReportGenerator import create_report
app = Flask(__name__)
app.template_folder = 'report_output' # defined report output dir
# CORS
CORS(app, resources=r'/*')
def default_respond():
return 2000, "success", []
def respond(_data=None, _msg="success", _code=2000):
_data = {} if _data is None else _data
return jsonify({
"code": _code,
"msg": _msg,
"data": _data
})
@app.route('/')
def home():
return "Access Denied"
# set icon
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico', mimetype='image/vnd.microsoft.icon')
# get hosts list
@app.route('/hosts_list')
def hosts_list():
CtrlReqRecd = ControllerRequestRecord()
rs = CtrlReqRecd.query_record_second(fields='distinct(host),to_base64(host) as host_base64', where='1=1 order by create_time desc ')
return respond(_data=rs)
# get host analysis result
@app.route('/analysis/<_host>')
def analysis(_host):
code, msg, data = default_respond()
report = ''
try:
host = base64.urlsafe_b64decode(_host).decode('utf-8')
CtrlReqRecd = ControllerRequestRecord()
data = CtrlReqRecd.query_record_second_analysis(_host=host)
report = create_report(_host=host)
except Exception as e:
print(str(e))
msg = 'params host illegal'
code = 4000
return respond(_data={"list": data, "report": report}, _msg=msg, _code=code)
@app.route('/analysis_report/<_file>')
def analysis_report(_file):
code, msg, data = default_respond()
try:
file = base64.urlsafe_b64decode(_file).decode('utf-8')
return render_template(file)
except Exception as e:
msg = str(e)
code = 4000
return respond(_data=data, _msg=msg, _code=code)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=1001, debug=False)