mirror of
https://github.com/smittix/intercept.git
synced 2026-04-25 15:20:00 -07:00
Replaces hardcoded admin credentials with a users table in the database, storing hashed passwords and user roles. Updates the login logic in app.py to authenticate against the database using Werkzeug's password hashing utilities. Adds admin credential configuration to config.py and ensures a default admin user is created during database initialization.
97 lines
3.0 KiB
Python
97 lines
3.0 KiB
Python
"""Configuration settings for intercept application."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import os
|
|
import sys
|
|
|
|
# Application version
|
|
VERSION = "2.9.0"
|
|
|
|
|
|
def _get_env(key: str, default: str) -> str:
|
|
"""Get environment variable with default."""
|
|
return os.environ.get(f'INTERCEPT_{key}', default)
|
|
|
|
|
|
def _get_env_int(key: str, default: int) -> int:
|
|
"""Get environment variable as integer with default."""
|
|
try:
|
|
return int(os.environ.get(f'INTERCEPT_{key}', str(default)))
|
|
except ValueError:
|
|
return default
|
|
|
|
|
|
def _get_env_float(key: str, default: float) -> float:
|
|
"""Get environment variable as float with default."""
|
|
try:
|
|
return float(os.environ.get(f'INTERCEPT_{key}', str(default)))
|
|
except ValueError:
|
|
return default
|
|
|
|
|
|
def _get_env_bool(key: str, default: bool) -> bool:
|
|
"""Get environment variable as boolean with default."""
|
|
val = os.environ.get(f'INTERCEPT_{key}', '').lower()
|
|
if val in ('true', '1', 'yes', 'on'):
|
|
return True
|
|
if val in ('false', '0', 'no', 'off'):
|
|
return False
|
|
return default
|
|
|
|
|
|
# Logging configuration
|
|
_log_level_str = _get_env('LOG_LEVEL', 'WARNING').upper()
|
|
LOG_LEVEL = getattr(logging, _log_level_str, logging.WARNING)
|
|
LOG_FORMAT = _get_env('LOG_FORMAT', '%(asctime)s - %(levelname)s - %(message)s')
|
|
|
|
# Server settings
|
|
HOST = _get_env('HOST', '0.0.0.0')
|
|
PORT = _get_env_int('PORT', 5050)
|
|
DEBUG = _get_env_bool('DEBUG', False)
|
|
THREADED = _get_env_bool('THREADED', True)
|
|
|
|
# Default RTL-SDR settings
|
|
DEFAULT_GAIN = _get_env('DEFAULT_GAIN', '40')
|
|
DEFAULT_DEVICE = _get_env('DEFAULT_DEVICE', '0')
|
|
|
|
# Pager defaults
|
|
DEFAULT_PAGER_FREQ = _get_env('PAGER_FREQ', '929.6125M')
|
|
|
|
# Timeouts
|
|
PROCESS_TIMEOUT = _get_env_int('PROCESS_TIMEOUT', 5)
|
|
SOCKET_TIMEOUT = _get_env_int('SOCKET_TIMEOUT', 5)
|
|
SSE_TIMEOUT = _get_env_int('SSE_TIMEOUT', 1)
|
|
|
|
# WiFi settings
|
|
WIFI_UPDATE_INTERVAL = _get_env_float('WIFI_UPDATE_INTERVAL', 2.0)
|
|
AIRODUMP_HEADER_LINES = _get_env_int('AIRODUMP_HEADER_LINES', 2)
|
|
|
|
# Bluetooth settings
|
|
BT_SCAN_TIMEOUT = _get_env_int('BT_SCAN_TIMEOUT', 10)
|
|
BT_UPDATE_INTERVAL = _get_env_float('BT_UPDATE_INTERVAL', 2.0)
|
|
|
|
# ADS-B settings
|
|
ADSB_SBS_PORT = _get_env_int('ADSB_SBS_PORT', 30003)
|
|
ADSB_UPDATE_INTERVAL = _get_env_float('ADSB_UPDATE_INTERVAL', 1.0)
|
|
|
|
# Satellite settings
|
|
SATELLITE_UPDATE_INTERVAL = _get_env_int('SATELLITE_UPDATE_INTERVAL', 30)
|
|
SATELLITE_TRAJECTORY_POINTS = _get_env_int('SATELLITE_TRAJECTORY_POINTS', 30)
|
|
SATELLITE_ORBIT_MINUTES = _get_env_int('SATELLITE_ORBIT_MINUTES', 45)
|
|
|
|
# Admin credentials
|
|
ADMIN_USERNAME = _get_env('ADMIN_USERNAME', 'admin')
|
|
ADMIN_PASSWORD = _get_env('ADMIN_PASSWORD', 'intercept')
|
|
|
|
def configure_logging() -> None:
|
|
"""Configure application logging."""
|
|
logging.basicConfig(
|
|
level=LOG_LEVEL,
|
|
format=LOG_FORMAT,
|
|
stream=sys.stderr
|
|
)
|
|
# Suppress Flask development server warning
|
|
logging.getLogger('werkzeug').setLevel(LOG_LEVEL)
|