61 lines
No EOL
2 KiB
Python
61 lines
No EOL
2 KiB
Python
"""
|
|
Configuration settings for the NetViz application.
|
|
"""
|
|
import os
|
|
from datetime import timedelta
|
|
from dotenv import load_dotenv
|
|
|
|
# Load environment variables from .env file
|
|
load_dotenv()
|
|
|
|
|
|
class Config:
|
|
"""Base configuration class."""
|
|
# Flask
|
|
SECRET_KEY = os.environ.get("SECRET_KEY", "dev-key-not-for-production")
|
|
SECURITY_PASSWORD_SALT = os.environ.get("SECURITY_PASSWORD_SALT", "dev-salt-not-for-production")
|
|
|
|
# Database
|
|
SQLALCHEMY_DATABASE_URI = os.environ.get("DATABASE_URL", "sqlite:///netviz.db")
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
# Session
|
|
SESSION_TYPE = os.environ.get("SESSION_TYPE", "filesystem")
|
|
SESSION_PERMANENT = True
|
|
SESSION_USE_SIGNER = True
|
|
PERMANENT_SESSION_LIFETIME = timedelta(days=1)
|
|
|
|
if SESSION_TYPE == "redis":
|
|
SESSION_REDIS = os.environ.get("SESSION_REDIS")
|
|
|
|
# Security headers
|
|
SECURE_HEADERS_ENABLED = os.environ.get("SECURE_HEADERS_ENABLED", "False").lower() == "true"
|
|
|
|
# Rate limiting
|
|
RATELIMIT_STORAGE_URL = os.environ.get("RATELIMIT_STORAGE_URL", "memory://")
|
|
RATELIMIT_DEFAULT = os.environ.get("RATELIMIT_DEFAULT", "200/day;50/hour;10/minute")
|
|
RATELIMIT_HEADERS_ENABLED = True
|
|
|
|
# Mail
|
|
MAIL_SERVER = os.environ.get("MAIL_SERVER")
|
|
MAIL_PORT = int(os.environ.get("MAIL_PORT", 587))
|
|
MAIL_USE_TLS = os.environ.get("MAIL_USE_TLS", "True").lower() == "true"
|
|
MAIL_USE_SSL = os.environ.get("MAIL_USE_SSL", "False").lower() == "true"
|
|
MAIL_USERNAME = os.environ.get("MAIL_USERNAME")
|
|
MAIL_PASSWORD = os.environ.get("MAIL_PASSWORD")
|
|
MAIL_DEFAULT_SENDER = os.environ.get("MAIL_DEFAULT_SENDER")
|
|
|
|
# Application settings
|
|
MAX_NETWORKS_PER_USER = 50
|
|
MAX_HOSTS_PER_NETWORK = 500
|
|
PASSWORD_RESET_TIMEOUT = 3600 # seconds
|
|
ACCOUNT_LOCKOUT_THRESHOLD = 5 # attempts
|
|
ACCOUNT_LOCKOUT_DURATION = 1800 # seconds
|
|
|
|
|
|
class TestConfig(Config):
|
|
"""Test configuration."""
|
|
TESTING = True
|
|
SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:"
|
|
WTF_CSRF_ENABLED = False
|
|
RATELIMIT_ENABLED = False |