guard/deploy/test/stress/legit.py
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

43 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""Generic TCP-клиент: подключается ВО ВРЕМЯ DDoS и меряет RTT."""
import argparse
import socket
import time
def main():
p = argparse.ArgumentParser()
p.add_argument("--target", default="127.0.0.1")
p.add_argument("--port", type=int, default=25565)
p.add_argument("--count", type=int, default=6)
p.add_argument("--interval", type=float, default=5.0)
p.add_argument("--timeout", type=float, default=10.0)
p.add_argument("--name", default="legit")
args = p.parse_args()
for i in range(args.count):
t0 = time.time()
s = None
try:
s = socket.create_connection((args.target, args.port), timeout=args.timeout)
s.settimeout(args.timeout)
# Ждём первый байт от edge (PoW challenge / upstream-ответ).
resp = s.recv(1)
rtt = (time.time() - t0) * 1000
ok = len(resp) > 0
print(f"[{args.name}#{i}] {'OK' if ok else 'NO_RESP'} rtt={rtt:.1f}ms")
except Exception as e:
rtt = (time.time() - t0) * 1000
print(f"[{args.name}#{i}] FAIL {type(e).__name__}: {e} rtt={rtt:.1f}ms")
finally:
if s:
try:
s.close()
except Exception:
pass
time.sleep(args.interval)
if __name__ == "__main__":
main()