implemented some more control channel handler in server.go

This commit is contained in:
2024-12-08 23:16:43 +09:00
parent 3c9b65476a
commit be0d31b06c
5 changed files with 194 additions and 17 deletions

View File

@ -397,7 +397,6 @@ done:
oops:
c.log.Write("", LOG_ERROR, "[%s] %s %s - %s", req.RemoteAddr, req.Method, req.URL.String(), err.Error())
return
}
// ------------------------------------
@ -412,6 +411,7 @@ func (ctl *client_ctl_client_conns_id_routes_id) ServeHTTP(w http.ResponseWriter
var route_nid uint64
var je *json.Encoder
var cts *ClientConn
var r *ClientRoute
defer func() {
var err interface{} = recover()
@ -444,24 +444,27 @@ func (ctl *client_ctl_client_conns_id_routes_id) ServeHTTP(w http.ResponseWriter
goto done
}
r = cts.FindClientRouteById(uint32(route_nid))
if r == nil {
status_code = http.StatusNotFound; w.WriteHeader(status_code)
if err = je.Encode(json_errmsg{Text: "non-existent route id - " + conn_id}); err != nil { goto oops }
goto done
}
switch req.Method {
case http.MethodGet:
var r *ClientRoute
r = cts.FindClientRouteById(uint32(route_nid))
if r == nil {
status_code = http.StatusNotFound; w.WriteHeader(status_code)
if err = je.Encode(json_errmsg{Text: "non-existent route id - " + conn_id}); err != nil { goto oops }
goto done
}
status_code = http.StatusOK; w.WriteHeader(status_code)
err = je.Encode(json_out_client_route{
Id: r.id,
ClientPeerAddr: r.peer_addr,
ServerPeerListenAddr: r.server_peer_listen_addr.String(),
ServerPeerNet: r.server_peer_net,
ServerPeerProto: r.server_peer_proto,
})
if err != nil { goto oops }
case http.MethodDelete:
cts.ReqStop()
r.ReqStop()
status_code = http.StatusNoContent; w.WriteHeader(status_code)
default: