55 lines
No EOL
2 KiB
Python
55 lines
No EOL
2 KiB
Python
#!/usr/bin/python3
|
|
|
|
import sqlite3
|
|
import http.cookies
|
|
import os
|
|
import time # Ensure we import time for the timestamp check
|
|
|
|
print("Content-Type: text/html")
|
|
print()
|
|
|
|
# Ensure the session_id is properly parsed
|
|
cookie = http.cookies.SimpleCookie(os.environ.get('HTTP_COOKIE', ''))
|
|
session_id = cookie.get('session_id')
|
|
|
|
# Log the session ID for debugging
|
|
with open("/tmp/user_panel_session.log", "a") as f:
|
|
f.write(f"Parsed session ID: {session_id.value if session_id else 'None'}\n")
|
|
|
|
if session_id:
|
|
session_id = session_id.value
|
|
|
|
# Connect to SQLite and check the session
|
|
db = sqlite3.connect('/var/lib/monotreme/data/monotreme.db')
|
|
cursor = db.cursor()
|
|
|
|
# Log the current timestamp for debugging
|
|
current_time = int(time.time())
|
|
with open("/tmp/user_panel_session.log", "a") as f:
|
|
f.write(f"Current time (UNIX timestamp): {current_time}\n")
|
|
|
|
# Check if the session exists and is still valid
|
|
cursor.execute("SELECT username, expires_at FROM sessions WHERE session_id=? AND expires_at > ?", (session_id, current_time))
|
|
result = cursor.fetchone()
|
|
|
|
if result:
|
|
username, expires_at = result
|
|
|
|
# Log the session expiration time for debugging
|
|
with open("/tmp/user_panel_session.log", "a") as f:
|
|
f.write(f"Session found for user: {username}\n")
|
|
f.write(f"Session expires at: {expires_at}, Current time: {current_time}\n")
|
|
|
|
# Print the user panel
|
|
print(f"<h1>Welcome, {username}!</h1>")
|
|
print("<p>This is your user panel.</p>")
|
|
print("<p>This panel contains nothing but the ability to logout.</p>")
|
|
print('<a href="/cgi-bin/logout.cgi">Logout</a>')
|
|
else:
|
|
with open("/tmp/user_panel_session.log", "a") as f:
|
|
f.write("Session expired or invalid.\n")
|
|
print("<h1>Session expired or invalid!</h1>")
|
|
print("<a href='/login/'>Login again</a>")
|
|
else:
|
|
print("<h1>No session found!</h1>")
|
|
print("<a href='/login/'>Login again</a>") |