| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | /* | 
					
						
							|  |  |  |    GoToSocial | 
					
						
							|  |  |  |    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |    it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |    the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |    (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |    GNU Affero General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |    along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package config | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 	"errors" | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-03 21:15:20 +01:00
										 |  |  | 	"gopkg.in/yaml.v2" | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-30 13:12:00 +02:00
										 |  |  | // Flags and usage strings for configuration. | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | const ( | 
					
						
							|  |  |  | 	UsernameFlag  = "username" | 
					
						
							|  |  |  | 	UsernameUsage = "the username to create/delete/etc" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	EmailFlag  = "email" | 
					
						
							|  |  |  | 	EmailUsage = "the email address of this account" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	PasswordFlag  = "password" | 
					
						
							|  |  |  | 	PasswordUsage = "the password to set for this account" | 
					
						
							| 
									
										
										
										
											2021-09-09 16:15:25 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	TransPathFlag  = "path" | 
					
						
							|  |  |  | 	TransPathUsage = "the path of the file to import from/export to" | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | // Config pulls together all the configuration needed to run gotosocial | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | type Config struct { | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 	/* | 
					
						
							|  |  |  | 		Parseable from .yaml configuration file. | 
					
						
							|  |  |  | 		For long-running commands (server start etc). | 
					
						
							|  |  |  | 	*/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 	LogLevel          string             `yaml:"logLevel"` | 
					
						
							|  |  |  | 	ApplicationName   string             `yaml:"applicationName"` | 
					
						
							|  |  |  | 	Host              string             `yaml:"host"` | 
					
						
							| 
									
										
										
										
											2021-07-19 18:42:08 +02:00
										 |  |  | 	AccountDomain     string             `yaml:"accountDomain"` | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 	Protocol          string             `yaml:"protocol"` | 
					
						
							| 
									
										
										
										
											2021-11-22 10:55:52 +01:00
										 |  |  | 	BindAddress       string             `yaml:"bindAddress"` | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 	Port              int                `yaml:"port"` | 
					
						
							| 
									
										
										
										
											2021-07-26 16:15:36 +02:00
										 |  |  | 	TrustedProxies    []string           `yaml:"trustedProxies"` | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 	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"` | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 	OIDCConfig        *OIDCConfig        `yaml:"oidc"` | 
					
						
							| 
									
										
										
										
											2021-10-31 15:46:23 +01:00
										 |  |  | 	SMTPConfig        *SMTPConfig        `yaml:"smtp"` | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* | 
					
						
							|  |  |  | 		Not parsed from .yaml configuration file. | 
					
						
							|  |  |  | 	*/ | 
					
						
							|  |  |  | 	AccountCLIFlags map[string]string | 
					
						
							| 
									
										
										
										
											2021-09-09 16:15:25 +02:00
										 |  |  | 	ExportCLIFlags  map[string]string | 
					
						
							| 
									
										
										
										
											2021-06-24 14:26:08 +02:00
										 |  |  | 	SoftwareVersion string | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | // FromFile returns a new config from a file, or an error if something goes amiss. | 
					
						
							|  |  |  | func FromFile(path string) (*Config, error) { | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 	if path != "" { | 
					
						
							|  |  |  | 		c, err := loadFromFile(path) | 
					
						
							|  |  |  | 		if err != nil { | 
					
						
							|  |  |  | 			return nil, fmt.Errorf("error creating config: %s", err) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return c, nil | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 	return Empty(), nil | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | // Empty just returns a new empty config | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | func Empty() *Config { | 
					
						
							|  |  |  | 	return &Config{ | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 		DBConfig:          &DBConfig{}, | 
					
						
							|  |  |  | 		TemplateConfig:    &TemplateConfig{}, | 
					
						
							|  |  |  | 		AccountsConfig:    &AccountsConfig{}, | 
					
						
							|  |  |  | 		MediaConfig:       &MediaConfig{}, | 
					
						
							|  |  |  | 		StorageConfig:     &StorageConfig{}, | 
					
						
							|  |  |  | 		StatusesConfig:    &StatusesConfig{}, | 
					
						
							|  |  |  | 		LetsEncryptConfig: &LetsEncryptConfig{}, | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 		OIDCConfig:        &OIDCConfig{}, | 
					
						
							| 
									
										
										
										
											2021-10-31 15:46:23 +01:00
										 |  |  | 		SMTPConfig:        &SMTPConfig{}, | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 		AccountCLIFlags:   make(map[string]string), | 
					
						
							| 
									
										
										
										
											2021-09-09 16:15:25 +02:00
										 |  |  | 		ExportCLIFlags:    make(map[string]string), | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-03 21:15:20 +01:00
										 |  |  | // loadFromFile takes a path to a yaml file and attempts to load a Config object from it | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | func loadFromFile(path string) (*Config, error) { | 
					
						
							|  |  |  | 	bytes, err := os.ReadFile(path) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil, fmt.Errorf("could not read file at path %s: %s", path, err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 19:31:47 +02:00
										 |  |  | 	config := Empty() | 
					
						
							| 
									
										
										
										
											2021-03-03 21:15:20 +01:00
										 |  |  | 	if err := yaml.Unmarshal(bytes, config); err != nil { | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | 		return nil, fmt.Errorf("could not unmarshal file at path %s: %s", path, err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return config, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | // ParseCLIFlags sets flags on the config using the provided Flags object | 
					
						
							| 
									
										
										
										
											2021-06-28 12:17:20 +02:00
										 |  |  | func (c *Config) ParseCLIFlags(f KeyedFlags, version string) error { | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | 	fn := GetFlagNames() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// For all of these flags, we only want to set them on the config if: | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	// a) They haven't been set at all in the config file we already parsed, | 
					
						
							|  |  |  | 	// 	  and so we take the default from the flags object. | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	// b) They may have been set in the config, but they've *also* been set explicitly | 
					
						
							|  |  |  | 	//    as a command-line argument or an env variable, which takes priority. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// general flags | 
					
						
							|  |  |  | 	if c.LogLevel == "" || f.IsSet(fn.LogLevel) { | 
					
						
							|  |  |  | 		c.LogLevel = f.String(fn.LogLevel) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.ApplicationName == "" || f.IsSet(fn.ApplicationName) { | 
					
						
							|  |  |  | 		c.ApplicationName = f.String(fn.ApplicationName) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 	if c.Host == "" || f.IsSet(fn.Host) { | 
					
						
							|  |  |  | 		c.Host = f.String(fn.Host) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 	if c.Host == "" { | 
					
						
							|  |  |  | 		return errors.New("host was not set") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 18:42:08 +02:00
										 |  |  | 	if c.AccountDomain == "" || f.IsSet(fn.AccountDomain) { | 
					
						
							|  |  |  | 		c.AccountDomain = f.String(fn.AccountDomain) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if c.AccountDomain == "" { | 
					
						
							|  |  |  | 		c.AccountDomain = c.Host // default to whatever the host is, if this is empty | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 	if c.Protocol == "" || f.IsSet(fn.Protocol) { | 
					
						
							|  |  |  | 		c.Protocol = f.String(fn.Protocol) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 	if c.Protocol == "" { | 
					
						
							|  |  |  | 		return errors.New("protocol was not set") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-22 10:55:52 +01:00
										 |  |  | 	if c.BindAddress == "" || f.IsSet(fn.BindAddress) { | 
					
						
							|  |  |  | 		c.BindAddress = f.String(fn.BindAddress) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 	if c.Port == 0 || f.IsSet(fn.Port) { | 
					
						
							|  |  |  | 		c.Port = f.Int(fn.Port) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 16:15:36 +02:00
										 |  |  | 	if len(c.TrustedProxies) == 0 || f.IsSet(fn.TrustedProxies) { | 
					
						
							|  |  |  | 		c.TrustedProxies = f.StringSlice(fn.TrustedProxies) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | 	// db flags | 
					
						
							|  |  |  | 	if c.DBConfig.Type == "" || f.IsSet(fn.DbType) { | 
					
						
							|  |  |  | 		c.DBConfig.Type = f.String(fn.DbType) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.DBConfig.Address == "" || f.IsSet(fn.DbAddress) { | 
					
						
							|  |  |  | 		c.DBConfig.Address = f.String(fn.DbAddress) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.DBConfig.Port == 0 || f.IsSet(fn.DbPort) { | 
					
						
							|  |  |  | 		c.DBConfig.Port = f.Int(fn.DbPort) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-03-03 21:15:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | 	if c.DBConfig.User == "" || f.IsSet(fn.DbUser) { | 
					
						
							|  |  |  | 		c.DBConfig.User = f.String(fn.DbUser) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.DBConfig.Password == "" || f.IsSet(fn.DbPassword) { | 
					
						
							|  |  |  | 		c.DBConfig.Password = f.String(fn.DbPassword) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.DBConfig.Database == "" || f.IsSet(fn.DbDatabase) { | 
					
						
							|  |  |  | 		c.DBConfig.Database = f.String(fn.DbDatabase) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 18:03:07 +02:00
										 |  |  | 	if c.DBConfig.TLSMode == DBTLSModeUnset || f.IsSet(fn.DbTLSMode) { | 
					
						
							|  |  |  | 		c.DBConfig.TLSMode = DBTLSMode(f.String(fn.DbTLSMode)) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.DBConfig.TLSCACert == "" || f.IsSet(fn.DbTLSCACert) { | 
					
						
							|  |  |  | 		c.DBConfig.TLSCACert = f.String(fn.DbTLSCACert) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | 	// template flags | 
					
						
							|  |  |  | 	if c.TemplateConfig.BaseDir == "" || f.IsSet(fn.TemplateBaseDir) { | 
					
						
							|  |  |  | 		c.TemplateConfig.BaseDir = f.String(fn.TemplateBaseDir) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-21 19:46:10 +02:00
										 |  |  | 	// template flags | 
					
						
							|  |  |  | 	if c.TemplateConfig.AssetBaseDir == "" || f.IsSet(fn.AssetBaseDir) { | 
					
						
							|  |  |  | 		c.TemplateConfig.AssetBaseDir = f.String(fn.AssetBaseDir) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 	// accounts flags | 
					
						
							|  |  |  | 	if f.IsSet(fn.AccountsOpenRegistration) { | 
					
						
							|  |  |  | 		c.AccountsConfig.OpenRegistration = f.Bool(fn.AccountsOpenRegistration) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	if f.IsSet(fn.AccountsApprovalRequired) { | 
					
						
							|  |  |  | 		c.AccountsConfig.RequireApproval = f.Bool(fn.AccountsApprovalRequired) | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// media flags | 
					
						
							|  |  |  | 	if c.MediaConfig.MaxImageSize == 0 || f.IsSet(fn.MediaMaxImageSize) { | 
					
						
							|  |  |  | 		c.MediaConfig.MaxImageSize = f.Int(fn.MediaMaxImageSize) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.MediaConfig.MaxVideoSize == 0 || f.IsSet(fn.MediaMaxVideoSize) { | 
					
						
							|  |  |  | 		c.MediaConfig.MaxVideoSize = f.Int(fn.MediaMaxVideoSize) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	if c.MediaConfig.MinDescriptionChars == 0 || f.IsSet(fn.MediaMinDescriptionChars) { | 
					
						
							|  |  |  | 		c.MediaConfig.MinDescriptionChars = f.Int(fn.MediaMinDescriptionChars) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.MediaConfig.MaxDescriptionChars == 0 || f.IsSet(fn.MediaMaxDescriptionChars) { | 
					
						
							|  |  |  | 		c.MediaConfig.MaxDescriptionChars = f.Int(fn.MediaMaxDescriptionChars) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 	// storage flags | 
					
						
							|  |  |  | 	if c.StorageConfig.Backend == "" || f.IsSet(fn.StorageBackend) { | 
					
						
							|  |  |  | 		c.StorageConfig.Backend = f.String(fn.StorageBackend) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.StorageConfig.BasePath == "" || f.IsSet(fn.StorageBasePath) { | 
					
						
							|  |  |  | 		c.StorageConfig.BasePath = f.String(fn.StorageBasePath) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.StorageConfig.ServeProtocol == "" || f.IsSet(fn.StorageServeProtocol) { | 
					
						
							|  |  |  | 		c.StorageConfig.ServeProtocol = f.String(fn.StorageServeProtocol) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.StorageConfig.ServeHost == "" || f.IsSet(fn.StorageServeHost) { | 
					
						
							|  |  |  | 		c.StorageConfig.ServeHost = f.String(fn.StorageServeHost) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.StorageConfig.ServeBasePath == "" || f.IsSet(fn.StorageServeBasePath) { | 
					
						
							|  |  |  | 		c.StorageConfig.ServeBasePath = f.String(fn.StorageServeBasePath) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// statuses flags | 
					
						
							|  |  |  | 	if c.StatusesConfig.MaxChars == 0 || f.IsSet(fn.StatusesMaxChars) { | 
					
						
							|  |  |  | 		c.StatusesConfig.MaxChars = f.Int(fn.StatusesMaxChars) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if c.StatusesConfig.CWMaxChars == 0 || f.IsSet(fn.StatusesCWMaxChars) { | 
					
						
							|  |  |  | 		c.StatusesConfig.CWMaxChars = f.Int(fn.StatusesCWMaxChars) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if c.StatusesConfig.PollMaxOptions == 0 || f.IsSet(fn.StatusesPollMaxOptions) { | 
					
						
							|  |  |  | 		c.StatusesConfig.PollMaxOptions = f.Int(fn.StatusesPollMaxOptions) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if c.StatusesConfig.PollOptionMaxChars == 0 || f.IsSet(fn.StatusesPollOptionMaxChars) { | 
					
						
							|  |  |  | 		c.StatusesConfig.PollOptionMaxChars = f.Int(fn.StatusesPollOptionMaxChars) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if c.StatusesConfig.MaxMediaFiles == 0 || f.IsSet(fn.StatusesMaxMediaFiles) { | 
					
						
							|  |  |  | 		c.StatusesConfig.MaxMediaFiles = f.Int(fn.StatusesMaxMediaFiles) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// letsencrypt flags | 
					
						
							|  |  |  | 	if f.IsSet(fn.LetsEncryptEnabled) { | 
					
						
							|  |  |  | 		c.LetsEncryptConfig.Enabled = f.Bool(fn.LetsEncryptEnabled) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 	if c.LetsEncryptConfig.Port == 0 || f.IsSet(fn.LetsEncryptPort) { | 
					
						
							|  |  |  | 		c.LetsEncryptConfig.Port = f.Int(fn.LetsEncryptPort) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 	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) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 	// OIDC flags | 
					
						
							|  |  |  | 	if f.IsSet(fn.OIDCEnabled) { | 
					
						
							|  |  |  | 		c.OIDCConfig.Enabled = f.Bool(fn.OIDCEnabled) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.OIDCConfig.IDPName == "" || f.IsSet(fn.OIDCIdpName) { | 
					
						
							|  |  |  | 		c.OIDCConfig.IDPName = f.String(fn.OIDCIdpName) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if f.IsSet(fn.OIDCSkipVerification) { | 
					
						
							|  |  |  | 		c.OIDCConfig.SkipVerification = f.Bool(fn.OIDCSkipVerification) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.OIDCConfig.Issuer == "" || f.IsSet(fn.OIDCIssuer) { | 
					
						
							|  |  |  | 		c.OIDCConfig.Issuer = f.String(fn.OIDCIssuer) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.OIDCConfig.ClientID == "" || f.IsSet(fn.OIDCClientID) { | 
					
						
							|  |  |  | 		c.OIDCConfig.ClientID = f.String(fn.OIDCClientID) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.OIDCConfig.ClientSecret == "" || f.IsSet(fn.OIDCClientSecret) { | 
					
						
							|  |  |  | 		c.OIDCConfig.ClientSecret = f.String(fn.OIDCClientSecret) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if len(c.OIDCConfig.Scopes) == 0 || f.IsSet(fn.OIDCScopes) { | 
					
						
							|  |  |  | 		c.OIDCConfig.Scopes = f.StringSlice(fn.OIDCScopes) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-06-24 14:26:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-31 15:46:23 +01:00
										 |  |  | 	// smtp flags | 
					
						
							|  |  |  | 	if c.SMTPConfig.Host == "" || f.IsSet(fn.SMTPHost) { | 
					
						
							|  |  |  | 		c.SMTPConfig.Host = f.String(fn.SMTPHost) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.SMTPConfig.Port == 0 || f.IsSet(fn.SMTPPort) { | 
					
						
							|  |  |  | 		c.SMTPConfig.Port = f.Int(fn.SMTPPort) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.SMTPConfig.Username == "" || f.IsSet(fn.SMTPUsername) { | 
					
						
							|  |  |  | 		c.SMTPConfig.Username = f.String(fn.SMTPUsername) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.SMTPConfig.Password == "" || f.IsSet(fn.SMTPPassword) { | 
					
						
							|  |  |  | 		c.SMTPConfig.Password = f.String(fn.SMTPPassword) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if c.SMTPConfig.From == "" || f.IsSet(fn.SMTPFrom) { | 
					
						
							|  |  |  | 		c.SMTPConfig.From = f.String(fn.SMTPFrom) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 	// command-specific flags | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// admin account CLI flags | 
					
						
							|  |  |  | 	c.AccountCLIFlags[UsernameFlag] = f.String(UsernameFlag) | 
					
						
							|  |  |  | 	c.AccountCLIFlags[EmailFlag] = f.String(EmailFlag) | 
					
						
							|  |  |  | 	c.AccountCLIFlags[PasswordFlag] = f.String(PasswordFlag) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-09 16:15:25 +02:00
										 |  |  | 	// export CLI flags | 
					
						
							|  |  |  | 	c.ExportCLIFlags[TransPathFlag] = f.String(TransPathFlag) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-28 12:17:20 +02:00
										 |  |  | 	c.SoftwareVersion = version | 
					
						
							| 
									
										
										
										
											2021-05-22 14:26:45 +02:00
										 |  |  | 	return nil | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | // KeyedFlags is a wrapper for any type that can store keyed flags and give them back. | 
					
						
							|  |  |  | // HINT: This works with a urfave cli context struct ;) | 
					
						
							|  |  |  | type KeyedFlags interface { | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 	Bool(k string) bool | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | 	String(k string) string | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 	StringSlice(k string) []string | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | 	Int(k string) int | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | 	IsSet(k string) bool | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Flags is used for storing the names of the various flags used for | 
					
						
							|  |  |  | // initializing and storing urfavecli flag variables. | 
					
						
							|  |  |  | type Flags struct { | 
					
						
							|  |  |  | 	LogLevel        string | 
					
						
							|  |  |  | 	ApplicationName string | 
					
						
							|  |  |  | 	ConfigPath      string | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 	Host            string | 
					
						
							| 
									
										
										
										
											2021-07-19 18:42:08 +02:00
										 |  |  | 	AccountDomain   string | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 	Protocol        string | 
					
						
							| 
									
										
										
										
											2021-11-22 10:55:52 +01:00
										 |  |  | 	BindAddress     string | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 	Port            string | 
					
						
							| 
									
										
										
										
											2021-07-26 16:15:36 +02:00
										 |  |  | 	TrustedProxies  string | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 18:03:07 +02:00
										 |  |  | 	DbType      string | 
					
						
							|  |  |  | 	DbAddress   string | 
					
						
							|  |  |  | 	DbPort      string | 
					
						
							|  |  |  | 	DbUser      string | 
					
						
							|  |  |  | 	DbPassword  string | 
					
						
							|  |  |  | 	DbDatabase  string | 
					
						
							|  |  |  | 	DbTLSMode   string | 
					
						
							|  |  |  | 	DbTLSCACert string | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | 	TemplateBaseDir string | 
					
						
							| 
									
										
										
										
											2021-06-21 19:46:10 +02:00
										 |  |  | 	AssetBaseDir    string | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	AccountsOpenRegistration string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	AccountsApprovalRequired string | 
					
						
							|  |  |  | 	AccountsReasonRequired   string | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	MediaMaxImageSize        string | 
					
						
							|  |  |  | 	MediaMaxVideoSize        string | 
					
						
							|  |  |  | 	MediaMinDescriptionChars string | 
					
						
							|  |  |  | 	MediaMaxDescriptionChars string | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	StorageBackend       string | 
					
						
							|  |  |  | 	StorageBasePath      string | 
					
						
							|  |  |  | 	StorageServeProtocol string | 
					
						
							|  |  |  | 	StorageServeHost     string | 
					
						
							|  |  |  | 	StorageServeBasePath string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	StatusesMaxChars           string | 
					
						
							|  |  |  | 	StatusesCWMaxChars         string | 
					
						
							|  |  |  | 	StatusesPollMaxOptions     string | 
					
						
							|  |  |  | 	StatusesPollOptionMaxChars string | 
					
						
							|  |  |  | 	StatusesMaxMediaFiles      string | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	LetsEncryptEnabled      string | 
					
						
							|  |  |  | 	LetsEncryptCertDir      string | 
					
						
							|  |  |  | 	LetsEncryptEmailAddress string | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 	LetsEncryptPort         string | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	OIDCEnabled          string | 
					
						
							|  |  |  | 	OIDCIdpName          string | 
					
						
							|  |  |  | 	OIDCSkipVerification string | 
					
						
							|  |  |  | 	OIDCIssuer           string | 
					
						
							|  |  |  | 	OIDCClientID         string | 
					
						
							|  |  |  | 	OIDCClientSecret     string | 
					
						
							|  |  |  | 	OIDCScopes           string | 
					
						
							| 
									
										
										
										
											2021-10-31 15:46:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	SMTPHost     string | 
					
						
							|  |  |  | 	SMTPPort     string | 
					
						
							|  |  |  | 	SMTPUsername string | 
					
						
							|  |  |  | 	SMTPPassword string | 
					
						
							|  |  |  | 	SMTPFrom     string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-20 18:14:23 +02:00
										 |  |  | // Defaults contains all the default values for a gotosocial config | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | type Defaults struct { | 
					
						
							|  |  |  | 	LogLevel        string | 
					
						
							|  |  |  | 	ApplicationName string | 
					
						
							|  |  |  | 	ConfigPath      string | 
					
						
							|  |  |  | 	Host            string | 
					
						
							| 
									
										
										
										
											2021-07-19 18:42:08 +02:00
										 |  |  | 	AccountDomain   string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	Protocol        string | 
					
						
							| 
									
										
										
										
											2021-11-22 10:55:52 +01:00
										 |  |  | 	BindAddress     string | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 	Port            int | 
					
						
							| 
									
										
										
										
											2021-07-26 16:15:36 +02:00
										 |  |  | 	TrustedProxies  []string | 
					
						
							| 
									
										
										
										
											2021-06-24 14:26:08 +02:00
										 |  |  | 	SoftwareVersion string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 18:03:07 +02:00
										 |  |  | 	DbType      string | 
					
						
							|  |  |  | 	DbAddress   string | 
					
						
							|  |  |  | 	DbPort      int | 
					
						
							|  |  |  | 	DbUser      string | 
					
						
							|  |  |  | 	DbPassword  string | 
					
						
							|  |  |  | 	DbDatabase  string | 
					
						
							|  |  |  | 	DBTlsMode   string | 
					
						
							|  |  |  | 	DBTlsCACert string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	TemplateBaseDir string | 
					
						
							| 
									
										
										
										
											2021-06-21 19:46:10 +02:00
										 |  |  | 	AssetBaseDir    string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	AccountsOpenRegistration bool | 
					
						
							|  |  |  | 	AccountsRequireApproval  bool | 
					
						
							|  |  |  | 	AccountsReasonRequired   bool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	MediaMaxImageSize        int | 
					
						
							|  |  |  | 	MediaMaxVideoSize        int | 
					
						
							|  |  |  | 	MediaMinDescriptionChars int | 
					
						
							|  |  |  | 	MediaMaxDescriptionChars int | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	StorageBackend       string | 
					
						
							|  |  |  | 	StorageBasePath      string | 
					
						
							|  |  |  | 	StorageServeProtocol string | 
					
						
							|  |  |  | 	StorageServeHost     string | 
					
						
							|  |  |  | 	StorageServeBasePath string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	StatusesMaxChars           int | 
					
						
							|  |  |  | 	StatusesCWMaxChars         int | 
					
						
							|  |  |  | 	StatusesPollMaxOptions     int | 
					
						
							|  |  |  | 	StatusesPollOptionMaxChars int | 
					
						
							|  |  |  | 	StatusesMaxMediaFiles      int | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	LetsEncryptEnabled      bool | 
					
						
							|  |  |  | 	LetsEncryptCertDir      string | 
					
						
							|  |  |  | 	LetsEncryptEmailAddress string | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 	LetsEncryptPort         int | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	OIDCEnabled          bool | 
					
						
							|  |  |  | 	OIDCIdpName          string | 
					
						
							|  |  |  | 	OIDCSkipVerification bool | 
					
						
							|  |  |  | 	OIDCIssuer           string | 
					
						
							|  |  |  | 	OIDCClientID         string | 
					
						
							|  |  |  | 	OIDCClientSecret     string | 
					
						
							|  |  |  | 	OIDCScopes           []string | 
					
						
							| 
									
										
										
										
											2021-10-31 15:46:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	SMTPHost     string | 
					
						
							|  |  |  | 	SMTPPort     int | 
					
						
							|  |  |  | 	SMTPUsername string | 
					
						
							|  |  |  | 	SMTPPassword string | 
					
						
							|  |  |  | 	SMTPFrom     string | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // GetFlagNames returns a struct containing the names of the various flags used for | 
					
						
							|  |  |  | // initializing and storing urfavecli flag variables. | 
					
						
							|  |  |  | func GetFlagNames() Flags { | 
					
						
							|  |  |  | 	return Flags{ | 
					
						
							|  |  |  | 		LogLevel:        "log-level", | 
					
						
							|  |  |  | 		ApplicationName: "application-name", | 
					
						
							|  |  |  | 		ConfigPath:      "config-path", | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 		Host:            "host", | 
					
						
							| 
									
										
										
										
											2021-07-19 18:42:08 +02:00
										 |  |  | 		AccountDomain:   "account-domain", | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 		Protocol:        "protocol", | 
					
						
							| 
									
										
										
										
											2021-11-22 10:55:52 +01:00
										 |  |  | 		BindAddress:     "bind-address", | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 		Port:            "port", | 
					
						
							| 
									
										
										
										
											2021-07-26 16:15:36 +02:00
										 |  |  | 		TrustedProxies:  "trusted-proxies", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 18:03:07 +02:00
										 |  |  | 		DbType:      "db-type", | 
					
						
							|  |  |  | 		DbAddress:   "db-address", | 
					
						
							|  |  |  | 		DbPort:      "db-port", | 
					
						
							|  |  |  | 		DbUser:      "db-user", | 
					
						
							|  |  |  | 		DbPassword:  "db-password", | 
					
						
							|  |  |  | 		DbDatabase:  "db-database", | 
					
						
							|  |  |  | 		DbTLSMode:   "db-tls-mode", | 
					
						
							|  |  |  | 		DbTLSCACert: "db-tls-ca-cert", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | 		TemplateBaseDir: "template-basedir", | 
					
						
							| 
									
										
										
										
											2021-06-21 19:46:10 +02:00
										 |  |  | 		AssetBaseDir:    "asset-basedir", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		AccountsOpenRegistration: "accounts-open-registration", | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 		AccountsApprovalRequired: "accounts-approval-required", | 
					
						
							|  |  |  | 		AccountsReasonRequired:   "accounts-reason-required", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 		MediaMaxImageSize:        "media-max-image-size", | 
					
						
							|  |  |  | 		MediaMaxVideoSize:        "media-max-video-size", | 
					
						
							|  |  |  | 		MediaMinDescriptionChars: "media-min-description-chars", | 
					
						
							|  |  |  | 		MediaMaxDescriptionChars: "media-max-description-chars", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		StorageBackend:       "storage-backend", | 
					
						
							|  |  |  | 		StorageBasePath:      "storage-base-path", | 
					
						
							|  |  |  | 		StorageServeProtocol: "storage-serve-protocol", | 
					
						
							|  |  |  | 		StorageServeHost:     "storage-serve-host", | 
					
						
							|  |  |  | 		StorageServeBasePath: "storage-serve-base-path", | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		StatusesMaxChars:           "statuses-max-chars", | 
					
						
							|  |  |  | 		StatusesCWMaxChars:         "statuses-cw-max-chars", | 
					
						
							|  |  |  | 		StatusesPollMaxOptions:     "statuses-poll-max-options", | 
					
						
							|  |  |  | 		StatusesPollOptionMaxChars: "statuses-poll-option-max-chars", | 
					
						
							|  |  |  | 		StatusesMaxMediaFiles:      "statuses-max-media-files", | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		LetsEncryptEnabled:      "letsencrypt-enabled", | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 		LetsEncryptPort:         "letsencrypt-port", | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 		LetsEncryptCertDir:      "letsencrypt-cert-dir", | 
					
						
							|  |  |  | 		LetsEncryptEmailAddress: "letsencrypt-email", | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		OIDCEnabled:          "oidc-enabled", | 
					
						
							|  |  |  | 		OIDCIdpName:          "oidc-idp-name", | 
					
						
							|  |  |  | 		OIDCSkipVerification: "oidc-skip-verification", | 
					
						
							|  |  |  | 		OIDCIssuer:           "oidc-issuer", | 
					
						
							|  |  |  | 		OIDCClientID:         "oidc-client-id", | 
					
						
							|  |  |  | 		OIDCClientSecret:     "oidc-client-secret", | 
					
						
							|  |  |  | 		OIDCScopes:           "oidc-scopes", | 
					
						
							| 
									
										
										
										
											2021-10-31 15:46:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		SMTPHost:     "smtp-host", | 
					
						
							|  |  |  | 		SMTPPort:     "smtp-port", | 
					
						
							|  |  |  | 		SMTPUsername: "smtp-username", | 
					
						
							|  |  |  | 		SMTPPassword: "smtp-password", | 
					
						
							|  |  |  | 		SMTPFrom:     "smtp-from", | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // GetEnvNames returns a struct containing the names of the environment variable keys used for | 
					
						
							|  |  |  | // initializing and storing urfavecli flag variables. | 
					
						
							|  |  |  | func GetEnvNames() Flags { | 
					
						
							|  |  |  | 	return Flags{ | 
					
						
							|  |  |  | 		LogLevel:        "GTS_LOG_LEVEL", | 
					
						
							|  |  |  | 		ApplicationName: "GTS_APPLICATION_NAME", | 
					
						
							|  |  |  | 		ConfigPath:      "GTS_CONFIG_PATH", | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 		Host:            "GTS_HOST", | 
					
						
							| 
									
										
										
										
											2021-07-19 18:42:08 +02:00
										 |  |  | 		AccountDomain:   "GTS_ACCOUNT_DOMAIN", | 
					
						
							| 
									
										
										
										
											2021-03-22 22:26:54 +01:00
										 |  |  | 		Protocol:        "GTS_PROTOCOL", | 
					
						
							| 
									
										
										
										
											2021-11-22 10:55:52 +01:00
										 |  |  | 		BindAddress:     "GTS_BIND_ADDRESS", | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 		Port:            "GTS_PORT", | 
					
						
							| 
									
										
										
										
											2021-07-26 16:15:36 +02:00
										 |  |  | 		TrustedProxies:  "GTS_TRUSTED_PROXIES", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-19 18:03:07 +02:00
										 |  |  | 		DbType:      "GTS_DB_TYPE", | 
					
						
							|  |  |  | 		DbAddress:   "GTS_DB_ADDRESS", | 
					
						
							|  |  |  | 		DbPort:      "GTS_DB_PORT", | 
					
						
							|  |  |  | 		DbUser:      "GTS_DB_USER", | 
					
						
							|  |  |  | 		DbPassword:  "GTS_DB_PASSWORD", | 
					
						
							|  |  |  | 		DbDatabase:  "GTS_DB_DATABASE", | 
					
						
							|  |  |  | 		DbTLSMode:   "GTS_DB_TLS_MODE", | 
					
						
							|  |  |  | 		DbTLSCACert: "GTS_DB_CA_CERT", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-18 23:27:43 +01:00
										 |  |  | 		TemplateBaseDir: "GTS_TEMPLATE_BASEDIR", | 
					
						
							| 
									
										
										
										
											2021-06-21 19:46:10 +02:00
										 |  |  | 		AssetBaseDir:    "GTS_ASSET_BASEDIR", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		AccountsOpenRegistration: "GTS_ACCOUNTS_OPEN_REGISTRATION", | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 		AccountsApprovalRequired: "GTS_ACCOUNTS_APPROVAL_REQUIRED", | 
					
						
							|  |  |  | 		AccountsReasonRequired:   "GTS_ACCOUNTS_REASON_REQUIRED", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 		MediaMaxImageSize:        "GTS_MEDIA_MAX_IMAGE_SIZE", | 
					
						
							|  |  |  | 		MediaMaxVideoSize:        "GTS_MEDIA_MAX_VIDEO_SIZE", | 
					
						
							|  |  |  | 		MediaMinDescriptionChars: "GTS_MEDIA_MIN_DESCRIPTION_CHARS", | 
					
						
							|  |  |  | 		MediaMaxDescriptionChars: "GTS_MEDIA_MAX_DESCRIPTION_CHARS", | 
					
						
							| 
									
										
										
										
											2021-04-01 20:46:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		StorageBackend:       "GTS_STORAGE_BACKEND", | 
					
						
							|  |  |  | 		StorageBasePath:      "GTS_STORAGE_BASE_PATH", | 
					
						
							|  |  |  | 		StorageServeProtocol: "GTS_STORAGE_SERVE_PROTOCOL", | 
					
						
							|  |  |  | 		StorageServeHost:     "GTS_STORAGE_SERVE_HOST", | 
					
						
							|  |  |  | 		StorageServeBasePath: "GTS_STORAGE_SERVE_BASE_PATH", | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		StatusesMaxChars:           "GTS_STATUSES_MAX_CHARS", | 
					
						
							|  |  |  | 		StatusesCWMaxChars:         "GTS_STATUSES_CW_MAX_CHARS", | 
					
						
							|  |  |  | 		StatusesPollMaxOptions:     "GTS_STATUSES_POLL_MAX_OPTIONS", | 
					
						
							|  |  |  | 		StatusesPollOptionMaxChars: "GTS_STATUSES_POLL_OPTION_MAX_CHARS", | 
					
						
							|  |  |  | 		StatusesMaxMediaFiles:      "GTS_STATUSES_MAX_MEDIA_FILES", | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		LetsEncryptEnabled:      "GTS_LETSENCRYPT_ENABLED", | 
					
						
							| 
									
										
										
										
											2021-07-24 18:55:24 +02:00
										 |  |  | 		LetsEncryptPort:         "GTS_LETSENCRYPT_PORT", | 
					
						
							| 
									
										
										
										
											2021-05-09 11:25:13 +02:00
										 |  |  | 		LetsEncryptCertDir:      "GTS_LETSENCRYPT_CERT_DIR", | 
					
						
							|  |  |  | 		LetsEncryptEmailAddress: "GTS_LETSENCRYPT_EMAIL", | 
					
						
							| 
									
										
										
										
											2021-07-23 10:36:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		OIDCEnabled:          "GTS_OIDC_ENABLED", | 
					
						
							|  |  |  | 		OIDCIdpName:          "GTS_OIDC_IDP_NAME", | 
					
						
							|  |  |  | 		OIDCSkipVerification: "GTS_OIDC_SKIP_VERIFICATION", | 
					
						
							|  |  |  | 		OIDCIssuer:           "GTS_OIDC_ISSUER", | 
					
						
							|  |  |  | 		OIDCClientID:         "GTS_OIDC_CLIENT_ID", | 
					
						
							|  |  |  | 		OIDCClientSecret:     "GTS_OIDC_CLIENT_SECRET", | 
					
						
							|  |  |  | 		OIDCScopes:           "GTS_OIDC_SCOPES", | 
					
						
							| 
									
										
										
										
											2021-10-31 15:46:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		SMTPHost:     "SMTP_HOST", | 
					
						
							|  |  |  | 		SMTPPort:     "SMTP_PORT", | 
					
						
							|  |  |  | 		SMTPUsername: "SMTP_USERNAME", | 
					
						
							|  |  |  | 		SMTPPassword: "SMTP_PASSWORD", | 
					
						
							|  |  |  | 		SMTPFrom:     "SMTP_FROM", | 
					
						
							| 
									
										
										
										
											2021-03-04 14:38:18 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-03-03 18:12:02 +01:00
										 |  |  | } |