package nns import ( "math/big" "git.frostfs.info/TrueCloudLab/frostfs-contract/nns" client "git.frostfs.info/TrueCloudLab/frostfs-contract/rpcclient/nns" "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-adm/internal/commonflags" commonCmd "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/internal/common" "github.com/spf13/cobra" ) const ( verboseDesc = "Includes additional information about CNAME record." ) func initTokensCmd() { Cmd.AddCommand(tokensCmd) tokensCmd.Flags().StringP(commonflags.EndpointFlag, commonflags.EndpointFlagShort, "", commonflags.EndpointFlagDesc) tokensCmd.Flags().String(commonflags.AlphabetWalletsFlag, "", commonflags.AlphabetWalletsFlagDesc) tokensCmd.Flags().BoolP(commonflags.Verbose, commonflags.VerboseShorthand, false, verboseDesc) } func listTokens(cmd *cobra.Command, _ []string) { c, _, _ := getRPCClient(cmd) it, err := c.Tokens() commonCmd.ExitOnErr(cmd, "unable to get tokens: %w", err) for toks, err := it.Next(10); err == nil && len(toks) > 0; toks, err = it.Next(10) { for _, token := range toks { output := string(token) if longFlag, err := cmd.Flags().GetBool(commonflags.Verbose); err == nil && longFlag { if cname := getCnameRecord(c, token); cname != "" { output += " ( CNAME: " + cname + " )" } } cmd.Println(output) } } } func getCnameRecord(c *client.Contract, token []byte) string { items, err := c.GetRecords(string(token), big.NewInt(int64(nns.CNAME))) if err != nil { return "" } for _, item := range items { record, err := item.TryBytes() if err != nil { continue } return string(record) } return "" }