from flask import Flask, render_template_string, request, redirect, url_for, session
import os
import platform
app = Flask(__name__)
app.secret_key = "mini_os_secret_key"
# ---------------- LOGIN PAGE ---------------- #
login_page = """
Mini OS Login
Mini Python OS
Default Login: admin / 1234
{{error}}
"""
# ---------------- DASHBOARD ---------------- #
dashboard_page = """
Mini OS Desktop
Mini Python OS Desktop
"""
# ---------------- FILE EXPLORER ---------------- #
files_page = """
File Explorer
{% for f in files %}
- {{f}}
{% endfor %}
Back
"""
# ---------------- NOTEPAD ---------------- #
notepad_page = """
Notepad
{{msg}}
Back
"""
# ---------------- CALCULATOR ---------------- #
calculator_page = """
Calculator
Result: {{result}}
Back
"""
# ---------------- SYSTEM INFO ---------------- #
system_page = """
System Info
System: {{system}}
Node: {{node}}
Release: {{release}}
Version: {{version}}
Machine: {{machine}}
Processor: {{processor}}
Back
"""
# ---------------- ROUTES ---------------- #
@app.route("/", methods=["GET", "POST"])
def login():
error = ""
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
if username == "admin" and password == "1234":
session["user"] = username
return redirect(url_for("dashboard")) # FIXED REDIRECT
else:
error = "Invalid username or password"
return render_template_string(login_page, error=error)
@app.route("/dashboard")
def dashboard():
if "user" not in session:
return redirect(url_for("login"))
return render_template_string(dashboard_page)
@app.route("/files")
def files():
if "user" not in session:
return redirect(url_for("login"))
file_list = os.listdir(".")
return render_template_string(files_page, files=file_list)
@app.route("/notepad", methods=["GET", "POST"])
def notepad():
if "user" not in session:
return redirect(url_for("login"))
msg = ""
if request.method == "POST":
text = request.form.get("text")
with open("note.txt", "w", encoding="utf-8") as f:
f.write(text)
msg = "File saved as note.txt"
return render_template_string(notepad_page, msg=msg)
@app.route("/calculator", methods=["GET", "POST"])
def calculator():
if "user" not in session:
return redirect(url_for("login"))
result = ""
if request.method == "POST":
try:
exp = request.form.get("exp")
result = eval(exp)
except:
result = "Error"
return render_template_string(calculator_page, result=result)
@app.route("/system")
def system():
if "user" not in session:
return redirect(url_for("login"))
return render_template_string(system_page,
system=platform.system(),
node=platform.node(),
release=platform.release(),
version=platform.version(),
machine=platform.machine(),
processor=platform.processor()
)
@app.route("/logout")
def logout():
session.clear()
return redirect(url_for("login"))
# ---------------- RUN APP ---------------- #
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860, debug=True)