mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-08-05 09:05:43 +08:00
Fleet Manager: One-Time Password cleanup (#177)
* init * keep previous page from session
This commit is contained in:
@@ -4,21 +4,11 @@ import random
|
||||
import secrets
|
||||
import system.fleetmanager.helpers as fleet
|
||||
from flask import Flask, render_template, Response, request, send_from_directory, session, redirect, url_for
|
||||
from functools import wraps
|
||||
from system.loggerd.config import ROOT as REALDATA
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
def login_required(f):
|
||||
@wraps(f)
|
||||
def decorated_route(*args, **kwargs):
|
||||
if not session.get("logged_in"):
|
||||
return redirect(url_for("index_page"))
|
||||
return f(*args, **kwargs)
|
||||
return decorated_route
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def index_page():
|
||||
if session.get("logged_in"):
|
||||
@@ -34,20 +24,24 @@ def login():
|
||||
|
||||
if inputted_pin == correct_pin:
|
||||
session["logged_in"] = True
|
||||
return redirect(url_for("home_page"))
|
||||
if "previous_page" in session:
|
||||
previous_page = session["previous_page"]
|
||||
session.pop("previous_page", None)
|
||||
return redirect(previous_page)
|
||||
else:
|
||||
return redirect(url_for("home_page"))
|
||||
else:
|
||||
error_message = "Incorrect PIN. Please try again."
|
||||
return render_template("login.html", error=error_message)
|
||||
|
||||
|
||||
@app.route("/index")
|
||||
@login_required
|
||||
def home_page():
|
||||
return render_template("index.html")
|
||||
|
||||
|
||||
@app.route("/footage/full/<cameratype>/<route>")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def full(cameratype, route):
|
||||
chunk_size = 1024 * 512 # 5KiB
|
||||
file_name = cameratype + (".ts" if cameratype == "qcamera" else ".hevc")
|
||||
@@ -61,7 +55,7 @@ def full(cameratype, route):
|
||||
|
||||
|
||||
@app.route("/footage/<cameratype>/<segment>")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def fcamera(cameratype, segment):
|
||||
if not fleet.is_valid_segment(segment):
|
||||
return render_template("error.html", error="invalid segment")
|
||||
@@ -70,7 +64,7 @@ def fcamera(cameratype, segment):
|
||||
|
||||
|
||||
@app.route("/footage/<route>")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def route(route):
|
||||
if len(route) != 20:
|
||||
return render_template("error.html", error="route not found")
|
||||
@@ -90,14 +84,16 @@ def route(route):
|
||||
return render_template("route.html", route=route, query_type=query_type, links=links, segments=segments, query_segment=query_segment)
|
||||
|
||||
|
||||
@app.route("/footage/")
|
||||
@app.route("/footage")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def footage():
|
||||
return render_template("footage.html", rows=fleet.all_routes())
|
||||
|
||||
|
||||
@app.route("/screenrecords/")
|
||||
@app.route("/screenrecords")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def screenrecords():
|
||||
rows = fleet.all_screenrecords()
|
||||
if not rows:
|
||||
@@ -106,26 +102,25 @@ def screenrecords():
|
||||
|
||||
|
||||
@app.route("/screenrecords/<clip>")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def screenrecord(clip):
|
||||
return render_template("screenrecords.html", rows=fleet.all_screenrecords(), clip=clip)
|
||||
|
||||
|
||||
@app.route("/screenrecords/play/pipe/<file>")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def videoscreenrecord(file):
|
||||
file_name = fleet.SCREENRECORD_PATH + file
|
||||
return Response(fleet.ffplay_mp4_wrap_process_builder(file_name).stdout.read(), status=200, mimetype='video/mp4')
|
||||
|
||||
|
||||
@app.route("/screenrecords/download/<clip>")
|
||||
@login_required
|
||||
@fleet.login_required
|
||||
def download_file(clip):
|
||||
return send_from_directory(fleet.SCREENRECORD_PATH, clip, as_attachment=True)
|
||||
|
||||
|
||||
@app.route("/about")
|
||||
@login_required
|
||||
def about():
|
||||
return render_template("about.html")
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import os
|
||||
import subprocess
|
||||
from flask import render_template, request, session
|
||||
from functools import wraps
|
||||
from pathlib import Path
|
||||
from system.hardware import PC
|
||||
from system.loggerd.config import ROOT as REALDATA
|
||||
@@ -15,6 +17,16 @@ else:
|
||||
PIN_PATH = "/data/otp/"
|
||||
|
||||
|
||||
def login_required(f):
|
||||
@wraps(f)
|
||||
def decorated_route(*args, **kwargs):
|
||||
if not session.get("logged_in"):
|
||||
session["previous_page"] = request.url
|
||||
return render_template("login.html")
|
||||
return f(*args, **kwargs)
|
||||
return decorated_route
|
||||
|
||||
|
||||
def all_screenrecords():
|
||||
return sorted(listdir_by_creation(SCREENRECORD_PATH), reverse=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user