2 Commits

Author SHA1 Message Date
13e61b7bef remove duplicate secret key handling
All checks were successful
Docker Build and Publish / build (push) Successful in 6s
2024-11-05 19:40:29 -05:00
4c993ebacd Secret Key
All checks were successful
Docker Build and Publish / build (push) Successful in 6s
2024-11-05 19:36:44 -05:00

27
app.py
View File

@ -11,7 +11,6 @@ from datetime import datetime
from pathlib import Path
from logging import getLogger
import logging
from logging import getLogger
from logging.config import dictConfig
import toml
@ -31,13 +30,31 @@ from models import Session as DBSession
from models import SiteConfig, init_db
from steganography import embed_message, extract_message
# Add this function to handle secret key persistence
def get_or_create_secret_key():
"""Get existing secret key or create a new one"""
secret_key_file = Path("secret.key")
try:
if secret_key_file.exists():
logger.info("Loading existing secret key")
return secret_key_file.read_bytes()
else:
logger.info("Generating new secret key")
secret_key = os.urandom(32) # Use 32 bytes for better security
secret_key_file.write_bytes(secret_key)
return secret_key
except Exception as e:
logger.error(f"Error handling secret key: {e}")
# Fallback to a memory-only key if file operations fail
return os.urandom(32)
DEFAULT_CONFIG = {
"server": {"host": "0.0.0.0", "port": 5000},
"directories": {"upload": "uploads", "thumbnail": "thumbnails"},
"admin": {"password": secrets.token_urlsafe(16)}, # Generate secure random password
}
# Add this logging configuration before creating the Flask app
# Configure logging
dictConfig({
'version': 1,
'formatters': {
@ -66,8 +83,9 @@ dictConfig({
# Get logger for this module
logger = getLogger(__name__)
# Create Flask app with persistent secret key
app = Flask(__name__)
app.secret_key = os.urandom(24)
app.secret_key = get_or_create_secret_key()
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@ -211,9 +229,6 @@ limiter = Limiter(
storage_uri="memory://",
)
# Generate a strong secret key at startup
app.secret_key = secrets.token_hex(32)
@app.before_request
def before_request():
g.csp_nonce = secrets.token_hex(16)