wg-easy + Traefik docker-compose stack (Phase 1) plus a stdlib-only control-plane API for box registration, WireGuard peer provisioning via wg-easy, and per-box route publish/unpublish backed by Traefik's file provider (Phase 2, single-tenant mode). SQLite holds accounts/boxes/routes so a later multi-tenant shared instance is the same schema with more rows, not a reshape. wg-easy's actual REST API was verified against its source rather than assumed: it has no bearer-token auth (session-cookie login via POST /api/auth/password) and no way to accept an externally-generated public key (it always mints the keypair itself, private key included) — both corrected from the original plan during implementation.
13 lines
494 B
Python
13 lines
494 B
Python
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def gateway_paths(tmp_path, monkeypatch):
|
|
"""Redirect GATEWAY_STATE_DIR/GATEWAY_DYNAMIC_DIR to tmp_path, the same
|
|
env-var-override convention furtka-core's own tests use via FURTKA_*.
|
|
"""
|
|
state_dir = tmp_path / "state"
|
|
dynamic_dir = tmp_path / "dynamic"
|
|
monkeypatch.setenv("GATEWAY_STATE_DIR", str(state_dir))
|
|
monkeypatch.setenv("GATEWAY_DYNAMIC_DIR", str(dynamic_dir))
|
|
return {"state_dir": state_dir, "dynamic_dir": dynamic_dir}
|