|
@@ -69,6 +69,9 @@ clients = []
|
|
|
@app.route("/")
|
|
@app.route("/")
|
|
|
@app.route("/<path:filename>")
|
|
@app.route("/<path:filename>")
|
|
|
def static_files(filename="index.html"):
|
|
def static_files(filename="index.html"):
|
|
|
|
|
+ if request.args.get("stream") == "1" and filename == "index.html":
|
|
|
|
|
+ return send_from_directory("public", filename)
|
|
|
|
|
+
|
|
|
if "u" in request.args and filename == "index.html":
|
|
if "u" in request.args and filename == "index.html":
|
|
|
username = request.args.get("u")
|
|
username = request.args.get("u")
|
|
|
session_id = request.cookies.get("session_id")
|
|
session_id = request.cookies.get("session_id")
|
|
@@ -231,15 +234,18 @@ def post_message():
|
|
|
# GET: all clients listen here, with long-polling
|
|
# GET: all clients listen here, with long-polling
|
|
|
@app.route("/api/messages", methods=["GET"])
|
|
@app.route("/api/messages", methods=["GET"])
|
|
|
def get_messages():
|
|
def get_messages():
|
|
|
- session_id = request.cookies.get("session_id")
|
|
|
|
|
- with db_lock:
|
|
|
|
|
- conn = sqlite3.connect("chat.db", check_same_thread=False)
|
|
|
|
|
- c = conn.cursor()
|
|
|
|
|
- c.execute("SELECT 1 FROM users WHERE session_id = ?", (session_id,))
|
|
|
|
|
- if not c.fetchone():
|
|
|
|
|
|
|
+ is_stream = request.args.get("stream") == "1"
|
|
|
|
|
+
|
|
|
|
|
+ if not is_stream:
|
|
|
|
|
+ session_id = request.cookies.get("session_id")
|
|
|
|
|
+ with db_lock:
|
|
|
|
|
+ conn = sqlite3.connect('chat.db', check_same_thread=False)
|
|
|
|
|
+ c = conn.cursor()
|
|
|
|
|
+ c.execute("SELECT 1 FROM users WHERE session_id = ?", (session_id,))
|
|
|
|
|
+ if not c.fetchone():
|
|
|
|
|
+ conn.close()
|
|
|
|
|
+ return {"error": "Unauthorized"}, 401
|
|
|
conn.close()
|
|
conn.close()
|
|
|
- return {"error": "Unauthorized"}, 401
|
|
|
|
|
- conn.close()
|
|
|
|
|
|
|
|
|
|
q = queue.Queue()
|
|
q = queue.Queue()
|
|
|
clients.append(q)
|
|
clients.append(q)
|
|
@@ -294,6 +300,19 @@ def download_images():
|
|
|
|
|
|
|
|
@app.route("/api/backlog", methods=["GET"])
|
|
@app.route("/api/backlog", methods=["GET"])
|
|
|
def get_backlog():
|
|
def get_backlog():
|
|
|
|
|
+ is_stream = request.args.get("stream") == "1"
|
|
|
|
|
+
|
|
|
|
|
+ if not is_stream:
|
|
|
|
|
+ session_id = request.cookies.get("session_id")
|
|
|
|
|
+ with db_lock:
|
|
|
|
|
+ conn = sqlite3.connect('chat.db', check_same_thread=False)
|
|
|
|
|
+ c = conn.cursor()
|
|
|
|
|
+ c.execute("SELECT 1 FROM users WHERE session_id = ?", (session_id,))
|
|
|
|
|
+ if not c.fetchone():
|
|
|
|
|
+ conn.close()
|
|
|
|
|
+ return {"error": "Unauthorized"}, 401
|
|
|
|
|
+ conn.close()
|
|
|
|
|
+
|
|
|
log(f"Backlog requested by {request.remote_addr}")
|
|
log(f"Backlog requested by {request.remote_addr}")
|
|
|
with db_lock:
|
|
with db_lock:
|
|
|
conn = sqlite3.connect("chat.db", check_same_thread=False)
|
|
conn = sqlite3.connect("chat.db", check_same_thread=False)
|