diff --git a/main.py b/main.py
index 94aab59..f071097 100644
--- a/main.py
+++ b/main.py
@@ -14,7 +14,7 @@ def getDatabase(path = "config.cfg"):
name = config.get("Database", "name")
conn = pymysql.connect(host, user, pwd, name)
- cur = conn.cursor()
+ cur = conn.cursor(pymysql.cursors.DictCursor)
return conn, cur
@@ -27,18 +27,19 @@ def application(env, re):
re("405 Method Not Allowed", [])
return
- if env["PATH_INFO"] == "/endpoint":
+ if env["PATH_INFO"] in ("/endpoint", "/endpoint.php"):
try:
device = args["device"][0]
except:
re("400 Bad Request", [])
yield "
400 Bad Request
".encode()
yield "device is required.".encode()
+ return
try:
latitude = float(args["lat"][0].replace(",", "."))
longitude = float(args["lon"][0].replace(",", "."))
- except Exception as e:
+ except Exception:
re("400 Bad Request", [])
yield "400 Bad Request
".encode()
yield "lat and lon are required.".encode()
@@ -61,4 +62,49 @@ def application(env, re):
cur.execute(sql, (timestr, device, str(latitude), str(longitude), str(altitude) if altitude != None else None))
conn.commit()
-
+
+ re("200 OK", [])
+ yield "OK".encode()
+ return
+
+ if env["PATH_INFO"] in ("/location", "/location.php"):
+ try:
+ device = args["device"][0]
+ except:
+ re("400 Bad Request", [])
+ yield "400 Bad Request
".encode()
+ yield "device is required.".encode()
+ return
+
+ conn, cur = getDatabase()
+
+ cur.execute("SELECT * FROM tracker WHERE device = %s ORDER BY ts DESC LIMIT 1;", device)
+ row = cur.fetchone()
+
+ re("200 OK", [["Content-Type", "text/html"]])
+ yield ("""
+
+
+
+ Current Location
+
+
+
+
+
+
+
+ My location at %s
+ (last known position where I had a GPS signal, a network connection, and some battery power)
+
+
+
+
+
+
+""" % (row["ts"], row["lat"], row["lon"], row["lat"], row["lon"])).encode()
+ return