diff options
author | 2021-05-09 11:25:13 +0200 | |
---|---|---|
committer | 2021-05-09 11:25:13 +0200 | |
commit | 0cbab627c77002711029527f4697fc7ec6cd870d (patch) | |
tree | 8d730be593e60489d4e3b3131c1c5feb6ce64452 /internal/config/config.go | |
parent | status boosts (#16) (diff) | |
download | gotosocial-0cbab627c77002711029527f4697fc7ec6cd870d.tar.xz |
Letsencrypt (#17)
Diffstat (limited to 'internal/config/config.go')
-rw-r--r-- | internal/config/config.go | 63 |
1 files changed, 47 insertions, 16 deletions
diff --git a/internal/config/config.go b/internal/config/config.go index 2421290e7..23f7d0d1c 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -27,16 +27,17 @@ import ( // Config pulls together all the configuration needed to run gotosocial type Config struct { - LogLevel string `yaml:"logLevel"` - ApplicationName string `yaml:"applicationName"` - Host string `yaml:"host"` - Protocol string `yaml:"protocol"` - DBConfig *DBConfig `yaml:"db"` - TemplateConfig *TemplateConfig `yaml:"template"` - AccountsConfig *AccountsConfig `yaml:"accounts"` - MediaConfig *MediaConfig `yaml:"media"` - StorageConfig *StorageConfig `yaml:"storage"` - StatusesConfig *StatusesConfig `yaml:"statuses"` + LogLevel string `yaml:"logLevel"` + ApplicationName string `yaml:"applicationName"` + Host string `yaml:"host"` + Protocol string `yaml:"protocol"` + DBConfig *DBConfig `yaml:"db"` + TemplateConfig *TemplateConfig `yaml:"template"` + AccountsConfig *AccountsConfig `yaml:"accounts"` + MediaConfig *MediaConfig `yaml:"media"` + StorageConfig *StorageConfig `yaml:"storage"` + StatusesConfig *StatusesConfig `yaml:"statuses"` + LetsEncryptConfig *LetsEncryptConfig `yaml:"letsEncrypt"` } // FromFile returns a new config from a file, or an error if something goes amiss. @@ -54,12 +55,13 @@ func FromFile(path string) (*Config, error) { // Empty just returns a new empty config func Empty() *Config { return &Config{ - DBConfig: &DBConfig{}, - TemplateConfig: &TemplateConfig{}, - AccountsConfig: &AccountsConfig{}, - MediaConfig: &MediaConfig{}, - StorageConfig: &StorageConfig{}, - StatusesConfig: &StatusesConfig{}, + DBConfig: &DBConfig{}, + TemplateConfig: &TemplateConfig{}, + AccountsConfig: &AccountsConfig{}, + MediaConfig: &MediaConfig{}, + StorageConfig: &StorageConfig{}, + StatusesConfig: &StatusesConfig{}, + LetsEncryptConfig: &LetsEncryptConfig{}, } } @@ -200,6 +202,19 @@ func (c *Config) ParseCLIFlags(f KeyedFlags) { if c.StatusesConfig.MaxMediaFiles == 0 || f.IsSet(fn.StatusesMaxMediaFiles) { c.StatusesConfig.MaxMediaFiles = f.Int(fn.StatusesMaxMediaFiles) } + + // letsencrypt flags + if f.IsSet(fn.LetsEncryptEnabled) { + c.LetsEncryptConfig.Enabled = f.Bool(fn.LetsEncryptEnabled) + } + + if c.LetsEncryptConfig.CertDir == "" || f.IsSet(fn.LetsEncryptCertDir) { + c.LetsEncryptConfig.CertDir = f.String(fn.LetsEncryptCertDir) + } + + if c.LetsEncryptConfig.EmailAddress == "" || f.IsSet(fn.LetsEncryptEmailAddress) { + c.LetsEncryptConfig.EmailAddress = f.String(fn.LetsEncryptEmailAddress) + } } // KeyedFlags is a wrapper for any type that can store keyed flags and give them back. @@ -249,6 +264,10 @@ type Flags struct { StatusesPollMaxOptions string StatusesPollOptionMaxChars string StatusesMaxMediaFiles string + + LetsEncryptEnabled string + LetsEncryptCertDir string + LetsEncryptEmailAddress string } // Defaults contains all the default values for a gotosocial config @@ -288,6 +307,10 @@ type Defaults struct { StatusesPollMaxOptions int StatusesPollOptionMaxChars int StatusesMaxMediaFiles int + + LetsEncryptEnabled bool + LetsEncryptCertDir string + LetsEncryptEmailAddress string } // GetFlagNames returns a struct containing the names of the various flags used for @@ -329,6 +352,10 @@ func GetFlagNames() Flags { StatusesPollMaxOptions: "statuses-poll-max-options", StatusesPollOptionMaxChars: "statuses-poll-option-max-chars", StatusesMaxMediaFiles: "statuses-max-media-files", + + LetsEncryptEnabled: "letsencrypt-enabled", + LetsEncryptCertDir: "letsencrypt-cert-dir", + LetsEncryptEmailAddress: "letsencrypt-email", } } @@ -371,5 +398,9 @@ func GetEnvNames() Flags { StatusesPollMaxOptions: "GTS_STATUSES_POLL_MAX_OPTIONS", StatusesPollOptionMaxChars: "GTS_STATUSES_POLL_OPTION_MAX_CHARS", StatusesMaxMediaFiles: "GTS_STATUSES_MAX_MEDIA_FILES", + + LetsEncryptEnabled: "GTS_LETSENCRYPT_ENABLED", + LetsEncryptCertDir: "GTS_LETSENCRYPT_CERT_DIR", + LetsEncryptEmailAddress: "GTS_LETSENCRYPT_EMAIL", } } |