package info import ( "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) func configure(plugin *node.Plugin) { webapi.Server.GET("info", getInfo) } // 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 { 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"` // 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"` }