diff --git a/api/api_common.go b/api/api_common.go index ec410bac7..f8fcbe8c5 100644 --- a/api/api_common.go +++ b/api/api_common.go @@ -30,6 +30,7 @@ type Common interface { NetFindPeer(context.Context, peer.ID) (peer.AddrInfo, error) NetPubsubScores(context.Context) ([]PubsubScore, error) NetAutoNatStatus(context.Context) (NatInfo, error) + NetAgentVersion(ctx context.Context, p peer.ID) (string, error) // NetBandwidthStats returns statistics about the nodes total bandwidth // usage and current rate across all peers and protocols. diff --git a/api/apistruct/struct.go b/api/apistruct/struct.go index 02c2ee89f..2bc7d57c8 100644 --- a/api/apistruct/struct.go +++ b/api/apistruct/struct.go @@ -55,6 +55,7 @@ type CommonStruct struct { NetBandwidthStats func(ctx context.Context) (metrics.Stats, error) `perm:"read"` NetBandwidthStatsByPeer func(ctx context.Context) (map[string]metrics.Stats, error) `perm:"read"` NetBandwidthStatsByProtocol func(ctx context.Context) (map[protocol.ID]metrics.Stats, error) `perm:"read"` + NetAgentVersion func(ctx context.Context, p peer.ID) (string, error) `perm:"read"` ID func(context.Context) (peer.ID, error) `perm:"read"` Version func(context.Context) (api.Version, error) `perm:"read"` @@ -389,6 +390,10 @@ func (c *CommonStruct) NetBandwidthStatsByProtocol(ctx context.Context) (map[pro return c.Internal.NetBandwidthStatsByProtocol(ctx) } +func (c *CommonStruct) NetAgentVersion(ctx context.Context, p peer.ID) (string, error) { + return c.Internal.NetAgentVersion(ctx, p) +} + // ID implements API.ID func (c *CommonStruct) ID(ctx context.Context) (peer.ID, error) { return c.Internal.ID(ctx) diff --git a/cli/net.go b/cli/net.go index 7730bdf91..f3b5ae2e9 100644 --- a/cli/net.go +++ b/cli/net.go @@ -35,6 +35,13 @@ var netCmd = &cli.Command{ var NetPeers = &cli.Command{ Name: "peers", Usage: "Print peers", + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "agent", + Aliases: []string{"a"}, + Usage: "Print agent name", + }, + }, Action: func(cctx *cli.Context) error { api, closer, err := GetAPI(cctx) if err != nil { @@ -52,7 +59,17 @@ var NetPeers = &cli.Command{ }) for _, peer := range peers { - fmt.Printf("%s, %s\n", peer.ID, peer.Addrs) + var agent string + if cctx.Bool("agent") { + agent, err = api.NetAgentVersion(ctx, peer.ID) + if err != nil { + log.Warnf("getting agent version: %s", err) + } else { + agent = ", " + agent + } + } + + fmt.Printf("%s, %s%s\n", peer.ID, peer.Addrs, agent) } return nil diff --git a/documentation/en/api-methods.md b/documentation/en/api-methods.md index 2127332e5..bba212d45 100644 --- a/documentation/en/api-methods.md +++ b/documentation/en/api-methods.md @@ -84,6 +84,7 @@ * [MsigSwapPropose](#MsigSwapPropose) * [Net](#Net) * [NetAddrsListen](#NetAddrsListen) + * [NetAgentVersion](#NetAgentVersion) * [NetAutoNatStatus](#NetAutoNatStatus) * [NetBandwidthStats](#NetBandwidthStats) * [NetBandwidthStatsByPeer](#NetBandwidthStatsByPeer) @@ -96,6 +97,7 @@ * [NetPubsubScores](#NetPubsubScores) * [Paych](#Paych) * [PaychAllocateLane](#PaychAllocateLane) + * [PaychAvailableFunds](#PaychAvailableFunds) * [PaychCollect](#PaychCollect) * [PaychGet](#PaychGet) * [PaychGetWaitReady](#PaychGetWaitReady) @@ -2047,6 +2049,20 @@ Response: } ``` +### NetAgentVersion + + +Perms: read + +Inputs: +```json +[ + "12D3KooWGzxzKZYveHXtpG6AsrUJBcWxHBFS2HsEoGTxrMLvKXtf" +] +``` + +Response: `"string value"` + ### NetAutoNatStatus @@ -2218,6 +2234,30 @@ Inputs: Response: `42` +### PaychAvailableFunds +There are not yet any comments for this method. + +Perms: sign + +Inputs: +```json +[ + "t01234" +] +``` + +Response: +```json +{ + "Channel": "\u003cempty\u003e", + "ConfirmedAmt": "0", + "PendingAmt": "0", + "PendingWaitSentinel": null, + "QueuedAmt": "0", + "VoucherReedeemedAmt": "0" +} +``` + ### PaychCollect There are not yet any comments for this method. @@ -2473,24 +2513,27 @@ Inputs: Response: ```json { - "ChannelAddr": "t01234", - "TimeLockMin": 10101, - "TimeLockMax": 10101, - "SecretPreimage": "Ynl0ZSBhcnJheQ==", - "Extra": { - "Actor": "t01234", - "Method": 1, - "Data": "Ynl0ZSBhcnJheQ==" + "Voucher": { + "ChannelAddr": "t01234", + "TimeLockMin": 10101, + "TimeLockMax": 10101, + "SecretPreimage": "Ynl0ZSBhcnJheQ==", + "Extra": { + "Actor": "t01234", + "Method": 1, + "Data": "Ynl0ZSBhcnJheQ==" + }, + "Lane": 42, + "Nonce": 42, + "Amount": "0", + "MinSettleHeight": 10101, + "Merges": null, + "Signature": { + "Type": 2, + "Data": "Ynl0ZSBhcnJheQ==" + } }, - "Lane": 42, - "Nonce": 42, - "Amount": "0", - "MinSettleHeight": 10101, - "Merges": null, - "Signature": { - "Type": 2, - "Data": "Ynl0ZSBhcnJheQ==" - } + "Shortfall": "0" } ``` diff --git a/node/impl/common/common.go b/node/impl/common/common.go index cd1812058..6a69b2a7a 100644 --- a/node/impl/common/common.go +++ b/node/impl/common/common.go @@ -136,6 +136,19 @@ func (a *CommonAPI) NetAutoNatStatus(ctx context.Context) (i api.NatInfo, err er }, nil } +func (a *CommonAPI) NetAgentVersion(ctx context.Context, p peer.ID) (string, error) { + ag, err := a.Host.Peerstore().Get(p, "AgentVersion") + if err != nil { + return "", err + } + + if ag == nil { + return "unknown", nil + } + + return ag.(string), nil +} + func (a *CommonAPI) NetBandwidthStats(ctx context.Context) (metrics.Stats, error) { return a.Reporter.GetBandwidthTotals(), nil }