guard/docs/configuration.md
loki5512344 15f474486a
feat!: universal redesign — drop Minecraft stack, single-crate architecture
- remove Java plugins (velocity/paper), dashboard, all MC-specific code
  (handshake, death_code, varint, hostname-HMAC); available in history pre-v0.2
- merge crates/* into one package with src/bin/{rampart,rampart-manager,rampart-cli}
- ProtocolHandler trait + registry (no implementations yet), universal PoW kept
- XDP: universal L3/L4 filter (xdp/core/) + pluggable hook API (xdp/hooks/),
  fix IPv6 saddr bug; clang build verified
- docs: bilingual knowledge base (docs/kb/: attacks x4, defense-levels,
  practice x3), rewrite README/architecture for universal concept
- TODO.md v4.0: <=300-line module limit, competitor benchmark section (ref/)
- deploy/CI/docs cleanup: no MC references, new binary names

cargo build/clippy(-D warnings)/test green (55 tests)
2026-08-24 01:50:22 +02:00

3.4 KiB
Raw Blame History

Configuration - Rampart

Единый конфиг edge-ноды (config.toml) и переменные окружения Manager. Схема конфига: src/config/sections.rs — единственный источник правды.

1. Edge (config.toml, путь задаётся RAMPART_CONFIG)

[bind]
address = "0.0.0.0"
port = 25565

[backend]
# Список TCP-бэкендов (addr:port). Обязателен непустой, адреса валидируются.
upstreams = ["127.0.0.1:25566"]

[workers]
count = 4

[limits]
handshake_timeout_secs = 5      # таймаут чтения (slowloris-защита)
max_connections_per_ip = 10     # одновременные соединения с одного IP
rate_limit_pps = 5.0            # лимит коннектов/сек с одного IP
rate_limit_burst = 10.0         # burst

[ban]
ban_duration_secs = 3600

[store]
redis_url = ""                  # пусто = синхронизация блэклиста выключена
blacklist_cache_ttl_secs = 300
clickhouse_url = ""             # пусто = запись событий выключена

[xdp]
enabled = false                 # требует сборки --features xdp, kernel 5.10+
interface = "eth0"

[logging]
level = "info"                  # trace, debug, info, warn, error
format = "text"                 # text или json

[metrics]
enabled = true
port = 9090

[pow]
enabled = false                 # PoW challenge, OFF по умолчанию
difficulty = 4

whitelist = ["127.0.0.1", "::1"]   # только IP-адреса, валидируются при парсинге

Все секции опциональны — при отсутствии используются дефолты из таблицы выше.

2. Manager (переменные окружения)

Переменная Обязательна По умолчанию Описание
REDIS_URL нет redis://127.0.0.1:6379/0 Хранилище состояния
JWT_SECRET да — Минимум 32 байта
JWT_AUDIENCE нет rampart Audience JWT
JWT_EXPIRATION_SECS нет 86400 Время жизни токена
API_PASSWORD да — Пароль для /api/v1/auth/login; значение changeme запрещено
CORS_ORIGIN нет http://localhost:5173 CORS; * или пусто — разрешить все

Manager всегда слушает 0.0.0.0:8080.

3. Feature flags сборки (Cargo.toml)

Feature По умолчанию Что включает
store-redis ✅ Redis-клиент и синхронизация блэклиста
geoip ❌ GeoIP lookup (maxminddb)
xdp ❌ Загрузка XDP-программы через libbpf-rs
io-uring ❌ splice/io_uring I/O
protocol-http ❌ Резерв под HTTP-плагин (пока пустой)

Пример: cargo build --release --features xdp --bin rampart.

4. BPF/XDP программа

Исходник: xdp/core/universal_filter.c. Smoke-check компиляции:

clang -O2 -g -target bpf -c xdp/core/universal_filter.c -o /tmp/universal_filter.o

Версия: 2.0 | Август 2026