File size: 3,499 Bytes
090b756 6116804 090b756 6116804 090b756 6116804 090b756 11068e4 6116804 11068e4 6116804 090b756 6116804 090b756 11068e4 090b756 6116804 090b756 6116804 090b756 6116804 090b756 11068e4 090b756 11068e4 6116804 11068e4 090b756 11068e4 090b756 6116804 090b756 6116804 090b756 6116804 090b756 6116804 |
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
from flask import Flask, render_template, request, redirect, url_for, session, send_file
import sqlite3
import os
import logging
app = Flask(__name__)
app.secret_key = "supersecretkey"
DB_PATH = "temp.db"
# Enable debug logs
logging.basicConfig(level=logging.DEBUG)
def init_db():
"""Create DB and users table if not exists"""
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE,
password TEXT
)
""")
conn.commit()
conn.close()
except Exception as e:
app.logger.error(f"DB init failed: {e}")
@app.before_request
def before_request():
"""Ensure DB exists before each request"""
init_db()
@app.route("/")
def home():
try:
username = session.get("username", None)
return render_template("home.html", username=username)
except Exception as e:
app.logger.error(f"Home page error: {e}")
return f"✅ Flask is running, but template error: {e}"
@app.route("/signup", methods=["GET", "POST"])
def signup():
if request.method == "POST":
username = request.form["username"].strip()
password = request.form["password"].strip()
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute(
"INSERT INTO users (username, password) VALUES (?, ?)", (username, password)
)
conn.commit()
conn.close()
return redirect(url_for("login"))
except sqlite3.IntegrityError:
return render_template("signup.html", error="⚠️ Username already exists")
except Exception as e:
app.logger.error(f"Signup error: {e}")
return f"❌ Signup failed: {e}"
return render_template("signup.html")
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
username = request.form["username"].strip()
password = request.form["password"].strip()
# Special admin login
if username == "1234" and password == "1234":
session["username"] = "Admin"
return redirect(url_for("download_db"))
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute(
"SELECT * FROM users WHERE username=? AND password=?", (username, password)
)
user = cursor.fetchone()
conn.close()
except Exception as e:
app.logger.error(f"Login error: {e}")
return f"❌ Login failed: {e}"
if user:
session["username"] = username
return redirect(url_for("home"))
else:
return render_template("login.html", error="❌ Invalid username or password")
return render_template("login.html")
@app.route("/logout")
def logout():
session.pop("username", None)
return redirect(url_for("home"))
@app.route("/download-db")
def download_db():
if "username" in session and session["username"] == "Admin":
if os.path.exists(DB_PATH):
return send_file(DB_PATH, as_attachment=True)
return "No DB found."
return redirect(url_for("home"))
if __name__ == "__main__":
init_db()
app.run(host="0.0.0.0", port=7860, debug=True)
|