from flask import Flask, render_template_string, request, redirect, url_for import sqlite3 from datetime import datetime app = Flask(__name__) # --- Database setup --- def init_db(): conn = sqlite3.connect("chat.db") c = conn.cursor() c.execute("""CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL )""") c.execute("""CREATE TABLE IF NOT EXISTS messages ( id INTEGER PRIMARY KEY AUTOINCREMENT, sender TEXT NOT NULL, receiver TEXT NOT NULL, text TEXT NOT NULL, timestamp TEXT NOT NULL )""") conn.commit() conn.close() init_db() # --- Templates (styled HTML all inline) --- layout = """ Mini Chat

{{ title }}

{{ content | safe }}

Home

""" @app.route("/", methods=["GET", "POST"]) def home(): if request.method == "POST": username = request.form["username"] conn = sqlite3.connect("chat.db") c = conn.cursor() try: c.execute("INSERT INTO users (username) VALUES (?)", (username,)) conn.commit() except: pass conn.close() return redirect(url_for("chat", user=username)) content = """
""" return render_template_string(layout, title="Login / Register", content=content) @app.route("/chat/", methods=["GET", "POST"]) def chat(user): conn = sqlite3.connect("chat.db") c = conn.cursor() # Get all users c.execute("SELECT username FROM users WHERE username != ?", (user,)) users = [row[0] for row in c.fetchall()] receiver = request.args.get("to") messages = [] if receiver: if request.method == "POST": msg = request.form["message"] c.execute("INSERT INTO messages (sender, receiver, text, timestamp) VALUES (?, ?, ?, ?)", (user, receiver, msg, datetime.now().strftime("%H:%M"))) conn.commit() c.execute("""SELECT sender, text, timestamp FROM messages WHERE (sender=? AND receiver=?) OR (sender=? AND receiver=?) ORDER BY id""", (user, receiver, receiver, user)) messages = c.fetchall() conn.close() user_list_html = "".join([f"
  • {u}
  • " for u in users]) chat_html = "" if receiver: chat_html = f"

    Chat with {receiver}

    " for m in messages: css_class = "me" if m[0] == user else "them" chat_html += f"
    {m[0]}: {m[1]}{m[2]}
    " chat_html += "
    " chat_html += """
    """ content = f"""

    Welcome {user}

    Users:

    {chat_html} """ return render_template_string(layout, title="Chat", content=content) # --- Hidden Admin Reset Command --- @app.route("/adminreset") def admin_reset(): key = request.args.get("key") if key != "supersecret123": # set your secret key here return "Access Denied", 403 conn = sqlite3.connect("chat.db") c = conn.cursor() c.execute("DROP TABLE IF EXISTS users") c.execute("DROP TABLE IF EXISTS messages") conn.commit() conn.close() # Reinitialize tables init_db() return " Database wiped. All users, messages, and chats deleted." if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True) #http://127.0.0.1:5000/adminreset?key=supersecret123 to wipe all data