diff --git a/main.py b/main.py index 113c259..41a2aab 100644 --- a/main.py +++ b/main.py @@ -14,69 +14,81 @@ from datetime import datetime from fastapi.exceptions import RequestValidationError from starlette.exceptions import HTTPException as StarletteHTTPException from fastapi.exceptions import RequestValidationError -from fastapi.responses import PlainTextResponse, JSONResponse +from fastapi.responses import PlainTextResponse from fastapi.exception_handlers import ( http_exception_handler, request_validation_exception_handler, ) -import threading -import socket -import struct -from zoneinfo import ZoneInfo temp_dir = r"/home/td/WebTemp" tempfile.tempdir = temp_dir +con = psycopg2.connect("host=127.0.0.1 dbname=test user=alfred password='Alf red'") + app = FastAPI(title="user manager", description="User session management.", version="0.0.0.1", docs_url="/server/docs", redoc_url="/server/redoc", openapi_url="/server/openapi.json") app.mount("/server/static", StaticFiles(directory="static"), name="static") templates = Jinja2Templates(directory="templates") -distance_value = 0.0 -last_updated = None -distance_value_rev = 0.0 -def get_udp_water_value(): - sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) - count = 0 - while True: - try: - sock.bind(('', 8176)) - sock.settimeout(5.0) - break - except Exception as e: - count+=1 - print("Exception: e", e) - time.sleep(5) - if count >= 100: - raise e - zone = ZoneInfo("Asia/Kolkata"); - print("Bound to address: 8176") - global distance_value - global last_updated - global distance_value_rev - while True: - try: - data, addr = sock.recvfrom(4) - print(f"Got data: {data.hex()}") - distance_value = struct.unpack('>f', data) - distance_value_rev = struct.unpack(' list[list]: + active_users = [] + cur = con.cursor() + cur.execute("Select * from API_USERS where session_status = 'ACTIVE'") + results = cur.fetchall() + print(f"Results -> {len(results)}") + for i in results: + j = [i[0], i[3]] + active_users.append(j) + print("Active users: ", active_users) + return active_users + + +def validate_session_key(username, session_key) -> bool: + cur = con.cursor() + cur.execute(f"Select username, session_key, session_status, expiry_time from API_USERS where session_status='ACTIVE' and username='{username}'") + results = cur.fetchall() + if len(results) <= 0: + return False + (q_username, q_session_key, q_session_status, q_expiry_time) = results[0] + print("Len ->", len(results)) + if q_username == username and q_session_key == session_key: + now_time = datetime.now() + q_expiry_time = q_expiry_time + print("Expiry time", q_expiry_time, now_time) + if q_expiry_time < now_time: + return False + return True + else: + return False + # @app.post("/api/users/create", response_class=RedirectResponse) diff --git a/templates/user.html b/templates/user.html index 75aea5d..99b8681 100644 --- a/templates/user.html +++ b/templates/user.html @@ -33,11 +33,9 @@ if (parts.length === 2) return parts.pop().split(';').shift(); } -
- Logout -

Server Manager, Welcome {{ username }}

+ Logout