mirror of https://github.com/grafana/grafana
parent
914ca237e2
commit
3acada9d47
@ -1,35 +1,66 @@ |
|||||||
package grpcutils |
package grpcutils |
||||||
|
|
||||||
import ( |
import ( |
||||||
|
"fmt" |
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/setting" |
"github.com/grafana/grafana/pkg/setting" |
||||||
) |
) |
||||||
|
|
||||||
|
type Mode string |
||||||
|
|
||||||
|
func (s Mode) IsValid() bool { |
||||||
|
switch s { |
||||||
|
case ModeOnPrem, ModeCloud: |
||||||
|
return true |
||||||
|
} |
||||||
|
return false |
||||||
|
} |
||||||
|
|
||||||
|
const ( |
||||||
|
ModeOnPrem Mode = "on-prem" |
||||||
|
ModeCloud Mode = "cloud" |
||||||
|
) |
||||||
|
|
||||||
type GrpcClientConfig struct { |
type GrpcClientConfig struct { |
||||||
Token string |
Token string |
||||||
TokenExchangeURL string |
TokenExchangeURL string |
||||||
TokenNamespace string |
TokenNamespace string |
||||||
|
Mode Mode |
||||||
} |
} |
||||||
|
|
||||||
func ReadGrpcClientConfig(cfg *setting.Cfg) *GrpcClientConfig { |
func ReadGrpcClientConfig(cfg *setting.Cfg) (*GrpcClientConfig, error) { |
||||||
section := cfg.SectionWithEnvOverrides("grpc_client_authentication") |
section := cfg.SectionWithEnvOverrides("grpc_client_authentication") |
||||||
|
|
||||||
|
mode := Mode(section.Key("mode").MustString(string(ModeOnPrem))) |
||||||
|
if !mode.IsValid() { |
||||||
|
return nil, fmt.Errorf("grpc_client_authentication: invalid mode %q", mode) |
||||||
|
} |
||||||
|
|
||||||
return &GrpcClientConfig{ |
return &GrpcClientConfig{ |
||||||
Token: section.Key("token").MustString(""), |
Token: section.Key("token").MustString(""), |
||||||
TokenExchangeURL: section.Key("token_exchange_url").MustString(""), |
TokenExchangeURL: section.Key("token_exchange_url").MustString(""), |
||||||
TokenNamespace: section.Key("token_namespace").MustString("stack-" + cfg.StackID), |
TokenNamespace: section.Key("token_namespace").MustString("stack-" + cfg.StackID), |
||||||
} |
Mode: mode, |
||||||
|
}, nil |
||||||
} |
} |
||||||
|
|
||||||
type GrpcServerConfig struct { |
type GrpcServerConfig struct { |
||||||
SigningKeysURL string |
SigningKeysURL string |
||||||
AllowedAudiences []string |
AllowedAudiences []string |
||||||
|
Mode Mode |
||||||
} |
} |
||||||
|
|
||||||
func ReadGprcServerConfig(cfg *setting.Cfg) *GrpcServerConfig { |
func ReadGprcServerConfig(cfg *setting.Cfg) (*GrpcServerConfig, error) { |
||||||
section := cfg.SectionWithEnvOverrides("grpc_server_authentication") |
section := cfg.SectionWithEnvOverrides("grpc_server_authentication") |
||||||
|
|
||||||
|
mode := Mode(section.Key("mode").MustString(string(ModeOnPrem))) |
||||||
|
if !mode.IsValid() { |
||||||
|
return nil, fmt.Errorf("grpc_server_authentication: invalid mode %q", mode) |
||||||
|
} |
||||||
|
|
||||||
return &GrpcServerConfig{ |
return &GrpcServerConfig{ |
||||||
SigningKeysURL: section.Key("signing_keys_url").MustString(""), |
SigningKeysURL: section.Key("signing_keys_url").MustString(""), |
||||||
AllowedAudiences: section.Key("allowed_audiences").Strings(","), |
AllowedAudiences: section.Key("allowed_audiences").Strings(","), |
||||||
} |
Mode: mode, |
||||||
|
}, nil |
||||||
} |
} |
||||||
|
|||||||
Loading…
Reference in new issue