batman
This commit is contained in:
commit
66f9ce3614
33 changed files with 2271 additions and 0 deletions
61
app/config.py
Normal file
61
app/config.py
Normal file
|
@ -0,0 +1,61 @@
|
|||
"""
|
||||
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
|
Loading…
Add table
Add a link
Reference in a new issue