- Getting containers ready for the cloud

This commit is contained in:
Josako
2024-08-06 14:56:12 +02:00
parent 64cf8df3a9
commit ab8359365d
20 changed files with 494 additions and 110 deletions

View File

@@ -10,7 +10,8 @@ from flask_jwt_extended import JWTManager
from flask_session import Session
from flask_wtf import CSRFProtect
from .utils.key_encryption import JosKMSClient
# from .utils.key_encryption import JosKMSClient
from .utils.simple_encryption import SimpleEncryption
from .utils.minio_utils import MinioClient
# Create extensions
@@ -26,5 +27,7 @@ socketio = SocketIO()
jwt = JWTManager()
session = Session()
kms_client = JosKMSClient.from_service_account_json('config/gc_sa_eveai.json')
# kms_client = JosKMSClient.from_service_account_json('config/gc_sa_eveai.json')
simple_encryption = SimpleEncryption()
minio_client = MinioClient()

View File

@@ -0,0 +1,39 @@
from cryptography.fernet import Fernet
from flask import Flask
class SimpleEncryption:
def __init__(self, app: Flask = None):
self.app = app
self.fernet = None
if app is not None:
self.init_app(app)
def init_app(self, app: Flask):
self.app = app
encryption_key = app.config.get('API_ENCRYPTION_KEY')
if not encryption_key:
raise ValueError("ENCRYPTION_KEY is not set in the app configuration")
self.fernet = Fernet(encryption_key.encode())
# Optionally log the initialization (similar to your current setup)
app.logger.info('SimpleEncryption initialized')
def encrypt_api_key(self, api_key: str) -> str:
if not self.fernet:
raise RuntimeError("SimpleEncryption is not initialized. Call init_app first.")
return self.fernet.encrypt(api_key.encode()).decode()
def decrypt_api_key(self, encrypted_api_key: str) -> str:
if not self.fernet:
raise RuntimeError("SimpleEncryption is not initialized. Call init_app first.")
return self.fernet.decrypt(encrypted_api_key.encode()).decode()
@staticmethod
def generate_key() -> str:
"""Generate a new Fernet key."""
return Fernet.generate_key().decode()
# Usage:
# from common.utils.simple_encryption import simple_encryption
# simple_encryption.init_app(app)