[chore] Global server configuration overhaul (#575)

* move config flag names and usage to config package, rewrite config package to use global Configuration{} struct

Signed-off-by: kim <grufwub@gmail.com>

* improved code comment

Signed-off-by: kim <grufwub@gmail.com>

* linter

Signed-off-by: kim <grufwub@gmail.com>

* fix unmarshaling

Signed-off-by: kim <grufwub@gmail.com>

* remove kim's custom go compiler changes

Signed-off-by: kim <grufwub@gmail.com>

* generate setter and flag-name functions, implement these in codebase

Signed-off-by: kim <grufwub@gmail.com>

* update deps

Signed-off-by: kim <grufwub@gmail.com>

* small change

Signed-off-by: kim <grufwub@gmail.com>

* appease the linter...

Signed-off-by: kim <grufwub@gmail.com>

* move configuration into ConfigState structure, ensure reloading to/from viper settings to keep in sync

Signed-off-by: kim <grufwub@gmail.com>

* lint

Signed-off-by: kim <grufwub@gmail.com>

* update code comments

Signed-off-by: kim <grufwub@gmail.com>

* fix merge issue

Signed-off-by: kim <grufwub@gmail.com>

* fix merge issue

Signed-off-by: kim <grufwub@gmail.com>

* improved version string (removes time + go version)

Signed-off-by: kim <grufwub@gmail.com>

* fix version string build to pass test script + consolidate logic in func

Signed-off-by: kim <grufwub@gmail.com>

* add license text, update config.Defaults comment

Signed-off-by: kim <grufwub@gmail.com>

* add license text to generated config helpers file

Signed-off-by: kim <grufwub@gmail.com>

* defer unlock on config.Set___(), to ensure unlocked on panic

Signed-off-by: kim <grufwub@gmail.com>

* make it more obvious which cmd flags are being attached

Signed-off-by: kim <grufwub@gmail.com>
This commit is contained in:
kim 2022-05-30 13:41:24 +01:00 committed by GitHub
commit 43ac0cdb9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
90 changed files with 2450 additions and 1125 deletions

View file

@ -23,7 +23,6 @@ import (
"fmt"
"github.com/coreos/go-oidc/v3/oidc"
"github.com/spf13/viper"
"github.com/superseriousbusiness/gotosocial/internal/config"
"golang.org/x/oauth2"
)
@ -56,36 +55,33 @@ type idp struct {
// is set to false, then nil, nil will be returned. If OIDCConfig.Enabled is true,
// then the other OIDC config fields must also be set.
func NewIDP(ctx context.Context) (IDP, error) {
keys := config.Keys
oidcEnabled := viper.GetBool(keys.OIDCEnabled)
if !oidcEnabled {
if !config.GetOIDCEnabled() {
// oidc isn't enabled so we don't need to do anything
return nil, nil
}
// validate config fields
idpName := viper.GetString(keys.OIDCIdpName)
idpName := config.GetOIDCIdpName()
if idpName == "" {
return nil, fmt.Errorf("not set: IDPName")
}
issuer := viper.GetString(keys.OIDCIssuer)
issuer := config.GetOIDCIssuer()
if issuer == "" {
return nil, fmt.Errorf("not set: Issuer")
}
clientID := viper.GetString(keys.OIDCClientID)
clientID := config.GetOIDCClientID()
if clientID == "" {
return nil, fmt.Errorf("not set: ClientID")
}
clientSecret := viper.GetString(keys.OIDCClientSecret)
clientSecret := config.GetOIDCClientSecret()
if clientSecret == "" {
return nil, fmt.Errorf("not set: ClientSecret")
}
scopes := viper.GetStringSlice(keys.OIDCScopes)
scopes := config.GetOIDCScopes()
if len(scopes) == 0 {
return nil, fmt.Errorf("not set: Scopes")
}
@ -95,8 +91,8 @@ func NewIDP(ctx context.Context) (IDP, error) {
return nil, err
}
protocol := viper.GetString(keys.Protocol)
host := viper.GetString(keys.Host)
protocol := config.GetProtocol()
host := config.GetHost()
oauth2Config := oauth2.Config{
// client_id and client_secret of the client.
@ -120,8 +116,7 @@ func NewIDP(ctx context.Context) (IDP, error) {
ClientID: clientID,
}
skipVerification := viper.GetBool(keys.OIDCSkipVerification)
if skipVerification {
if config.GetOIDCSkipVerification() {
oidcConf.SkipClientIDCheck = true
oidcConf.SkipExpiryCheck = true
oidcConf.SkipIssuerCheck = true