39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
import os
|
|
from typing import List
|
|
|
|
from app.core._config import PROJECT_HOST
|
|
from .constants import NODE_TYPE_PUBLIC, NODE_TYPE_PRIVATE
|
|
|
|
|
|
def _csv_list(val: str) -> List[str]:
|
|
return [x.strip() for x in (val or "").split(",") if x.strip()]
|
|
|
|
|
|
# Handshake / network config driven by env
|
|
NODE_PRIVACY = os.getenv("NODE_PRIVACY", NODE_TYPE_PUBLIC).strip().lower()
|
|
if NODE_PRIVACY not in (NODE_TYPE_PUBLIC, NODE_TYPE_PRIVATE):
|
|
NODE_PRIVACY = NODE_TYPE_PUBLIC
|
|
|
|
# Public endpoint for network (can be empty for private nodes)
|
|
_env_public_host = os.getenv("PUBLIC_HOST")
|
|
PUBLIC_HOST = _env_public_host if (_env_public_host is not None and _env_public_host.strip() != "") else None
|
|
|
|
HANDSHAKE_INTERVAL_SEC = int(os.getenv("HANDSHAKE_INTERVAL_SEC", "5"))
|
|
UNSUPPORTED_RECHECK_INTERVAL_SEC = int(os.getenv("UNSUPPORTED_RECHECK_INTERVAL_SEC", str(24 * 3600)))
|
|
|
|
BOOTSTRAP_SEEDS = _csv_list(os.getenv("BOOTSTRAP_SEEDS", ""))
|
|
BOOTSTRAP_REQUIRED = int(os.getenv("BOOTSTRAP_REQUIRED", "1")) == 1
|
|
BOOTSTRAP_TIMEOUT_SEC = int(os.getenv("BOOTSTRAP_TIMEOUT_SEC", "20"))
|
|
|
|
# Security knobs
|
|
NETWORK_TLS_VERIFY = int(os.getenv("NETWORK_TLS_VERIFY", "1")) == 1
|
|
HANDSHAKE_TS_TOLERANCE_SEC = int(os.getenv("HANDSHAKE_TS_TOLERANCE_SEC", "300"))
|
|
HANDSHAKE_RATE_LIMIT_PER_MIN = int(os.getenv("HANDSHAKE_RATE_LIMIT_PER_MIN", "60"))
|
|
|
|
# Capabilities
|
|
NODE_IS_BOOTSTRAP = int(os.getenv("NODE_IS_BOOTSTRAP", "0")) == 1
|
|
MAX_CONTENT_SIZE_MB = int(os.getenv("MAX_CONTENT_SIZE_MB", "512"))
|
|
|
|
# Privacy allowlist (for NODE_PRIVACY=private)
|
|
PRIVATE_ALLOWLIST = _csv_list(os.getenv("PRIVATE_ALLOWLIST", "/api/system.version"))
|