From cb18a44cfa0466b167a0f4ee33bfb15b37cdbaa3 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sat, 15 Feb 2025 18:06:10 +0900 Subject: [PATCH] started writing a new endpoint for server peer info --- server-ctl.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ server.go | 2 ++ 2 files changed, 57 insertions(+) diff --git a/server-ctl.go b/server-ctl.go index 5ec2798..4a0f804 100644 --- a/server-ctl.go +++ b/server-ctl.go @@ -69,6 +69,10 @@ type server_ctl_server_conns_id_routes_id struct { server_ctl } +type server_ctl_server_conns_id_routes_id_peers struct { + server_ctl +} + type server_ctl_stats struct { server_ctl } @@ -414,6 +418,57 @@ oops: // ------------------------------------ +func (ctl *server_ctl_server_conns_id_routes_id_peers) ServeHTTP(w http.ResponseWriter, req *http.Request) (int, error) { + var s *Server + var status_code int + var conn_id string + var route_id string + var je *json.Encoder + var r *ServerRoute + var err error + + s = ctl.s + je = json.NewEncoder(w) + + conn_id = req.PathValue("conn_id") + route_id = req.PathValue("route_id") + r, err = s.FindServerRouteByIdStr(conn_id, route_id) + if err != nil { + status_code = WriteJsonRespHeader(w, http.StatusNotFound) + je.Encode(JsonErrmsg{Text: err.Error()}) + goto oops + } + + switch req.Method { + case http.MethodGet: + status_code = WriteJsonRespHeader(w, http.StatusOK) + err = je.Encode(json_out_server_route{ + Id: r.Id, + ClientPeerAddr: r.PtcAddr, + ClientPeerName: r.PtcName, + ServerPeerServiceAddr: r.SvcAddr.String(), + ServerPeerServiceNet: r.SvcPermNet.String(), + ServerPeerOption: r.SvcOption.String(), + }) + if err != nil { goto oops } + + case http.MethodDelete: + //r.ReqStopAllServerPeerConns() + status_code = WriteEmptyRespHeader(w, http.StatusNoContent) + + default: + status_code = WriteEmptyRespHeader(w, http.StatusMethodNotAllowed) + } + +//done: + return status_code, nil + +oops: + return status_code, err +} + +// ------------------------------------ + func (ctl *server_ctl_stats) ServeHTTP(w http.ResponseWriter, req *http.Request) (int, error) { var s *Server var status_code int diff --git a/server.go b/server.go index 00d6615..608c8e1 100644 --- a/server.go +++ b/server.go @@ -1074,6 +1074,8 @@ func NewServer(ctx context.Context, name string, logger Logger, cfg *ServerConfi s.wrap_http_handler(&server_ctl_server_conns_id_routes{server_ctl{s: &s, id: HS_ID_CTL}})) s.ctl_mux.Handle(s.cfg.CtlPrefix + "/_ctl/server-conns/{conn_id}/routes/{route_id}", s.wrap_http_handler(&server_ctl_server_conns_id_routes_id{server_ctl{s: &s, id: HS_ID_CTL}})) + s.ctl_mux.Handle(s.cfg.CtlPrefix + "/_ctl/server-conns/{conn_id}/routes/{route_id}/peers", + s.wrap_http_handler(&server_ctl_server_conns_id_routes_id_peers{server_ctl{s: &s, id: HS_ID_CTL}})) s.ctl_mux.Handle(s.cfg.CtlPrefix + "/_ctl/stats", s.wrap_http_handler(&server_ctl_stats{server_ctl{s: &s, id: HS_ID_CTL}})) s.ctl_mux.Handle(s.cfg.CtlPrefix + "/_ctl/token",