aaxaxax commited on
Commit
23f2281
·
1 Parent(s): da72ead
Files changed (2) hide show
  1. Dockerfile +4 -0
  2. app.py +64 -0
Dockerfile ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ FROM python:3.9-slim
2
+ RUN pip install flask requests
3
+ COPY app.py /app.py
4
+ CMD ["python", "/app.py"]
app.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, jsonify
2
+ import requests, os, socket, subprocess
3
+
4
+ app = Flask(__name__)
5
+
6
+ @app.route('/')
7
+ def index():
8
+ return 'OK'
9
+
10
+ @app.route('/fetch')
11
+ def fetch():
12
+ url = request.args.get('url', '')
13
+ headers = {}
14
+ for h in request.args.get('headers', '').split(','):
15
+ if ':' in h:
16
+ k, v = h.split(':', 1)
17
+ headers[k] = v
18
+ try:
19
+ r = requests.get(url, headers=headers, timeout=5, verify=False)
20
+ return r.text, r.status_code, {'Content-Type': 'text/plain'}
21
+ except Exception as e:
22
+ return str(e), 500
23
+
24
+ @app.route('/env')
25
+ def env():
26
+ return jsonify(dict(os.environ))
27
+
28
+ @app.route('/scan')
29
+ def scan():
30
+ host = request.args.get('host', '')
31
+ ports = request.args.get('ports', '80,443').split(',')
32
+ timeout = float(request.args.get('timeout', '1'))
33
+ results = {}
34
+ for p in ports:
35
+ try:
36
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
37
+ s.settimeout(timeout)
38
+ r = s.connect_ex((host, int(p)))
39
+ results[p] = 'open' if r == 0 else 'closed'
40
+ s.close()
41
+ except Exception as e:
42
+ results[p] = str(e)
43
+ return jsonify(results)
44
+
45
+ @app.route('/resolve')
46
+ def resolve():
47
+ host = request.args.get('host', '')
48
+ try:
49
+ return jsonify({'ip': socket.gethostbyname(host), 'host': host})
50
+ except Exception as e:
51
+ return jsonify({'error': str(e)})
52
+
53
+ @app.route('/curl')
54
+ def do_curl():
55
+ url = request.args.get('url', '')
56
+ method = request.args.get('method', 'GET')
57
+ try:
58
+ r = requests.request(method, url, timeout=10, verify=False)
59
+ return r.text, r.status_code
60
+ except Exception as e:
61
+ return str(e), 500
62
+
63
+ if __name__ == '__main__':
64
+ app.run(host='0.0.0.0', port=7860)