guard/docs/api.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

2.7 KiB
Raw Blame History

API Reference - Rampart Manager

REST API управления. Base URL: http://MANAGER:8080 Авторизация: Bearer JWT (получить через /api/v1/auth/login).

Реализованные маршруты — см. src/bin/rampart-manager.rs. Это полный список: ничего сверх перечисленного здесь API не предоставляет.


Аутентификация

POST /api/v1/auth/login

// Request
{"password": "значение API_PASSWORD"}

// Response 200
{"token": "eyJhbGciOiJIUzI1NiIs..."}

// 401 → неверный пароль; 429 → больше 5 попыток за минуту с одного IP

Все защищённые запросы:

Authorization: Bearer <token>

Токен живёт JWT_EXPIRATION_SECS секунд (дефолт 86400).


Health (публичный)

GET /api/v1/health

{"status": "healthy", "version": "0.3.0-dev"}

Servers

GET /api/v1/servers 🔒

Список серверов из Redis-реестра (rampart:servers:*).

{
  "servers": [
    {"name": "app-01", "type": "tcp", "ip": "10.0.2.1", "port": 25566, "status": "online"}
  ]
}

Redis недоступен → пустой список.


Blacklist

GET /api/v1/blacklist 🔒

{
  "items": [
    {"target": "1.2.3.4", "type": "ip", "reason": "manual_ban",
     "created_at": "...", "expires_at": null}
  ],
  "total": 42
}

Источник: Redis set rampart:blacklist. Пагинации и фильтров нет.

POST /api/v1/blacklist 🔒

// Request
{"target": "1.2.3.4", "type": "ip", "reason": "manual_ban", "duration_secs": 3600}

// Response 200/201 — запись добавлена в Redis set

Edge-ноды подхватывают ban при следующей синхронизации блэклиста.


Nodes

GET /api/v1/nodes 🔒

Список зарегистрированных edge-нод из Redis (rampart:nodes:*, heartbeat).

{
  "nodes": [
    {"id": "edge-eu-1", "role": "edge", "ip": "10.0.100.1",
     "status": "online", "last_heartbeat": "..."}
  ]
}

Не реализовано

Честно, на текущий момент в API нет:

  • удаления записей blacklist (только add/list);
  • drain нод через API (есть только CLI rampart-cli drain);
  • webhooks, metrics summary, challenge management;
  • регистрации нод через POST /api/v1/nodes;
  • rate limiting на сами запросы API (кроме login).

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