storj/cmd/uplink/cmd_access_register.go
Erik van Velzen 0796653b07 cmd/uplinkng: registeraccess via libuplink
Change the implementation of register and share so that it uses the
uplink method to contact the Auth Service. The network protocol switches
from HTTP to DRPC.

Closes https://github.com/storj/storj/issues/4324

Change-Id: Ib8fdb1665c6385bb39a546ba46a8df43a136df9c
2022-02-11 11:36:45 +00:00

57 lines
1.8 KiB
Go

// Copyright (C) 2021 Storj Labs, Inc.
// See LICENSE for copying information.
package main
import (
"strconv"
"github.com/zeebo/clingy"
"storj.io/storj/cmd/uplink/ulext"
)
type cmdAccessRegister struct {
ex ulext.External
accessNameOrValue *string
authService string
caCert string
public bool
format string
awsProfile string
}
func newCmdAccessRegister(ex ulext.External) *cmdAccessRegister {
return &cmdAccessRegister{ex: ex}
}
func (c *cmdAccessRegister) Setup(params clingy.Parameters) {
c.authService = params.Flag("auth-service", "The address to the service you wish to register your access with", "auth.us1.storjshare.io:7777").(string)
c.caCert = params.Flag("ca-cert", "path to a file in PEM format with certificate(s) or certificate chain(s) to validate the auth service against", "").(string)
c.public = params.Flag("public", "If true, the access will be public", false, clingy.Transform(strconv.ParseBool)).(bool)
c.format = params.Flag("format", "Format of the output credentials, use 'env' or 'aws' when using in scripts", "").(string)
c.awsProfile = params.Flag("aws-profile", "If using --format=aws, output the --profile tag using this profile", "").(string)
c.accessNameOrValue = params.Arg("access", "The name or value of the access grant we're registering with the auth service", clingy.Optional).(*string)
}
func (c *cmdAccessRegister) Execute(ctx clingy.Context) (err error) {
accessNameOrValue := ""
if c.accessNameOrValue != nil && len(*c.accessNameOrValue) > 0 {
accessNameOrValue = *c.accessNameOrValue
}
access, err := c.ex.OpenAccess(accessNameOrValue)
if err != nil {
return err
}
credentials, err := RegisterAccess(ctx, access, c.authService, c.public, c.caCert)
if err != nil {
return err
}
return DisplayGatewayCredentials(ctx, *credentials, c.format, c.awsProfile)
}