80 lines
No EOL
5 KiB
Python
80 lines
No EOL
5 KiB
Python
from dataclasses import dataclass
|
|
from typing import Final
|
|
import os
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class Constants:
|
|
|
|
DB_VERSION_THIS_APP_WANTS = 1
|
|
|
|
# ticketing group:
|
|
TICKET_API_BASE_URL: Final[str] = os.environ.get(
|
|
"TICKET_API_BASE_URL", "https://ticket.hydraveil.net"
|
|
)
|
|
SP_API_BASE_URL: Final[str] = os.environ.get(
|
|
'SP_API_BASE_URL', 'https://fake.simplifiedprivacy.org/api/v1'
|
|
)
|
|
PING_URL: Final[str] = os.environ.get(
|
|
'PING_URL', 'https://fake.simplifiedprivacy.org/api/v1//health'
|
|
)
|
|
CONNECTION_RETRY_INTERVAL: Final[int] = int(os.environ.get('CONNECTION_RETRY_INTERVAL', '5'))
|
|
MAX_CONNECTION_ATTEMPTS: Final[int] = int(os.environ.get('MAX_CONNECTION_ATTEMPTS', '2'))
|
|
HV_CLIENT_PATH: Final[str] = os.environ.get('HV_CLIENT_PATH')
|
|
HV_CLIENT_VERSION_NUMBER: Final[str] = os.environ.get('HV_CLIENT_VERSION_NUMBER')
|
|
|
|
# ── Paths base ────────────────────────────────────────────────────────────
|
|
HOME: Final[str] = os.path.expanduser('~')
|
|
SYSTEM_CONFIG_PATH: Final[str] = '/etc'
|
|
|
|
# ── XDG estándar ─────────────────────────────────────────────────────────
|
|
CACHE_HOME: Final[str] = os.environ.get('XDG_CACHE_HOME', os.path.join(HOME, '.cache'))
|
|
CONFIG_HOME: Final[str] = os.environ.get('XDG_CONFIG_HOME', os.path.join(HOME, '.config'))
|
|
DATA_HOME: Final[str] = os.environ.get('XDG_DATA_HOME', os.path.join(HOME, '.local/share'))
|
|
STATE_HOME: Final[str] = os.environ.get('XDG_STATE_HOME', os.path.join(HOME, '.local/state'))
|
|
|
|
# ── hydra-veil dirs ───────────────────────────────────────────────────────
|
|
HV_SYSTEM_CONFIG_PATH: Final[str] = f'{SYSTEM_CONFIG_PATH}/hydra-veil'
|
|
HV_CACHE_HOME: Final[str] = f'{CACHE_HOME}/hydra-veil'
|
|
HV_CONFIG_HOME: Final[str] = f'{CONFIG_HOME}/hydra-veil'
|
|
HV_DATA_HOME: Final[str] = f'{DATA_HOME}/hydra-veil'
|
|
HV_STATE_HOME: Final[str] = f'{STATE_HOME}/hydra-veil'
|
|
|
|
HV_SYSTEM_PROFILE_CONFIG_PATH: Final[str] = f'{HV_SYSTEM_CONFIG_PATH}/profiles'
|
|
HV_PROFILE_CONFIG_HOME: Final[str] = f'{HV_CONFIG_HOME}/profiles'
|
|
HV_PROFILE_DATA_HOME: Final[str] = f'{HV_DATA_HOME}/profiles'
|
|
HV_TICKETING_CONFIG_HOME: Final[str] = f'{HV_CONFIG_HOME}/ticketing'
|
|
HV_TICKETING_DATA_HOME: Final[str] = f'{HV_DATA_HOME}/ticket_data'
|
|
HV_APPLICATION_DATA_HOME: Final[str] = f'{HV_DATA_HOME}/applications'
|
|
HV_INCIDENT_DATA_HOME: Final[str] = f'{HV_DATA_HOME}/incidents'
|
|
HV_RUNTIME_DATA_HOME: Final[str] = f'{HV_DATA_HOME}/runtime'
|
|
HV_STORAGE_DATABASE_PATH: Final[str] = f'{HV_DATA_HOME}/storage.db'
|
|
HV_CAPABILITY_POLICY_PATH: Final[str] = f'{SYSTEM_CONFIG_PATH}/apparmor.d/hydra-veil'
|
|
HV_PRIVILEGE_POLICY_PATH: Final[str] = f'{SYSTEM_CONFIG_PATH}/sudoers.d/hydra-veil'
|
|
HV_SESSION_STATE_HOME: Final[str] = f'{HV_STATE_HOME}/sessions'
|
|
HV_TOR_STATE_HOME: Final[str] = f'{HV_STATE_HOME}/tor'
|
|
|
|
# ── sing-box ──────────────────────────────────────────────────────────────
|
|
SINGBOX_WRAPPER: Final[str] = os.environ.get(
|
|
'SINGBOX_WRAPPER', '/usr/local/bin/hydraveil-singbox'
|
|
)
|
|
SINGBOX_BIN: Final[str] = os.environ.get(
|
|
'SINGBOX_BIN', '/usr/bin/sing-box'
|
|
)
|
|
SINGBOX_CONFIG_DIR: Final[str] = f'{HV_DATA_HOME}/configs'
|
|
SINGBOX_PID_FILE: Final[str] = f'{HV_RUNTIME_DATA_HOME}/singbox.pid'
|
|
SINGBOX_LOG_FILE: Final[str] = f'{HV_RUNTIME_DATA_HOME}/singbox.log'
|
|
SINGBOX_TUN_IF: Final[str] = os.environ.get('SINGBOX_TUN_IF', 'tun0')
|
|
SINGBOX_INTERNAL_SUBNET: Final[str] = os.environ.get('SINGBOX_INTERNAL_SUBNET', '172.19.0.0/30')
|
|
SINGBOX_INTERNAL_ADDR: Final[str] = os.environ.get('SINGBOX_INTERNAL_ADDR', '172.19.0.1/30')
|
|
|
|
# ── killswitch / dns wrappers ─────────────────────────────────────────────
|
|
KILLSWITCH_WRAPPER: Final[str] = os.environ.get(
|
|
'KILLSWITCH_WRAPPER', '/usr/local/bin/hydraveil-killswitch'
|
|
)
|
|
RESOLVECTL_WRAPPER: Final[str] = os.environ.get(
|
|
'RESOLVECTL_WRAPPER', '/usr/local/bin/hydraveil-resolvectl'
|
|
)
|
|
|
|
VLESS_DNS_ENABLED: Final[bool] = os.environ.get('VLESS_DNS_ENABLED', 'true').lower() == 'true'
|
|
HYSTERIA2_DNS_ENABLED: Final[bool] = os.environ.get('HYSTERIA2_DNS_ENABLED', 'true').lower() == 'true' |