@startuml skinparam shadowing false title Master registration (every 5 min) participant "Master\netmaster.net:27950" as master participant "etrelay\nfront :27960" as relay participant "ET server\n(via wg + nginx)" as et == Liveness probe (dedicated ephemeral socket) == relay -> et : getinfo etrelay et --> relay : infoResponse note right of relay : up: send heartbeat\nno answer x3: skip (or flatline once) == Heartbeat (public socket) == relay -> master : heartbeat EnemyTerritory-1\nsource = front:27960 == Master checks: handled like any client == master -> relay : getChallenge\nto front:27960 relay -> relay : new session for master:27950 relay -> et : getChallenge et --> relay : challengeResponse relay --> master : challengeResponse\nsource = front:27960 master -> relay : getInfo relay -> et : getInfo et --> relay : infoResponse (hostname, map, players) relay --> master : infoResponse\nsource = front:27960 note left of master : lists :27960 @enduml