From 0e4a6577008b51f886b35ee05025ad3f4c37ef4c Mon Sep 17 00:00:00 2001 From: Owen Date: Sun, 30 Nov 2025 17:52:57 -0500 Subject: [PATCH] Add terminated status Former-commit-id: 4a471713e7ed7c457c40e8c7d3e26148b0dbe1ca --- api/api.go | 10 ++++++++++ olm/olm.go | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/api/api.go b/api/api.go index a8c6f29..468bfbc 100644 --- a/api/api.go +++ b/api/api.go @@ -50,6 +50,7 @@ type PeerStatus struct { type StatusResponse struct { Connected bool `json:"connected"` Registered bool `json:"registered"` + Terminated bool `json:"terminated"` Version string `json:"version,omitempty"` OrgID string `json:"orgId,omitempty"` PeerStatuses map[int]*PeerStatus `json:"peers,omitempty"` @@ -71,6 +72,7 @@ type API struct { connectedAt time.Time isConnected bool isRegistered bool + isTerminated bool version string orgID string } @@ -206,6 +208,12 @@ func (s *API) SetRegistered(registered bool) { s.isRegistered = registered } +func (s *API) SetTerminated(terminated bool) { + s.statusMu.Lock() + defer s.statusMu.Unlock() + s.isTerminated = terminated +} + // SetVersion sets the olm version func (s *API) SetVersion(version string) { s.statusMu.Lock() @@ -295,6 +303,7 @@ func (s *API) handleStatus(w http.ResponseWriter, r *http.Request) { resp := StatusResponse{ Connected: s.isConnected, Registered: s.isRegistered, + Terminated: s.isTerminated, Version: s.version, OrgID: s.orgID, PeerStatuses: s.peerStatuses, @@ -420,6 +429,7 @@ func (s *API) GetStatus() StatusResponse { return StatusResponse{ Connected: s.isConnected, Registered: s.isRegistered, + Terminated: s.isTerminated, Version: s.version, OrgID: s.orgID, PeerStatuses: s.peerStatuses, diff --git a/olm/olm.go b/olm/olm.go index 52ec8c0..5d0056b 100644 --- a/olm/olm.go +++ b/olm/olm.go @@ -167,6 +167,9 @@ func StartTunnel(config TunnelConfig) { tunnelRunning = true // Also set it here in case it is called externally + // Reset terminated status when tunnel starts + apiServer.SetTerminated(false) + // debug print out the whole config logger.Debug("Starting tunnel with config: %+v", config) @@ -744,6 +747,7 @@ func StartTunnel(config TunnelConfig) { olm.RegisterHandler("olm/terminate", func(msg websocket.WSMessage) { logger.Info("Received terminate message") + apiServer.SetTerminated(true) Close() if globalConfig.OnTerminated != nil {