From cd4674caad43064156e6869e94e64dc93acf0ba0 Mon Sep 17 00:00:00 2001 From: Oscar Krause Date: Fri, 21 Jun 2024 19:35:42 +0200 Subject: [PATCH] fixes --- app/main.py | 9 +++++---- app/orm.py | 24 +++++++++++++++--------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/main.py b/app/main.py index 321fd34..91557e7 100644 --- a/app/main.py +++ b/app/main.py @@ -2,7 +2,7 @@ import logging from base64 import b64encode as b64enc from calendar import timegm from contextlib import asynccontextmanager -from datetime import datetime, timedelta +from datetime import datetime from hashlib import sha256 from json import loads as json_loads from os import getenv as env @@ -13,12 +13,13 @@ from dateutil.relativedelta import relativedelta from dotenv import load_dotenv from fastapi import FastAPI from fastapi.requests import Request -from jose import jws, jwk, jwt, JWTError +from jose import jws, jwt, JWTError from jose.constants import ALGORITHMS from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from starlette.middleware.cors import CORSMiddleware -from starlette.responses import StreamingResponse, JSONResponse as JSONr, HTMLResponse as HTMLr, Response, RedirectResponse +from starlette.responses import StreamingResponse, JSONResponse as JSONr, HTMLResponse as HTMLr, Response, \ + RedirectResponse from orm import init as db_init, migrate, Site, Instance, Origin, Lease @@ -94,7 +95,7 @@ logging.getLogger('NV').setLevel(LOG_LEVEL) # Helper -def __get_token(request: Request) -> dict: +def __get_token(request: Request, jwt_decode_key: "jose.jwt") -> dict: authorization_header = request.headers.get('authorization') token = authorization_header.split(' ')[1] return jwt.decode(token=token, key=jwt_decode_key, algorithms=ALGORITHMS.RS256, options={'verify_aud': False}) diff --git a/app/orm.py b/app/orm.py index 79cc421..a63186c 100644 --- a/app/orm.py +++ b/app/orm.py @@ -2,7 +2,7 @@ import logging from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta -from sqlalchemy import Column, VARCHAR, CHAR, ForeignKey, DATETIME, update, and_, inspect, text +from sqlalchemy import Column, VARCHAR, CHAR, ForeignKey, DATETIME, update, and_, inspect, text, BLOB, INT, FLOAT from sqlalchemy.engine import Engine from sqlalchemy.orm import sessionmaker, declarative_base, Session, relationship @@ -327,7 +327,6 @@ class Lease(Base): def init_default_site(session: Session): - from uuid import uuid4 from app.util import generate_key private_key = generate_key() @@ -398,30 +397,37 @@ def migrate(engine: Engine): # INSTANCE_KEY_RSA, INSTANCE_KEY_PUB default_instance_private_key_path = str(join(dirname(__file__), 'cert/instance.private.pem')) - if instance_private_key := env('INSTANCE_KEY_RSA', None) is not None: + instance_private_key = env('INSTANCE_KEY_RSA', None) + if instance_private_key is not None: instance.private_key = load_key(str(instance_private_key)) elif isfile(default_instance_private_key_path): instance.private_key = load_key(default_instance_private_key_path) default_instance_public_key_path = str(join(dirname(__file__), 'cert/instance.public.pem')) - if instance_public_key := env('INSTANCE_KEY_PUB', None) is not None: + instance_public_key = env('INSTANCE_KEY_PUB', None) + if instance_public_key is not None: instance.public_key = load_key(str(instance_public_key)) elif isfile(default_instance_public_key_path): instance.public_key = load_key(default_instance_public_key_path) # TOKEN_EXPIRE_DELTA - if token_expire_delta := env('TOKEN_EXPIRE_DAYS', None) not in (None, 0): + token_expire_delta = env('TOKEN_EXPIRE_DAYS', None) + if token_expire_delta not in (None, 0): instance.token_expire_delta = token_expire_delta * 86_400 - if token_expire_delta := env('TOKEN_EXPIRE_HOURS', None) not in (None, 0): + token_expire_delta = env('TOKEN_EXPIRE_HOURS', None) + if token_expire_delta not in (None, 0): instance.token_expire_delta = token_expire_delta * 3_600 # LEASE_EXPIRE_DELTA, LEASE_RENEWAL_DELTA - if lease_expire_delta := env('LEASE_EXPIRE_DAYS', None) not in (None, 0): + lease_expire_delta = env('LEASE_EXPIRE_DAYS', None) + if lease_expire_delta not in (None, 0): instance.lease_expire_delta = lease_expire_delta * 86_400 - if lease_expire_delta := env('LEASE_EXPIRE_HOURS', None) not in (None, 0): + lease_expire_delta = env('LEASE_EXPIRE_HOURS', None) + if lease_expire_delta not in (None, 0): instance.lease_expire_delta = lease_expire_delta * 3_600 # LEASE_RENEWAL_PERIOD - if lease_renewal_period := env('LEASE_RENEWAL_PERIOD', None) is not None: + lease_renewal_period = env('LEASE_RENEWAL_PERIOD', None) + if lease_renewal_period is not None: instance.lease_renewal_period = lease_renewal_period # todo: update site, instance