]> git.siccegge.de Git - software/wtfismyip.git/blob - server.py
WTFISMYIP.dn http service
[software/wtfismyip.git] / server.py
1 #!/usr/bin/python3
2
3 from flask import request, render_template
4 from socket import gethostbyaddr
5 from flask import Flask
6
7 import json
8 import binascii
9 import os
10 import sqlite3
11
12 app = Flask(__name__)
13
14 @app.route("/")
15 def index():
16 remote_addr = request.remote_addr
17 hostname = remote_addr
18 try:
19 hostname = gethostbyaddr(remote_addr)[0]
20 except:
21 pass
22
23 token=os.urandom(16)
24 token='tok' + binascii.hexlify(token).decode()
25
26 return render_template("index.html", remote_addr=remote_addr, hostname=hostname, token=token)
27
28 @app.route("/api")
29 def api():
30 remote_addr = request.remote_addr
31 hostname = remote_addr
32 try:
33 hostname = gethostbyaddr(remote_addr)[0]
34 except:
35 pass
36
37 data = {
38 'ipaddress' : remote_addr,
39 'hostname' : hostname
40 }
41 return json.dumps(data)
42
43 @app.route("/named/<token>")
44 def named(token):
45 sqlite = sqlite3.connect("tokens.sqlite")
46 response = []
47 with sqlite:
48 cur = sqlite.cursor()
49 cur.execute("SELECT DISTINCT ip FROM token WHERE token = ?", (token, ))
50 for row in cur:
51 hostname = row[0]
52 try:
53 hostname = gethostbyaddr(hostname)[0]
54 except:
55 pass
56
57 response.append((row[0], hostname))
58
59 print(response)
60 return json.dumps(response)
61