fixes
This commit is contained in:
parent
b0b627a3f0
commit
cd4674caad
@ -2,7 +2,7 @@ import logging
|
|||||||
from base64 import b64encode as b64enc
|
from base64 import b64encode as b64enc
|
||||||
from calendar import timegm
|
from calendar import timegm
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
from json import loads as json_loads
|
from json import loads as json_loads
|
||||||
from os import getenv as env
|
from os import getenv as env
|
||||||
@ -13,12 +13,13 @@ from dateutil.relativedelta import relativedelta
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.requests import Request
|
from fastapi.requests import Request
|
||||||
from jose import jws, jwk, jwt, JWTError
|
from jose import jws, jwt, JWTError
|
||||||
from jose.constants import ALGORITHMS
|
from jose.constants import ALGORITHMS
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from starlette.middleware.cors import CORSMiddleware
|
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
|
from orm import init as db_init, migrate, Site, Instance, Origin, Lease
|
||||||
|
|
||||||
@ -94,7 +95,7 @@ logging.getLogger('NV').setLevel(LOG_LEVEL)
|
|||||||
|
|
||||||
|
|
||||||
# Helper
|
# Helper
|
||||||
def __get_token(request: Request) -> dict:
|
def __get_token(request: Request, jwt_decode_key: "jose.jwt") -> dict:
|
||||||
authorization_header = request.headers.get('authorization')
|
authorization_header = request.headers.get('authorization')
|
||||||
token = authorization_header.split(' ')[1]
|
token = authorization_header.split(' ')[1]
|
||||||
return jwt.decode(token=token, key=jwt_decode_key, algorithms=ALGORITHMS.RS256, options={'verify_aud': False})
|
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 datetime import datetime, timedelta
|
||||||
|
|
||||||
from dateutil.relativedelta import relativedelta
|
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.engine import Engine
|
||||||
from sqlalchemy.orm import sessionmaker, declarative_base, Session, relationship
|
from sqlalchemy.orm import sessionmaker, declarative_base, Session, relationship
|
||||||
|
|
||||||
@ -327,7 +327,6 @@ class Lease(Base):
|
|||||||
|
|
||||||
|
|
||||||
def init_default_site(session: Session):
|
def init_default_site(session: Session):
|
||||||
from uuid import uuid4
|
|
||||||
from app.util import generate_key
|
from app.util import generate_key
|
||||||
|
|
||||||
private_key = generate_key()
|
private_key = generate_key()
|
||||||
@ -398,30 +397,37 @@ def migrate(engine: Engine):
|
|||||||
|
|
||||||
# INSTANCE_KEY_RSA, INSTANCE_KEY_PUB
|
# INSTANCE_KEY_RSA, INSTANCE_KEY_PUB
|
||||||
default_instance_private_key_path = str(join(dirname(__file__), 'cert/instance.private.pem'))
|
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))
|
instance.private_key = load_key(str(instance_private_key))
|
||||||
elif isfile(default_instance_private_key_path):
|
elif isfile(default_instance_private_key_path):
|
||||||
instance.private_key = load_key(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'))
|
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))
|
instance.public_key = load_key(str(instance_public_key))
|
||||||
elif isfile(default_instance_public_key_path):
|
elif isfile(default_instance_public_key_path):
|
||||||
instance.public_key = load_key(default_instance_public_key_path)
|
instance.public_key = load_key(default_instance_public_key_path)
|
||||||
|
|
||||||
# TOKEN_EXPIRE_DELTA
|
# 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
|
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
|
instance.token_expire_delta = token_expire_delta * 3_600
|
||||||
|
|
||||||
# LEASE_EXPIRE_DELTA, LEASE_RENEWAL_DELTA
|
# 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
|
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
|
instance.lease_expire_delta = lease_expire_delta * 3_600
|
||||||
|
|
||||||
# LEASE_RENEWAL_PERIOD
|
# 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
|
instance.lease_renewal_period = lease_renewal_period
|
||||||
|
|
||||||
# todo: update site, instance
|
# todo: update site, instance
|
||||||
|
Loading…
Reference in New Issue
Block a user