feat(tarpit): port-selective tc netem tarpit mode with live log events

- GET/POST/DELETE /api/v1/deckies/{name}/tarpit (admin write, viewer GET)
- get_container_veth() + get_container_pid() in network.py via iflink/ip-link
- TarpitRule SQLModel table + TarpitMixin repo (upsert/get/delete/list)
- Background tarpit_watcher_worker: polls /proc/{pid}/net/tcp every 15s,
  emits tarpit_enter/tarpit_exit log events (edge-triggered, with duration)
- tarpit_enabled/tarpit_disabled logs on operator POST/DELETE actions
This commit is contained in:
2026-04-29 18:49:42 -04:00
parent 2fc5f1bdc5
commit 5f4005c47a
10 changed files with 606 additions and 2 deletions

View File

@@ -179,6 +179,12 @@ from .workers import (
WorkersResponse,
WorkerStatus,
)
from .tarpit import (
TarpitEnableRequest,
TarpitRule,
TarpitRuleResponse,
TarpitStatusResponse,
)
__all__ = [
# _base
@@ -334,4 +340,9 @@ __all__ = [
"WorkerControlResponse",
"WorkersResponse",
"WorkerStatus",
# tarpit
"TarpitEnableRequest",
"TarpitRule",
"TarpitRuleResponse",
"TarpitStatusResponse",
]