mirror of
				https://gitea.publichub.eu/oscar.krause/fastapi-dls.git
				synced 2025-11-04 02:06:07 +00:00 
			
		
		
		
	fixes
This commit is contained in:
		@@ -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})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								app/orm.py
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user