mirror of
https://github.com/andrey271192/domen_hydra.git
synced 2026-09-20 14:42:00 +00:00
- server/config.py: VPS_SSH_HOST, VPS_SSH_PORT, VPS_SSH_USER, TUNNEL_PORT_START - server/.env.example: секция тоннеля - server/main.py: _gen_ed25519_keypair, _add_pubkey_to_authorized_keys; _ssh_on_router и _push_one_router поддерживают tunnel_port; эндпоинты tunnel-cmd, tunnel-script (одноразовый токен 10 мин), tunnel-status, DELETE tunnel - index.html: кнопка ⇄ у каждого роутера + подсветка тоннельного порта, кнопка ⇄ Тоннель в форме добавления, модалка с curl-командой, копирование (clipboard + execCommand fallback), проверка связи - README: полная переработка — туннель, логины/пароли, ошибки, советы Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
import os, json, logging
|
|
from pathlib import Path
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
logger = logging.getLogger("hydra")
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent
|
|
DATA_DIR = BASE_DIR / "data"
|
|
|
|
HOST = os.getenv("HOST", "0.0.0.0")
|
|
PORT = int(os.getenv("PORT", "8000"))
|
|
ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD", "admin")
|
|
SSH_USER = os.getenv("SSH_USER", "root")
|
|
SSH_PASS = os.getenv("SSH_PASS", "keenetic")
|
|
|
|
# Reverse SSH tunnel — для роутеров без белого IP
|
|
VPS_SSH_HOST = (os.getenv("VPS_SSH_HOST") or "").strip()
|
|
VPS_SSH_PORT = int(os.getenv("VPS_SSH_PORT") or "22")
|
|
VPS_SSH_USER = (os.getenv("VPS_SSH_USER") or "root").strip()
|
|
TUNNEL_PORT_START = int(os.getenv("TUNNEL_PORT_START") or "20100")
|
|
|
|
HYDRA_FILE = DATA_DIR / "hydra_config.json"
|
|
ROUTERS_FILE = DATA_DIR / "routers.json"
|
|
|
|
def ensure_data():
|
|
DATA_DIR.mkdir(parents=True, exist_ok=True)
|
|
defaults = {
|
|
HYDRA_FILE: {"version":"1.0","domain_groups":[],"ip_groups":[]},
|
|
ROUTERS_FILE: {},
|
|
}
|
|
for fp, default in defaults.items():
|
|
if not fp.exists():
|
|
fp.write_text(json.dumps(default, ensure_ascii=False, indent=2))
|
|
|
|
ensure_data()
|