actions

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 28, 2023 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	InvalidParameter     = 1
	OperationFailed      = 2
	AuthenticationFailed = 3

	LocalIndexStoreID   = "did:piprate:B7hqrwxrCnsWqtBnbYnhABwzktnT5oo1ZWbtby3My886"
	LocalIndexStoreName = "local"

	DefaultMetaLockerURL = "https+insecure://127.0.0.1:4000"

	MetaloVersion = "0.0.1"
)

Variables

View Source
var (
	AccountSet = []*cli.Command{
		{
			Name:   "register",
			Usage:  "register new user",
			Action: RegisterCommand,
			Flags: []cli.Flag{
				&cli.StringFlag{
					Name:  "email",
					Value: "",
					Usage: "Account email",
				},
				&cli.StringFlag{
					Name:    "password",
					Value:   "",
					Usage:   "Password",
					EnvVars: []string{"PASSWD"},
				},
				&cli.StringFlag{
					Name:    "code",
					Value:   "",
					Usage:   "Registration Code (optional)",
					EnvVars: []string{"REGCODE"},
				},
				&cli.StringFlag{
					Name:  "identity-file",
					Value: "",
					Usage: "Identity file",
				},
				&cli.StringFlag{
					Name:  "name",
					Value: "",
					Usage: "Full name",
				},
			},
		},
		{
			Name:   "print-account",
			Usage:  "print account JSON",
			Action: PrintAccount,
			Flags: []cli.Flag{
				&cli.BoolFlag{
					Name:  "detailed",
					Usage: "include all identities and lockers",
				},
			},
		},
		{
			Name:   "print-account-chart",
			Usage:  "print account chart",
			Action: PrintAccountChart,
		},
		{
			Name:   "delete-account",
			Usage:  "delete account",
			Action: DeleteAccount,
		},
		{
			Name:   "change-email",
			Usage:  "change account email",
			Action: ChangeEmail,
			Flags: []cli.Flag{
				&cli.StringFlag{
					Name:    "email",
					Value:   "",
					Usage:   "New account email",
					EnvVars: []string{"NEWUSER"},
				},
			},
		},
		{
			Name:   "change-password",
			Usage:  "change account password",
			Action: ChangePassphrase,
			Flags: []cli.Flag{
				&cli.StringFlag{
					Name:    "new-password",
					Value:   "",
					Usage:   "New Password",
					EnvVars: []string{"NEWPASSWD"},
				},
			},
		},
		{
			Name:   "recover-account",
			Usage:  "recover account",
			Action: RecoverAccount,
			Flags: []cli.Flag{
				&cli.StringFlag{
					Name:    "rec-phrase",
					Value:   "",
					Usage:   "Recovery phrase (received at account creation)",
					EnvVars: []string{"RECPHRASE"},
				},
				&cli.StringFlag{
					Name:    "new-password",
					Value:   "",
					Usage:   "New Password",
					EnvVars: []string{"NEWPASSWD"},
				},
			},
		},
		{
			Name:   "recover-account-with-slrc",
			Usage:  "recover account with SLRC code",
			Action: RecoverAccountSecondLevel,
			Flags: []cli.Flag{
				&cli.StringFlag{
					Name:    "slrc",
					Value:   "",
					Usage:   "Second Level Recovery Code [SLRC] (received at account creation)",
					EnvVars: []string{"SLRC"},
				},
				&cli.StringFlag{
					Name:    "master-key",
					Value:   "",
					Usage:   "Master Recovery Key",
					EnvVars: []string{"MASTERKEY"},
				},
				&cli.StringFlag{
					Name:    "password",
					Value:   "",
					Usage:   "New Password",
					EnvVars: []string{"NEWPASSWD"},
				},
				&cli.BoolFlag{
					Name: "generate-password",
					Usage: "If this option provided, the metalo tool will generate a secure password and print it" +
						" out after successful password recovery",
				},
			},
		},
		{
			Name:  "identity",
			Usage: "commands for identity management",
			Subcommands: []*cli.Command{
				{
					Name:   "new",
					Usage:  "create new identity and add to the account",
					Action: NewIdentity,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "type",
							Value: "pairwise",
							Usage: "Identity type (default: pairwise). Allowed values: verinym, persona, pairwise",
						},
						&cli.StringFlag{
							Name:  "name",
							Value: "",
							Usage: "Full name",
						},
						&cli.BoolFlag{
							Name:  "unilocker",
							Usage: "add unilocker to the new identity",
						},
					},
				},
				{
					Name:   "import",
					Usage:  "import identity from file",
					Action: ImportIdentity,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "file",
							Value: "",
							Usage: "Identity file",
						},
					},
				},
			},
		},
		{
			Name:  "locker",
			Usage: "commands for locker management",
			Subcommands: []*cli.Command{
				{
					Name:   "new",
					Usage:  "create new locker definition",
					Action: CreateLocker,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "us",
							Value: "",
							Usage: "Our DID",
						},
						&cli.StringFlag{
							Name:  "them",
							Value: "",
							Usage: "Their DID",
						},
						&cli.StringFlag{
							Name:  "our-verkey",
							Value: "",
							Usage: "Our VerKey",
						},
						&cli.StringFlag{
							Name:  "their-verkey",
							Value: "",
							Usage: "Their VerKey",
						},
						&cli.StringFlag{
							Name:  "name",
							Value: "",
							Usage: "Locker name",
						},
						&cli.IntFlag{
							Name:  "ttl",
							Value: 12,
							Usage: "Number of months until the locker expires",
						},
						&cli.BoolFlag{
							Name:  "add",
							Usage: "If present, add the generated locker to the user's account",
						},
					},
				},
				{
					Name:   "import",
					Usage:  "import locker from file",
					Action: ImportLocker,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "file",
							Value: "",
							Usage: "Locker file",
						},
					},
				},
				{
					Name:   "ls",
					Usage:  "list all account lockers",
					Action: ListLockers,
				},
			},
		},
		{
			Name:  "prop",
			Usage: "commands for account property management",
			Subcommands: []*cli.Command{
				{
					Name:   "ls",
					Usage:  "list properties",
					Action: ListProperties,
				},
				{
					Name:   "get",
					Usage:  "get property",
					Action: GetProperty,
				},
				{
					Name:   "set",
					Usage:  "set property key and value",
					Action: SetProperty,
				},
				{
					Name:   "rm",
					Usage:  "delete property",
					Action: DeleteProperty,
				},
			},
		},
		{
			Name:  "access-key",
			Usage: "commands for access key management",
			Subcommands: []*cli.Command{
				{
					Name:   "new",
					Usage:  "generate new access key",
					Action: GenerateAccessKey,
				},
				{
					Name:   "ls",
					Usage:  "list access keys",
					Action: ListAccessKeys,
				},
				{
					Name:   "get",
					Usage:  "get access key",
					Action: GetAccessKey,
				},
				{
					Name:   "rm",
					Usage:  "delete access key",
					Action: DeleteAccessKey,
				},
			},
		},
		{
			Name:  "sub-account",
			Usage: "commands for sub-account management",
			Subcommands: []*cli.Command{
				{
					Name:   "new",
					Usage:  "create new sub-account",
					Action: CreateSubAccount,
					Flags: []cli.Flag{
						&cli.BoolFlag{
							Name:  "new-key",
							Usage: "create new access key",
						},
						&cli.StringFlag{
							Name:  "name",
							Value: "",
							Usage: "Account name",
						},
						&cli.StringFlag{
							Name:  "sa-email",
							Value: "",
							Usage: "[optional] Email (for interactive logins)",
						},
						&cli.StringFlag{
							Name:    "sa-password",
							Value:   "",
							Usage:   "[optional] Password (for interactive logins)",
							EnvVars: []string{"SAPASS"},
						},
					},
				},
				{
					Name:   "ls",
					Usage:  "list sub-accounts",
					Action: ListSubAccounts,
				},
				{
					Name:   "get",
					Usage:  "get sub-account",
					Action: GetSubAccount,
				},
				{
					Name:   "rm",
					Usage:  "remove a sub-account",
					Action: DeleteSubAccount,
				},
				{
					Name:  "key",
					Usage: "commands for sub-account access key management",
					Subcommands: []*cli.Command{
						{
							Name:   "new",
							Usage:  "generate new access key",
							Action: GenerateSubAccountAccessKey,
						},
						{
							Name:   "ls",
							Usage:  "list access keys",
							Action: ListSubAccountAccessKeys,
						},
						{
							Name:   "get",
							Usage:  "get access key",
							Action: GetSubAccountAccessKey,
						},
						{
							Name:   "rm",
							Usage:  "delete access key",
							Action: DeleteSubAccountAccessKey,
						},
					},
				},
			},
		},
		{
			Name:  "dataset",
			Usage: "commands for dataset management",
			Subcommands: []*cli.Command{
				{
					Name:   "upload",
					Usage:  "upload dataset into MetaLocker",
					Action: StoreDataSet,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "vault",
							Value: "local",
							Usage: "Vault Name (default: local)",
						},
						&cli.StringFlag{
							Name:  "locker",
							Value: "",
							Usage: "Locker ID. If not specified, the default one will be used",
						},
						&cli.StringFlag{
							Name:  "prov",
							Value: "",
							Usage: "Provenance definition (JSON). If not specified, it will be auto-generated",
						},
						&cli.StringFlag{
							Name:  "prov-mapping",
							Value: "",
							Usage: "Entity mapping for provenance template. Optional. Format: ent->value;ent-->value;...",
						},
						&cli.StringFlag{
							Name:  "parent",
							Value: "",
							Usage: "Parent ledger record ID",
						},
						&cli.StringFlag{
							Name:  "type",
							Usage: "Defines semantic type of the provided data",
						},
						&cli.StringFlag{
							Name:  "expiration",
							Value: "1y",
							Usage: "Lease duration (i.e. 10y, 1y6m, 12d, 1h30min, 30s, never)",
						},
						&cli.BoolFlag{
							Name:  "wait",
							Usage: "If specified, wait until the data is published on the ledger",
						},
					},
				},
				{
					Name:   "bulk-upload",
					Usage:  "upload all datasets in the given folder into MetaLocker",
					Action: StoreDataSets,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "vault",
							Value: "local",
							Usage: "Vault Name (default: local)",
						},
						&cli.StringFlag{
							Name:  "locker",
							Value: "",
							Usage: "Locker ID. If not specified, the default one will be used",
						},
						&cli.StringFlag{
							Name:  "prov",
							Value: "",
							Usage: "Provenance definition (JSON). If not specified, it will be auto-generated",
						},
						&cli.StringFlag{
							Name:  "type",
							Usage: "Defines semantic type of the provided data",
						},
						&cli.StringFlag{
							Name:  "expiration",
							Value: "1y",
							Usage: "Lease duration (i.e. 10y, 1y6m, 12d, 1h30min, 30s, never)",
						},
						&cli.BoolFlag{
							Name:  "wait",
							Usage: "If specified, wait until the data is published on the ledger",
						},
					},
				},
				{
					Name:   "supported-data-types",
					Usage:  "list supported data types",
					Action: ListSupportedDataTypes,
				},
				{
					Name:   "share",
					Usage:  "share data set",
					Action: ShareDataSet,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "vault",
							Value: "local",
							Usage: "Vault Name (default: local)",
						},
						&cli.StringFlag{
							Name:  "locker",
							Value: "",
							Usage: "Locker ID. If not specified, the default one will be used",
						},
						&cli.StringFlag{
							Name:  "expiration",
							Value: "1y",
							Usage: "Lease duration (i.e. 10y, 1y6m, 12d, 1h30min, 30s, never)",
						},
						&cli.BoolFlag{
							Name:  "wait",
							Usage: "If specified, wait until the data is published on the ledger",
						},
					},
				},
				{
					Name:   "get",
					Usage:  "get data set from MetaLocker",
					Action: GetDataSet,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "dest",
							Value: "",
							Usage: "path to destination folder/file. Not required for graph data sets (will be printed out on the console)",
						},
						&cli.BoolFlag{
							Name:  "metadata",
							Usage: "save metadata artifacts into the folder",
						},
						&cli.BoolFlag{
							Name:  "sync",
							Usage: "sync data wallet before reading the data set",
						},
					},
				},
				{
					Name:   "revoke",
					Usage:  "revoke data set's lease",
					Action: RevokeLease,
					Flags: []cli.Flag{
						&cli.BoolFlag{
							Name:  "wait",
							Usage: "If specified, wait until the data is published on the ledger",
						},
					},
				},
			},
		},
		{
			Name:  "wallet",
			Usage: "commands for wallet management",
			Subcommands: []*cli.Command{
				{
					Name:   "ls",
					Usage:  "list wallet records",
					Action: ListRecords,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "locker",
							Value: "",
							Usage: "Locker ID. If not specified, records from all lockers will be displayed",
						},
						&cli.Uint64Flag{
							Name:  "max-records",
							Value: 20,
							Usage: "Maximum number of records to be displayed",
						},
						&cli.BoolFlag{
							Name:  "sync",
							Usage: "sync data wallet before displaying its contents",
						},
						&cli.BoolFlag{
							Name:  "include-revocations",
							Usage: "include revoked leases",
						},
					},
				},
				{
					Name:   "sync",
					Usage:  "sync local data wallet with the ledger",
					Action: SyncIndex,
				},
				{
					Name:   "export",
					Usage:  "export data wallet",
					Action: ExportWallet,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "locker",
							Value: "",
							Usage: "Locker ID. If specified, only the given locker will be exported",
						},
						&cli.StringFlag{
							Name:  "participant",
							Value: "",
							Usage: "Participant ID. If specified, only the given locker participant will be exported",
						},
						&cli.StringFlag{
							Name:  "mode",
							Value: "full",
							Usage: "'user' or 'full' (default). 'User' mode skips internal metadata and prettifies JSON for graphs",
						},
						&cli.BoolFlag{
							Name:  "force-rewrite",
							Usage: "if true, export records even when they already exist on disk",
						},
					},
				},
				{
					Name:   "purge-deleted-assets",
					Usage:  "purge deleted data assets",
					Action: PurgeDeletedDataAssets,
					Flags: []cli.Flag{
						&cli.StringFlag{
							Name:  "locker",
							Value: "",
							Usage: "Locker ID. If not specified, records from all lockers will be processed",
						},
						&cli.Uint64Flag{
							Name:  "max-records",
							Value: 20,
							Usage: "Maximum number of records to be processed",
						},
						&cli.BoolFlag{
							Name:  "sync",
							Usage: "sync data wallet before performing the operation",
						},
					},
				},
			},
		},
		{
			Name:   "new-asset",
			Usage:  "generate new asset. If file path provided as a parameter, generate a digital asset definition",
			Action: NewAsset,
		},
		{
			Name:   "sample-crypto",
			Usage:  "generate sample crypto material for MetaLocker configuration",
			Action: SampleCrypto,
			Flags: []cli.Flag{
				&cli.StringFlag{
					Name:  "name",
					Value: "",
					Usage: "(optional) sample identity name",
				},
				&cli.BoolFlag{
					Name:  "skip-locker",
					Usage: "(optional) don't create a unilocker for the sample identity",
				},
			},
		},
	}

	AdminSet = []*cli.Command{
		{
			Name:   "export-ledger",
			Usage:  "export MetaLocker ledger into the given directory",
			Action: ExportLedger,
		},
		{
			Name:   "import-ledger",
			Usage:  "import MetaLocker ledger data from the given directory",
			Action: ImportLedger,
			Flags: []cli.Flag{
				&cli.BoolFlag{
					Name:  "import-operations",
					Usage: "import operations (be careful if swapping ledgers!)",
				},
				&cli.BoolFlag{
					Name:  "wait",
					Usage: "If specified, wait until each block is published on the ledger",
				},
			},
		},
		{
			Name:   "export-accounts",
			Usage:  "export MetaLocker accounts into the given directory",
			Action: ExportAccounts,
		},
		{
			Name:   "import-accounts",
			Usage:  "import MetaLocker accounts from the given directory",
			Action: ImportAccounts,
		},
		{
			Name:   "account-state",
			Usage:  "update account state for the given ID (email or DID)",
			Action: UpdateAccountState,
			Flags: []cli.Flag{
				&cli.BoolFlag{
					Name:  "lock",
					Usage: "lock account",
				},
				&cli.BoolFlag{
					Name:  "unlock",
					Usage: "unlock account",
				},
				&cli.BoolFlag{
					Name:  "delete",
					Usage: "mark account as deleted",
				},
			},
		},
	}

	StandardSet []*cli.Command
)
View Source
var (
	BasicFlags = []cli.Flag{
		&cli.BoolFlag{
			Name:  "debug",
			Usage: "if true, enable debug mode",
		},
		&cli.StringFlag{
			Name:    "server",
			Value:   DefaultMetaLockerURL,
			Usage:   "MetaLocker url, i.e. " + DefaultMetaLockerURL,
			EnvVars: []string{"METASERVER"},
		},
		&cli.StringFlag{
			Name:    "user",
			Value:   "",
			Usage:   "account email address",
			EnvVars: []string{"METAUSER"},
		},
		&cli.StringFlag{
			Name:    "password",
			Value:   "",
			Usage:   "account password",
			EnvVars: []string{"METAPASS"},
		},
	}

	APIKeyFlags = []cli.Flag{
		&cli.StringFlag{
			Name:    "api-key",
			Value:   "",
			Usage:   "Account API key",
			EnvVars: []string{"APIKEY"},
		},
		&cli.StringFlag{
			Name:    "api-secret",
			Value:   "",
			Usage:   "Account API secret",
			EnvVars: []string{"APISECRET"},
		},
	}

	AdminFlags = []cli.Flag{
		&cli.StringFlag{
			Name:    "admin-key",
			Value:   "",
			Usage:   "(for admin operations) API key",
			EnvVars: []string{"ADMKEY"},
		},
		&cli.StringFlag{
			Name:    "admin-secret",
			Value:   "",
			Usage:   "(for admin operations) API secret",
			EnvVars: []string{"ADMSECRET"},
		},
	}

	StandardFlags []cli.Flag
)

Functions

func ChangeEmail

func ChangeEmail(c *cli.Context) error

func ChangePassphrase

func ChangePassphrase(c *cli.Context) error

func CreateAdminHTTPCaller

func CreateAdminHTTPCaller(c *cli.Context) (*caller.MetaLockerHTTPCaller, error)

func CreateHTTPCaller

func CreateHTTPCaller(c *cli.Context) *caller.MetaLockerHTTPCaller

func CreateLocker

func CreateLocker(c *cli.Context) error

func CreateSubAccount

func CreateSubAccount(c *cli.Context) error

func DeleteAccessKey

func DeleteAccessKey(c *cli.Context) error

func DeleteAccount

func DeleteAccount(c *cli.Context) error

func DeleteProperty

func DeleteProperty(c *cli.Context) error

func DeleteSubAccount

func DeleteSubAccount(c *cli.Context) error

func DeleteSubAccountAccessKey

func DeleteSubAccountAccessKey(c *cli.Context) error

func ExportAccounts

func ExportAccounts(c *cli.Context) error

func ExportLedger

func ExportLedger(c *cli.Context) error

func ExportWallet

func ExportWallet(c *cli.Context) error

func GenerateAccessKey

func GenerateAccessKey(c *cli.Context) error

func GenerateSubAccountAccessKey

func GenerateSubAccountAccessKey(c *cli.Context) error

func GetAccessKey

func GetAccessKey(c *cli.Context) error

func GetDataSet

func GetDataSet(c *cli.Context) error

func GetProperty

func GetProperty(c *cli.Context) error

func GetSubAccount

func GetSubAccount(c *cli.Context) error

func GetSubAccountAccessKey

func GetSubAccountAccessKey(c *cli.Context) error

func ImportAccounts

func ImportAccounts(c *cli.Context) error

func ImportIdentity

func ImportIdentity(c *cli.Context) error

func ImportLedger

func ImportLedger(c *cli.Context) error

func ImportLocker

func ImportLocker(c *cli.Context) error

func ListAccessKeys

func ListAccessKeys(c *cli.Context) error

func ListLockers

func ListLockers(c *cli.Context) error

func ListProperties

func ListProperties(c *cli.Context) error

func ListRecords

func ListRecords(c *cli.Context) error

func ListSubAccountAccessKeys

func ListSubAccountAccessKeys(c *cli.Context) error

func ListSubAccounts

func ListSubAccounts(c *cli.Context) error

func ListSupportedDataTypes

func ListSupportedDataTypes(c *cli.Context) error

func LoadRemoteDataWallet

func LoadRemoteDataWallet(c *cli.Context, syncIndexOnStart bool) (wallet.DataWallet, error)

func NewAsset

func NewAsset(c *cli.Context) error

func NewIdentity

func NewIdentity(c *cli.Context) error

func PrintAccount

func PrintAccount(c *cli.Context) error

func PrintAccountChart

func PrintAccountChart(c *cli.Context) error

func PurgeDeletedDataAssets

func PurgeDeletedDataAssets(c *cli.Context) error

func ReadCredential

func ReadCredential(val, prompt string, mask bool) string

func RecoverAccount

func RecoverAccount(c *cli.Context) error

func RecoverAccountSecondLevel

func RecoverAccountSecondLevel(c *cli.Context) error

func RegisterCommand

func RegisterCommand(c *cli.Context) error

func RevokeLease

func RevokeLease(c *cli.Context) error

func SampleCrypto

func SampleCrypto(c *cli.Context) error

func SetProperty

func SetProperty(c *cli.Context) error

func ShareDataSet

func ShareDataSet(c *cli.Context) error

func StoreDataSet

func StoreDataSet(c *cli.Context) error

func StoreDataSets

func StoreDataSets(c *cli.Context) error

func SyncIndex

func SyncIndex(c *cli.Context) error

func UpdateAccountState

func UpdateAccountState(c *cli.Context) error

func WithPersonalIndexStore

func WithPersonalIndexStore() remote.IndexClientSourceFn

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL