forked from TrueCloudLab/frostfs-node
cc7a723d77
Signed-off-by: Elizaveta Chichindaeva <elizaveta@nspcc.ru>
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package controlconfig
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
|
"github.com/nspcc-dev/neofs-node/cmd/neofs-node/config"
|
|
)
|
|
|
|
// GRPCConfig is a wrapper over "grpc" config section which provides access
|
|
// to gRPC configuration of control service.
|
|
type GRPCConfig struct {
|
|
cfg *config.Config
|
|
}
|
|
|
|
const (
|
|
subsection = "control"
|
|
grpcSubsection = "grpc"
|
|
|
|
// GRPCEndpointDefault is a default endpoint of gRPC Control service.
|
|
GRPCEndpointDefault = ""
|
|
)
|
|
|
|
// AuthorizedKeys parses and returns an array of "authorized_keys" config
|
|
// parameter from "control" section.
|
|
//
|
|
// Returns an empty list if not set.
|
|
func AuthorizedKeys(c *config.Config) keys.PublicKeys {
|
|
strKeys := config.StringSliceSafe(c.Sub(subsection), "authorized_keys")
|
|
pubs := make(keys.PublicKeys, 0, len(strKeys))
|
|
|
|
for i := range strKeys {
|
|
pub, err := keys.NewPublicKeyFromString(strKeys[i])
|
|
if err != nil {
|
|
panic(fmt.Errorf("invalid permitted key for Control service %s: %w", strKeys[i], err))
|
|
}
|
|
|
|
pubs = append(pubs, pub)
|
|
}
|
|
|
|
return pubs
|
|
}
|
|
|
|
// GRPC returns a structure that provides access to "grpc" subsection of
|
|
// "control" section.
|
|
func GRPC(c *config.Config) GRPCConfig {
|
|
return GRPCConfig{
|
|
c.Sub(subsection).Sub(grpcSubsection),
|
|
}
|
|
}
|
|
|
|
// Endpoint returns the value of "endpoint" config parameter.
|
|
//
|
|
// Returns GRPCEndpointDefault if the value is not a non-empty string.
|
|
func (g GRPCConfig) Endpoint() string {
|
|
v := config.String(g.cfg, "endpoint")
|
|
if v != "" {
|
|
return v
|
|
}
|
|
|
|
return GRPCEndpointDefault
|
|
}
|