""" 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