diff options
Diffstat (limited to 'cmd/gotosocial/main.go')
-rw-r--r-- | cmd/gotosocial/main.go | 114 |
1 files changed, 90 insertions, 24 deletions
diff --git a/cmd/gotosocial/main.go b/cmd/gotosocial/main.go index 983d49d40..337e7b785 100644 --- a/cmd/gotosocial/main.go +++ b/cmd/gotosocial/main.go @@ -28,6 +28,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/db" "github.com/superseriousbusiness/gotosocial/internal/gotosocial" "github.com/superseriousbusiness/gotosocial/internal/log" + "github.com/superseriousbusiness/gotosocial/testrig" "github.com/urfave/cli/v2" ) @@ -35,6 +36,7 @@ import ( func main() { flagNames := config.GetFlagNames() envNames := config.GetEnvNames() + defaults := config.GetDefaults() app := &cli.App{ Usage: "a fediverse social media server", Flags: []cli.Flag{ @@ -42,32 +44,32 @@ func main() { &cli.StringFlag{ Name: flagNames.LogLevel, Usage: "Log level to run at: debug, info, warn, fatal", - Value: "info", - EnvVars: []string{"GTS_LOG_LEVEL"}, + Value: defaults.LogLevel, + EnvVars: []string{envNames.LogLevel}, }, &cli.StringFlag{ Name: flagNames.ApplicationName, Usage: "Name of the application, used in various places internally", - Value: "gotosocial", + Value: defaults.ApplicationName, EnvVars: []string{envNames.ApplicationName}, Hidden: true, }, &cli.StringFlag{ Name: flagNames.ConfigPath, Usage: "Path to a yaml file containing gotosocial configuration. Values set in this file will be overwritten by values set as env vars or arguments", - Value: "", + Value: defaults.ConfigPath, EnvVars: []string{envNames.ConfigPath}, }, &cli.StringFlag{ Name: flagNames.Host, Usage: "Hostname to use for the server (eg., example.org, gotosocial.whatever.com)", - Value: "localhost", + Value: defaults.Host, EnvVars: []string{envNames.Host}, }, &cli.StringFlag{ Name: flagNames.Protocol, Usage: "Protocol to use for the REST api of the server (only use http for debugging and tests!)", - Value: "https", + Value: defaults.Protocol, EnvVars: []string{envNames.Protocol}, }, @@ -75,36 +77,37 @@ func main() { &cli.StringFlag{ Name: flagNames.DbType, Usage: "Database type: eg., postgres", - Value: "postgres", + Value: defaults.DbType, EnvVars: []string{envNames.DbType}, }, &cli.StringFlag{ Name: flagNames.DbAddress, Usage: "Database ipv4 address or hostname", - Value: "localhost", + Value: defaults.DbAddress, EnvVars: []string{envNames.DbAddress}, }, &cli.IntFlag{ Name: flagNames.DbPort, Usage: "Database port", - Value: 5432, + Value: defaults.DbPort, EnvVars: []string{envNames.DbPort}, }, &cli.StringFlag{ Name: flagNames.DbUser, Usage: "Database username", - Value: "postgres", + Value: defaults.DbUser, EnvVars: []string{envNames.DbUser}, }, &cli.StringFlag{ Name: flagNames.DbPassword, Usage: "Database password", + Value: defaults.DbPassword, EnvVars: []string{envNames.DbPassword}, }, &cli.StringFlag{ Name: flagNames.DbDatabase, Usage: "Database name", - Value: "postgres", + Value: defaults.DbDatabase, EnvVars: []string{envNames.DbDatabase}, }, @@ -112,7 +115,7 @@ func main() { &cli.StringFlag{ Name: flagNames.TemplateBaseDir, Usage: "Basedir for html templating files for rendering pages and composing emails.", - Value: "./web/template/", + Value: defaults.TemplateBaseDir, EnvVars: []string{envNames.TemplateBaseDir}, }, @@ -120,61 +123,111 @@ func main() { &cli.BoolFlag{ Name: flagNames.AccountsOpenRegistration, Usage: "Allow anyone to submit an account signup request. If false, server will be invite-only.", - Value: true, + Value: defaults.AccountsOpenRegistration, EnvVars: []string{envNames.AccountsOpenRegistration}, }, &cli.BoolFlag{ - Name: flagNames.AccountsRequireApproval, + Name: flagNames.AccountsApprovalRequired, Usage: "Do account signups require approval by an admin or moderator before user can log in? If false, new registrations will be automatically approved.", - Value: true, - EnvVars: []string{envNames.AccountsRequireApproval}, + Value: defaults.AccountsRequireApproval, + EnvVars: []string{envNames.AccountsApprovalRequired}, + }, + &cli.BoolFlag{ + Name: flagNames.AccountsReasonRequired, + Usage: "Do new account signups require a reason to be submitted on registration?", + Value: defaults.AccountsReasonRequired, + EnvVars: []string{envNames.AccountsReasonRequired}, }, // MEDIA FLAGS &cli.IntFlag{ Name: flagNames.MediaMaxImageSize, Usage: "Max size of accepted images in bytes", - Value: 1048576, // 1mb + Value: defaults.MediaMaxImageSize, EnvVars: []string{envNames.MediaMaxImageSize}, }, &cli.IntFlag{ Name: flagNames.MediaMaxVideoSize, Usage: "Max size of accepted videos in bytes", - Value: 5242880, // 5mb + Value: defaults.MediaMaxVideoSize, EnvVars: []string{envNames.MediaMaxVideoSize}, }, + &cli.IntFlag{ + Name: flagNames.MediaMinDescriptionChars, + Usage: "Min required chars for an image description", + Value: defaults.MediaMinDescriptionChars, + EnvVars: []string{envNames.MediaMinDescriptionChars}, + }, + &cli.IntFlag{ + Name: flagNames.MediaMaxDescriptionChars, + Usage: "Max permitted chars for an image description", + Value: defaults.MediaMaxDescriptionChars, + EnvVars: []string{envNames.MediaMaxDescriptionChars}, + }, // STORAGE FLAGS &cli.StringFlag{ Name: flagNames.StorageBackend, Usage: "Storage backend to use for media attachments", - Value: "local", + Value: defaults.StorageBackend, EnvVars: []string{envNames.StorageBackend}, }, &cli.StringFlag{ Name: flagNames.StorageBasePath, - Usage: "Full path to an already-created directory where gts should store/retrieve media files", - Value: "/opt/gotosocial", + Usage: "Full path to an already-created directory where gts should store/retrieve media files. Subfolders will be created within this dir.", + Value: defaults.StorageBasePath, EnvVars: []string{envNames.StorageBasePath}, }, &cli.StringFlag{ Name: flagNames.StorageServeProtocol, Usage: "Protocol to use for serving media attachments (use https if storage is local)", - Value: "https", + Value: defaults.StorageServeProtocol, EnvVars: []string{envNames.StorageServeProtocol}, }, &cli.StringFlag{ Name: flagNames.StorageServeHost, Usage: "Hostname to serve media attachments from (use the same value as host if storage is local)", - Value: "localhost", + Value: defaults.StorageServeHost, EnvVars: []string{envNames.StorageServeHost}, }, &cli.StringFlag{ Name: flagNames.StorageServeBasePath, Usage: "Path to append to protocol and hostname to create the base path from which media files will be served (default will mostly be fine)", - Value: "/fileserver/media", + Value: defaults.StorageServeBasePath, EnvVars: []string{envNames.StorageServeBasePath}, }, + + // STATUSES FLAGS + &cli.IntFlag{ + Name: flagNames.StatusesMaxChars, + Usage: "Max permitted characters for posted statuses", + Value: defaults.StatusesMaxChars, + EnvVars: []string{envNames.StatusesMaxChars}, + }, + &cli.IntFlag{ + Name: flagNames.StatusesCWMaxChars, + Usage: "Max permitted characters for content/spoiler warnings on statuses", + Value: defaults.StatusesCWMaxChars, + EnvVars: []string{envNames.StatusesCWMaxChars}, + }, + &cli.IntFlag{ + Name: flagNames.StatusesPollMaxOptions, + Usage: "Max amount of options permitted on a poll", + Value: defaults.StatusesPollMaxOptions, + EnvVars: []string{envNames.StatusesPollMaxOptions}, + }, + &cli.IntFlag{ + Name: flagNames.StatusesPollOptionMaxChars, + Usage: "Max amount of characters for a poll option", + Value: defaults.StatusesPollOptionMaxChars, + EnvVars: []string{envNames.StatusesPollOptionMaxChars}, + }, + &cli.IntFlag{ + Name: flagNames.StatusesMaxMediaFiles, + Usage: "Maximum number of media files/attachments per status", + Value: defaults.StatusesMaxMediaFiles, + EnvVars: []string{envNames.StatusesMaxMediaFiles}, + }, }, Commands: []*cli.Command{ { @@ -203,6 +256,19 @@ func main() { }, }, }, + { + Name: "testrig", + Usage: "gotosocial testrig tasks", + Subcommands: []*cli.Command{ + { + Name: "start", + Usage: "start the gotosocial testrig", + Action: func(c *cli.Context) error { + return runAction(c, testrig.Run) + }, + }, + }, + }, }, } |