diff --git a/core/protocol.go b/core/protocol.go index ab81268f..77471f15 100644 --- a/core/protocol.go +++ b/core/protocol.go @@ -44,3 +44,12 @@ func RequestConfig(conn net.Conn, localPort, deviceID, password string) (string, return resp, nil } + +// SendAuth авторизует рабочую DTLS-сессию, которая не запрашивает WireGuard-конфиг. +func SendAuth(conn net.Conn, deviceID, password string) error { + payload := fmt.Sprintf("AUTH:%s|%s", deviceID, password) + if _, err := conn.Write([]byte(payload)); err != nil { + return fmt.Errorf("отправка AUTH: %w", err) + } + return nil +} diff --git a/core/session.go b/core/session.go index aebcb167..41fd8a65 100644 --- a/core/session.go +++ b/core/session.go @@ -380,6 +380,10 @@ func RunSession( } else { log.Printf("[ВОРКЕР #%d] Сервер ещё не выдал WireGuard-конфиг, повторим позже", sessionID) } + } else { + if authErr := SendAuth(dtlsConn, deviceID, password); authErr != nil { + log.Printf("[ВОРКЕР #%d] Ошибка авторизации: %v", sessionID, authErr) + } } emitReady()