Skip to content

Commit

Permalink
Removed GET DHT related code. Added GET Tree method.
Browse files Browse the repository at this point in the history
  • Loading branch information
vikulin committed Dec 22, 2023
1 parent 3adf5fd commit e19556a
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 91 deletions.
10 changes: 0 additions & 10 deletions src/core/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,12 +278,6 @@ func (c *Core) SetAdmin(a AddHandler) error {
); err != nil {
return err
}
if err := a.AddHandler(
"debug_remoteGetDHT", "Debug use only", []string{"key"},
c.proto.getDHTHandler,
); err != nil {
return err
}
return nil
}

Expand Down Expand Up @@ -315,7 +309,3 @@ func (c *Core) RemoteGetSelf(key string) (map[string]any, error) {
func (c *Core) RemoteGetPeers(key string) (map[string]any, error) {
return applyAdminCall(c.proto.getPeersHandler, key)
}

func (c *Core) RemoteGetDHT(key string) (map[string]any, error) {
return applyAdminCall(c.proto.getDHTHandler, key)
}
67 changes: 0 additions & 67 deletions src/core/proto.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,29 +191,6 @@ func (p *protoHandler) _handleGetPeersResponse(domain types.Addr, bs []byte) {
}
}

// Get DHT

func (p *protoHandler) sendGetDHTRequest(domain types.Addr, callback func([]byte)) {
p.Act(nil, func() {
key := domain.Key
if info := p.dhtRequests[key]; info != nil {
info.timer.Stop()
delete(p.dhtRequests, key)
}
info := new(reqInfo)
info.callback = callback
info.timer = time.AfterFunc(time.Minute, func() {
p.Act(nil, func() {
if p.dhtRequests[key] == info {
delete(p.dhtRequests, key)
}
})
})
p.dhtRequests[key] = info
p._sendDebug(domain, typeDebugGetTreeRequest, nil)
})
}

func (p *protoHandler) _handleGetTreeRequest(domain types.Addr) {
dinfos := p.core.GetTree()
var bs []byte
Expand Down Expand Up @@ -314,47 +291,3 @@ func (p *protoHandler) getPeersHandler(in json.RawMessage) (interface{}, error)
return res, nil
}
}

// Admin socket stuff for "Get DHT"

type DebugGetDHTRequest struct {
Key types.Domain `json:"key"`
}

type DebugGetDHTResponse map[string]interface{}

func (p *protoHandler) getDHTHandler(in json.RawMessage) (interface{}, error) {
var req DebugGetDHTRequest
if err := json.Unmarshal(in, &req); err != nil {
return nil, err
}
key := req.Key.Key //nolint:all
ch := make(chan []byte, 1)
p.sendGetDHTRequest(types.Addr(req.Key), func(info []byte) {
ch <- info
})
timer := time.NewTimer(6 * time.Second)
defer timer.Stop()
select {
case <-timer.C:
return nil, ErrTimeout
case info := <-ch:
ks := make(map[string][]string)
bs := info
for len(bs) >= len(key) {
ks["keys"] = append(ks["keys"], hex.EncodeToString(bs[:len(key)]))
bs = bs[len(key):]
}
js, err := json.Marshal(ks)
if err != nil {
return nil, err
}
var msg json.RawMessage
if err := msg.UnmarshalJSON(js); err != nil {
return nil, err
}
ip := net.IP(p.core.AddrForDomain(req.Key)[:])
res := DebugGetDHTResponse{ip.String(): msg}
return res, nil
}
}
15 changes: 1 addition & 14 deletions src/restapi/rest_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,15 +154,14 @@ Request header "Riv-Save-Config: true" persists changes`, Handler: a.putApiPeers
Request header "Riv-Save-Config: true" persists changes`, Handler: a.deleteApiPeersHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/publicpeers", Desc: "Show public peers loaded from URL which configured in mesh.conf file", Handler: a.getApiPublicPeersHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/paths", Desc: "Show established paths through this node", Handler: a.getApiPathsHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/tree", Desc: "Show known Tree entries.", Handler: a.getApiTreeHandler})
a.AddHandler(ApiHandler{Method: "POST", Pattern: "/api/health", Desc: "Run peers health check task", Handler: a.postApiHealthHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/sse", Desc: "Return server side events", Handler: a.getApiSseHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/dht", Desc: "Show known Tree entries", Handler: a.getApiTreeHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/sessions", Desc: "Show established traffic sessions with remote nodes", Handler: a.getApiSessionsHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/multicastinterfaces", Desc: "Show which interfaces multicast is enabled on", Handler: a.getApiMulticastinterfacesHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/remote/nodeinfo/{key}", Desc: "Request nodeinfo from a remote node by its public key", Handler: a.getApiRemoteNodeinfoHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/remote/self/{key}", Desc: "Request self from a remote node by its public key", Handler: a.getApiRemoteSelfHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/remote/peers/{key}", Desc: "Request peers from a remote node by its public key", Handler: a.getApiRemotePeersHandler})
a.AddHandler(ApiHandler{Method: "GET", Pattern: "/api/remote/dht/{key}", Desc: "Request dht from a remote node by its public key", Handler: a.getApiRemoteDHTHandler})

var _ = a.Core.PeersChangedSignal.Connect(func(data any) {
b, err := json.Marshal(a.prepareGetPeers())
Expand Down Expand Up @@ -782,18 +781,6 @@ func (a *RestServer) getApiRemotePeersHandler(w http.ResponseWriter, r *http.Req
applyKeyParameterized(w, r, a.Core.RemoteGetPeers)
}

// @Summary Show DHT entries of a remote node.
// @Produce json
// @Param key path string true "Public key string"
// @Success 200 {string} string "ok"
// @Failure 400 {error} error "Method not allowed"
// @Failure 401 {error} error "Authentication failed"
// @Failure 404 {error} error "Not found"
// @Router /remote/dht/{key} [get]
func (a *RestServer) getApiRemoteDHTHandler(w http.ResponseWriter, r *http.Request) {
applyKeyParameterized(w, r, a.Core.RemoteGetDHT)
}

func (a *RestServer) postApiHealthHandler(w http.ResponseWriter, r *http.Request) {
peer_list := []string{}

Expand Down

0 comments on commit e19556a

Please sign in to comment.