summaryrefslogtreecommitdiff
path: root/cmd/gotosocial/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/gotosocial/main.go')
-rw-r--r--cmd/gotosocial/main.go114
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)
+ },
+ },
+ },
+ },
},
}