'flask'
This commit is contained in:
@@ -0,0 +1,102 @@
|
|||||||
|
from flask import Flask, render_template, request
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
logs = []
|
||||||
|
|
||||||
|
@app.route("/")
|
||||||
|
def home():
|
||||||
|
return render_template("index.html")
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/login", methods=["POST"])
|
||||||
|
def login():
|
||||||
|
username = request.form.get("username", "")
|
||||||
|
password = request.form.get("password", "")
|
||||||
|
|
||||||
|
logs.append({
|
||||||
|
"time": datetime.now().strftime("%H:%M:%S"),
|
||||||
|
"type": "Login",
|
||||||
|
"username": username,
|
||||||
|
"password": password
|
||||||
|
})
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
"result.html",
|
||||||
|
title="Login",
|
||||||
|
message="Demo login received. (No authentication performed.)",
|
||||||
|
data={"Username": username}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/search")
|
||||||
|
def search():
|
||||||
|
q = request.args.get("q", "")
|
||||||
|
|
||||||
|
logs.append({
|
||||||
|
"time": datetime.now().strftime("%H:%M:%S"),
|
||||||
|
"type": "Search",
|
||||||
|
"query": q
|
||||||
|
})
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
"result.html",
|
||||||
|
title="Search",
|
||||||
|
message="Search request received.",
|
||||||
|
data={"Query": q}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/contact", methods=["POST"])
|
||||||
|
def contact():
|
||||||
|
name = request.form.get("name", "")
|
||||||
|
email = request.form.get("email", "")
|
||||||
|
message = request.form.get("message", "")
|
||||||
|
|
||||||
|
logs.append({
|
||||||
|
"time": datetime.now().strftime("%H:%M:%S"),
|
||||||
|
"type": "Contact",
|
||||||
|
"name": name,
|
||||||
|
"email": email
|
||||||
|
})
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
"result.html",
|
||||||
|
title="Contact",
|
||||||
|
message="Contact form submitted.",
|
||||||
|
data={
|
||||||
|
"Name": name,
|
||||||
|
"Email": email,
|
||||||
|
"Message": message
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/logs")
|
||||||
|
def view_logs():
|
||||||
|
html = """
|
||||||
|
<h2>Application Logs</h2>
|
||||||
|
<table border=1 cellpadding=8>
|
||||||
|
<tr>
|
||||||
|
<th>Time</th>
|
||||||
|
<th>Type</th>
|
||||||
|
<th>Details</th>
|
||||||
|
</tr>
|
||||||
|
"""
|
||||||
|
|
||||||
|
for log in reversed(logs):
|
||||||
|
html += f"""
|
||||||
|
<tr>
|
||||||
|
<td>{log['time']}</td>
|
||||||
|
<td>{log['type']}</td>
|
||||||
|
<td>{log}</td>
|
||||||
|
</tr>
|
||||||
|
"""
|
||||||
|
|
||||||
|
html += "</table>"
|
||||||
|
return html
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app.run(host="0.0.0.0", port=5000, debug=True)
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>SafeLine Demo App</title>
|
||||||
|
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="bg-light">
|
||||||
|
|
||||||
|
<div class="container mt-5">
|
||||||
|
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
<b>Educational Demo</b><br>
|
||||||
|
This application is running behind SafeLine WAF.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>SafeLine Demo Application</h2>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<h4>Login</h4>
|
||||||
|
|
||||||
|
<form action="/login" method="POST">
|
||||||
|
|
||||||
|
<input class="form-control mb-2"
|
||||||
|
name="username"
|
||||||
|
placeholder="Username">
|
||||||
|
|
||||||
|
<input class="form-control mb-2"
|
||||||
|
type="password"
|
||||||
|
name="password"
|
||||||
|
placeholder="Password">
|
||||||
|
|
||||||
|
<button class="btn btn-primary">
|
||||||
|
Login
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<h4>Search</h4>
|
||||||
|
|
||||||
|
<form action="/search">
|
||||||
|
|
||||||
|
<input class="form-control mb-2"
|
||||||
|
name="q"
|
||||||
|
placeholder="Search">
|
||||||
|
|
||||||
|
<button class="btn btn-success">
|
||||||
|
Search
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<h4>Contact</h4>
|
||||||
|
|
||||||
|
<form action="/contact" method="POST">
|
||||||
|
|
||||||
|
<input class="form-control mb-2"
|
||||||
|
name="name"
|
||||||
|
placeholder="Name">
|
||||||
|
|
||||||
|
<input class="form-control mb-2"
|
||||||
|
name="email"
|
||||||
|
placeholder="Email">
|
||||||
|
|
||||||
|
<textarea
|
||||||
|
class="form-control mb-2"
|
||||||
|
name="message"
|
||||||
|
placeholder="Message"></textarea>
|
||||||
|
|
||||||
|
<button class="btn btn-dark">
|
||||||
|
Send
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<a href="/logs" class="btn btn-outline-secondary">
|
||||||
|
View Logs
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="bg-light">
|
||||||
|
|
||||||
|
<div class="container mt-5">
|
||||||
|
|
||||||
|
<h2>{{ title }}</h2>
|
||||||
|
|
||||||
|
<div class="alert alert-success">
|
||||||
|
{{ message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul class="list-group">
|
||||||
|
|
||||||
|
{% for k,v in data.items() %}
|
||||||
|
|
||||||
|
<li class="list-group-item">
|
||||||
|
|
||||||
|
<b>{{k}}</b> : {{v}}
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<a href="/" class="btn btn-primary">
|
||||||
|
|
||||||
|
Back
|
||||||
|
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user