-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
31 lines (27 loc) · 1.03 KB
/
app.py
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
"""
/*
* @Author: Silent YANG
* @Date: 2023-11-29
*/
"""
from flask import Flask, request, make_response
from base64 import urlsafe_b64decode
import socket
app = Flask(__name__)
socket.setdefaulttimeout(5)
@app.route("/dns-query" ,methods=['GET', 'POST'])
def dns_query():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
if request.headers.get('CONTENT_TYPE') == 'application/dns-message':
sock.sendto(request.stream.read(), ("1.1.1.1", 53))
rx_meesage, addr = sock.recvfrom(4096)
return make_response(rx_meesage, 200, {"Content-Type": "application/dns-message"})
if request.method == "GET" and request.args.get("dns"):
payload = urlsafe_b64decode(request.args.get("dns") + "===")
sock.sendto(payload, ("1.1.1.1", 53))
rx_meesage, addr = sock.recvfrom(4096)
return make_response(rx_meesage, 200, {"Content-Type": "application/dns-message"})
sock.close()
return make_response("", 400)
if __name__ == "__main__":
app.run('127.0.0.1', debug=False, port=5000)