File size: 2,194 Bytes
faed80b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from flask import Flask, request, redirect, session, url_for
from data.static import generate as sg
from data.dynamic import generate as dg

import os
from data.data import default_hari

app = Flask(__name__)
app.secret_key = "secret_key_aman_diganti"

# Data login hardcoded
VALID_USER = os.getenv("VALID_USER")
VALID_PASS = os.getenv("VALID_PASS")

# Middleware: Cek login sebelum semua request (kecuali /login dan /static file)
@app.before_request
def require_login():
    allowed_routes = ["login", "static"]
    if request.endpoint not in allowed_routes and "user" not in session: return redirect(url_for("login"))

# Form login
@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        user = request.form.get("username")
        password = request.form.get("password")
        print(user, VALID_USER, password, VALID_PASS)
        if user == VALID_USER and password == VALID_PASS:
            session["user"] = user
            return redirect(url_for("home"))
        return "<h3>Login gagal!</h3><a href='/login'>Coba lagi</a>"

    return """
        <h2>Login</h2>
        <form method='post'>
            Username: <input name='username'><br>
            Password: <input name='password' type='password'><br>
            <input type='submit' value='Login'>
        </form>
    """

# Logout
@app.route("/logout")
def logout():
    session.pop("user", None)
    return redirect(url_for("login"))

# Halaman utama
@app.route("/")
def home():
    return """
        <h2>Halaman Utama</h2>
        <a href='/static/7'>Static 7 Hari</a><br>
        <a href='/dynamic'>Dynamic</a><br>
        <a href='/logout'>Logout</a>
    """

@app.route("/static")
def static_page(): return f"""<a href="/">← Kembali</a>{sg(90, request.args.get("img"))}"""

@app.route("/static/<int:days>")
def static_pages(days): return f"""<a href="/">← Kembali</a>{sg(days, request.args.get("img"))}"""

@app.route("/dynamic")
def dynamic_page(): return f"""<a href="/">← Kembali</a>{dg(int(request.args.get("d") or default_hari), request.args.get("img"))}"""

if __name__ == "__main__": app.run(host=os.getenv("HOST") or "0.0.0.0", port=os.getenv("PORT") or 8501)