diff --git a/plugins/drng/drng.go b/plugins/drng/drng.go index 1af625823414239ed0d43a0e0bfe240f29833660..7f44946f9de4f6ed79321e6f7840e097627aba7c 100644 --- a/plugins/drng/drng.go +++ b/plugins/drng/drng.go @@ -1,12 +1,12 @@ package drng import ( - "encoding/hex" "errors" "fmt" "github.com/iotaledger/goshimmer/plugins/config" "github.com/iotaledger/hive.go/crypto/ed25519" + "github.com/mr-tron/base58/base58" ) var ( @@ -20,7 +20,7 @@ func parseCommitteeMembers() (result []ed25519.PublicKey, err error) { continue } - pubKey, err := hex.DecodeString(committeeMember) + pubKey, err := base58.Decode(committeeMember) if err != nil { return nil, fmt.Errorf("%w: invalid public key: %s", ErrParsingCommitteeMember, err) } diff --git a/plugins/webapi/info/plugin.go b/plugins/webapi/info/plugin.go index 13eaf5e11059bdd540000722b7ca18620d589db7..1d8c3d04313d4f62bf5b5657959be2b7181d0cd1 100644 --- a/plugins/webapi/info/plugin.go +++ b/plugins/webapi/info/plugin.go @@ -1,13 +1,14 @@ package info import ( - "encoding/hex" "net/http" "github.com/iotaledger/goshimmer/plugins/autopeering/local" + "github.com/iotaledger/goshimmer/plugins/banner" "github.com/iotaledger/goshimmer/plugins/webapi" "github.com/iotaledger/hive.go/node" "github.com/labstack/echo" + "github.com/mr-tron/base58" ) var PLUGIN = node.NewPlugin("WebAPI info Endpoint", node.Enabled, configure) @@ -17,11 +18,75 @@ func configure(plugin *node.Plugin) { } // getInfo returns the info of the node +// e.g., +// { +// "version":"v0.2.0", +// "identity":"7BxV1v3nFHefn4J88jeZebqnJRvSHt1jC7ME6tmKLhy7", +// "publickey":"CjUsn86jpFHWnSCx3NhWfU4Lk16mDdy1Hr7ERSTv3xn9", +// "enabledplugins":[ +// "Config", +// "Autopeering", +// "Analysis", +// "WebAPI data Endpoint", +// "WebAPI dRNG Endpoint", +// "MessageLayer", +// "CLI", +// "Database", +// "DRNG", +// "WebAPI autopeering Endpoint", +// "Metrics", +// "PortCheck", +// "SPA", +// "WebAPI", +// "WebAPI info Endpoint", +// "WebAPI message Endpoint", +// "Banner", +// "Gossip", +// "Graceful Shutdown", +// "Logger" +// ], +// "disabledlugins":[ +// "Graph", +// "RemoteLog", +// "Spammer", +// "WebAPI Auth" +// ] +// } func getInfo(c echo.Context) error { - return c.JSON(http.StatusOK, Response{PublicKey: hex.EncodeToString(local.GetInstance().PublicKey().Bytes())}) + enabledPlugins := []string{} + disabledPlugins := []string{} + for plugin, status := range node.GetPlugins() { + switch status { + case node.Disabled: + disabledPlugins = append(disabledPlugins, plugin) + case node.Enabled: + enabledPlugins = append(enabledPlugins, plugin) + default: + continue + } + } + + return c.JSON(http.StatusOK, Response{ + Version: banner.AppVersion, + Identity: base58.Encode(local.GetInstance().Identity.ID().Bytes()), + PublicKey: base58.Encode(local.GetInstance().PublicKey().Bytes()), + EnabledPlugins: enabledPlugins, + DisabledPlugins: disabledPlugins, + }) } +// Response holds the response of the GET request. type Response struct { + // version of GoShimmer + Version string `json:"version,omitempty"` + // identity of the node encoded in base58 + Identity string `json:"identity,omitempty"` + // public key of the node encoded in base58 PublicKey string `json:"publickey,omitempty"` - Error string `json:"error,omitempty"` + // list of enabled plugins + EnabledPlugins []string `json:"enabledplugins,omitempty"` + // list if disabled plugins + DisabledPlugins []string `json:"disabledlugins,omitempty"` + // error of the response + Error string `json:"error,omitempty"` }