summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/benchmark.exs4
-rw-r--r--config/config.exs109
-rw-r--r--config/description.exs650
-rw-r--r--config/dev.exs2
-rw-r--r--config/test.exs25
5 files changed, 505 insertions, 285 deletions
diff --git a/config/benchmark.exs b/config/benchmark.exs
index 84c6782a2..e867253eb 100644
--- a/config/benchmark.exs
+++ b/config/benchmark.exs
@@ -39,7 +39,7 @@ config :pleroma, Pleroma.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
- database: "pleroma_test",
+ database: "pleroma_benchmark",
hostname: System.get_env("DB_HOST") || "localhost",
pool_size: 10
@@ -61,8 +61,6 @@ config :web_push_encryption, :vapid_details,
config :web_push_encryption, :http_client, Pleroma.Web.WebPushHttpClientMock
-config :pleroma_job_queue, disabled: true
-
config :pleroma, Pleroma.ScheduledActivity,
daily_user_limit: 2,
total_user_limit: 3,
diff --git a/config/config.exs b/config/config.exs
index 0eff26653..e703c1632 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -58,20 +58,6 @@ config :pleroma, Pleroma.Captcha,
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
-config :pleroma, :hackney_pools,
- federation: [
- max_connections: 50,
- timeout: 150_000
- ],
- media: [
- max_connections: 50,
- timeout: 150_000
- ],
- upload: [
- max_connections: 25,
- timeout: 300_000
- ]
-
# Upload configuration
config :pleroma, Pleroma.Upload,
uploader: Pleroma.Uploaders.Local,
@@ -184,21 +170,13 @@ config :mime, :types, %{
"application/ld+json" => ["activity+json"]
}
-config :tesla, adapter: Tesla.Adapter.Hackney
-
+config :tesla, adapter: Tesla.Adapter.Gun
# Configures http settings, upstream proxy etc.
config :pleroma, :http,
proxy_url: nil,
send_user_agent: true,
user_agent: :default,
- adapter: [
- ssl_options: [
- # Workaround for remote server certificate chain issues
- partial_chain: &:hackney_connect.partial_chain/1,
- # We don't support TLS v1.3 yet
- versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]
- ]
- ]
+ adapter: []
config :pleroma, :instance,
name: "Pleroma",
@@ -219,6 +197,8 @@ config :pleroma, :instance,
max_expiration: 365 * 24 * 60 * 60
},
registrations_open: true,
+ invites_enabled: false,
+ account_activation_required: false,
federating: true,
federation_incoming_replies_max_depth: 100,
federation_reachability_timeout_days: 7,
@@ -258,7 +238,20 @@ config :pleroma, :instance,
account_field_value_length: 2048,
external_user_synchronization: true,
extended_nickname_format: true,
- cleanup_attachments: false
+ cleanup_attachments: false,
+ multi_factor_authentication: [
+ totp: [
+ # digits 6 or 8
+ digits: 6,
+ period: 30
+ ],
+ backup_codes: [
+ number: 5,
+ length: 16
+ ]
+ ]
+
+config :pleroma, :extensions, output_relationships_in_statuses_by_default: true
config :pleroma, :feed,
post_title: %{
@@ -326,6 +319,7 @@ config :pleroma, :activitypub,
unfollow_blocked: true,
outgoing_blocks: true,
follow_handshake_timeout: 500,
+ note_replies_output_limit: 5,
sign_object_fetches: true,
authorized_fetch_mode: false
@@ -353,7 +347,8 @@ config :pleroma, :mrf_simple,
reject: [],
accept: [],
avatar_removal: [],
- banner_removal: []
+ banner_removal: [],
+ reject_deletes: []
config :pleroma, :mrf_keyword,
reject: [],
@@ -399,6 +394,8 @@ config :phoenix, :format_encoders, json: Jason
config :phoenix, :json_library, Jason
+config :phoenix, :filter_parameters, ["password", "confirm"]
+
config :pleroma, :gopher,
enabled: false,
ip: {0, 0, 0, 0},
@@ -481,6 +478,7 @@ config :pleroma, Oban,
transmogrifier: 20,
scheduled_activities: 10,
background: 5,
+ remote_fetcher: 2,
attachments_cleanup: 5,
new_users_digest: 1
],
@@ -498,10 +496,6 @@ config :pleroma, :workers,
federator_outgoing: 5
]
-config :pleroma, :fetch_initial_posts,
- enabled: false,
- pages: 5
-
config :auto_linker,
opts: [
extra: true,
@@ -593,6 +587,7 @@ config :http_signatures,
config :pleroma, :rate_limit,
authentication: {60_000, 15},
+ timeline: {500, 3},
search: [{1000, 10}, {1000, 30}],
app_account_creation: {1_800_000, 25},
relations_actions: {10_000, 10},
@@ -617,6 +612,60 @@ config :pleroma, :modules, runtime_dir: "instance/modules"
config :pleroma, configurable_from_database: false
+config :pleroma, Pleroma.Repo,
+ parameters: [gin_fuzzy_search_limit: "500"],
+ prepare: :unnamed
+
+config :pleroma, :connections_pool,
+ checkin_timeout: 250,
+ max_connections: 250,
+ retry: 1,
+ retry_timeout: 1000,
+ await_up_timeout: 5_000
+
+config :pleroma, :pools,
+ federation: [
+ size: 50,
+ max_overflow: 10,
+ timeout: 150_000
+ ],
+ media: [
+ size: 50,
+ max_overflow: 10,
+ timeout: 150_000
+ ],
+ upload: [
+ size: 25,
+ max_overflow: 5,
+ timeout: 300_000
+ ],
+ default: [
+ size: 10,
+ max_overflow: 2,
+ timeout: 10_000
+ ]
+
+config :pleroma, :hackney_pools,
+ federation: [
+ max_connections: 50,
+ timeout: 150_000
+ ],
+ media: [
+ max_connections: 50,
+ timeout: 150_000
+ ],
+ upload: [
+ max_connections: 25,
+ timeout: 300_000
+ ]
+
+config :pleroma, :restrict_unauthenticated,
+ timelines: %{local: false, federated: false},
+ profiles: %{local: false, remote: false},
+ activities: %{local: false, remote: false}
+
+config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false
+
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env()}.exs"
diff --git a/config/description.exs b/config/description.exs
index 53d980c83..36ec3d40a 100644
--- a/config/description.exs
+++ b/config/description.exs
@@ -28,7 +28,8 @@ config :pleroma, :config_description, [
%{
key: :filters,
type: {:list, :module},
- description: "List of filter modules for uploads",
+ description:
+ "List of filter modules for uploads. Module names are shortened (removed leading `Pleroma.Upload.Filter.` part), but on adding custom module you need to use full name.",
suggestions:
Generator.list_modules_in_dir(
"lib/pleroma/upload/filter",
@@ -662,7 +663,7 @@ config :pleroma, :config_description, [
label: "Fed. incoming replies max depth",
type: :integer,
description:
- "Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while" <>
+ "Max. depth of reply-to and reply activities fetching on incoming federation, to prevent out-of-memory situations while" <>
" fetching very long threads. If set to `nil`, threads of any depth will be fetched. Lower this value if you experience out-of-memory crashes.",
suggestions: [
100
@@ -681,7 +682,8 @@ config :pleroma, :config_description, [
%{
key: :federation_publisher_modules,
type: {:list, :module},
- description: "List of modules for federation publishing",
+ description:
+ "List of modules for federation publishing. Module names are shortened (removed leading `Pleroma.Web.` part), but on adding custom module you need to use full name.",
suggestions: [
Pleroma.Web.ActivityPub.Publisher
]
@@ -694,7 +696,8 @@ config :pleroma, :config_description, [
%{
key: :rewrite_policy,
type: [:module, {:list, :module}],
- description: "A list of MRF policies enabled",
+ description:
+ "A list of enabled MRF policies. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name.",
suggestions:
Generator.list_modules_in_dir(
"lib/pleroma/web/activity_pub/mrf",
@@ -712,7 +715,7 @@ config :pleroma, :config_description, [
key: :quarantined_instances,
type: {:list, :string},
description:
- "List of ActivityPub instances where private (DMs, followers-only) activities will not be send",
+ "List of ActivityPub instances where private (DMs, followers-only) activities will not be sent",
suggestions: [
"quarantined.com",
"*.quarantined.com"
@@ -919,6 +922,62 @@ config :pleroma, :config_description, [
key: :external_user_synchronization,
type: :boolean,
description: "Enabling following/followers counters synchronization for external users"
+ },
+ %{
+ key: :multi_factor_authentication,
+ type: :keyword,
+ description: "Multi-factor authentication settings",
+ suggestions: [
+ [
+ totp: [digits: 6, period: 30],
+ backup_codes: [number: 5, length: 16]
+ ]
+ ],
+ children: [
+ %{
+ key: :totp,
+ type: :keyword,
+ description: "TOTP settings",
+ suggestions: [digits: 6, period: 30],
+ children: [
+ %{
+ key: :digits,
+ type: :integer,
+ suggestions: [6],
+ description:
+ "Determines the length of a one-time pass-code, in characters. Defaults to 6 characters."
+ },
+ %{
+ key: :period,
+ type: :integer,
+ suggestions: [30],
+ description:
+ "a period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds."
+ }
+ ]
+ },
+ %{
+ key: :backup_codes,
+ type: :keyword,
+ description: "MFA backup codes settings",
+ suggestions: [number: 5, length: 16],
+ children: [
+ %{
+ key: :number,
+ type: :integer,
+ suggestions: [5],
+ description: "number of backup codes to generate."
+ },
+ %{
+ key: :length,
+ type: :integer,
+ suggestions: [16],
+ description:
+ "Determines the length of backup one-time pass-codes, in characters. Defaults to 16 characters."
+ }
+ ]
+ }
+ ]
}
]
},
@@ -1317,13 +1376,13 @@ config :pleroma, :config_description, [
%{
key: :reject,
type: {:list, :string},
- description: "List of instances to reject any activities from",
+ description: "List of instances to reject activities from (except deletes)",
suggestions: ["example.com", "*.example.com"]
},
%{
key: :accept,
type: {:list, :string},
- description: "List of instances to accept any activities from",
+ description: "List of instances to only accept activities from (except deletes)",
suggestions: ["example.com", "*.example.com"]
},
%{
@@ -1343,6 +1402,12 @@ config :pleroma, :config_description, [
type: {:list, :string},
description: "List of instances to strip banners from",
suggestions: ["example.com", "*.example.com"]
+ },
+ %{
+ key: :reject_deletes,
+ type: {:list, :string},
+ description: "List of instances to reject deletions from",
+ suggestions: ["example.com", "*.example.com"]
}
]
},
@@ -1617,160 +1682,6 @@ config :pleroma, :config_description, [
},
%{
group: :pleroma,
- key: Pleroma.Web.Endpoint,
- type: :group,
- description: "Phoenix endpoint configuration",
- children: [
- %{
- key: :http,
- label: "HTTP",
- type: {:keyword, :integer, :tuple},
- description: "http protocol configuration",
- suggestions: [
- port: 8080,
- ip: {127, 0, 0, 1}
- ],
- children: [
- %{
- key: :dispatch,
- type: {:list, :tuple},
- description: "dispatch settings",
- suggestions: [
- {:_,
- [
- {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []},
- {"/websocket", Phoenix.Endpoint.CowboyWebSocket,
- {Phoenix.Transports.WebSocket,
- {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}},
- {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}}
- ]}
- # end copied from config.exs
- ]
- },
- %{
- key: :ip,
- label: "IP",
- type: :tuple,
- description: "ip",
- suggestions: [
- {0, 0, 0, 0}
- ]
- },
- %{
- key: :port,
- type: :integer,
- description: "port",
- suggestions: [
- 2020
- ]
- }
- ]
- },
- %{
- key: :url,
- label: "URL",
- type: {:keyword, :string, :integer},
- description: "configuration for generating urls",
- suggestions: [
- host: "example.com",
- port: 2020,
- scheme: "https"
- ],
- children: [
- %{
- key: :host,
- type: :string,
- description: "Host",
- suggestions: [
- "example.com"
- ]
- },
- %{
- key: :port,
- type: :integer,
- description: "port",
- suggestions: [
- 2020
- ]
- },
- %{
- key: :scheme,
- type: :string,
- description: "Scheme",
- suggestions: [
- "https",
- "https"
- ]
- }
- ]
- },
- %{
- key: :instrumenters,
- type: {:list, :module},
- suggestions: [Pleroma.Web.Endpoint.Instrumenter]
- },
- %{
- key: :protocol,
- type: :string,
- suggestions: ["https"]
- },
- %{
- key: :secret_key_base,
- type: :string,
- suggestions: ["aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl"]
- },
- %{
- key: :signing_salt,
- type: :string,
- suggestions: ["CqaoopA2"]
- },
- %{
- key: :render_errors,
- type: :keyword,
- suggestions: [view: Pleroma.Web.ErrorView, accepts: ~w(json)],
- children: [
- %{
- key: :view,
- type: :module,
- suggestions: [Pleroma.Web.ErrorView]
- },
- %{
- key: :accepts,
- type: {:list, :string},
- suggestions: ["json"]
- }
- ]
- },
- %{
- key: :pubsub,
- type: :keyword,
- suggestions: [name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2],
- children: [
- %{
- key: :name,
- type: :module,
- suggestions: [Pleroma.PubSub]
- },
- %{
- key: :adapter,
- type: :module,
- suggestions: [Phoenix.PubSub.PG2]
- }
- ]
- },
- %{
- key: :secure_cookie_flag,
- type: :boolean
- },
- %{
- key: :extra_cookie_attrs,
- type: {:list, :string},
- suggestions: ["SameSite=Lax"]
- }
- ]
- },
- %{
- group: :pleroma,
key: :activitypub,
type: :group,
description: "ActivityPub-related settings",
@@ -1791,6 +1702,12 @@ config :pleroma, :config_description, [
description: "Sign object fetches with HTTP signatures"
},
%{
+ key: :note_replies_output_limit,
+ type: :integer,
+ description:
+ "The number of Note replies' URIs to be included with outgoing federation (`5` to match Mastodon hardcoded value, `0` to disable the output)."
+ },
+ %{
key: :follow_handshake_timeout,
type: :integer,
description: "Following handshake timeout",
@@ -1929,25 +1846,6 @@ config :pleroma, :config_description, [
]
},
%{
- group: :pleroma_job_queue,
- key: :queues,
- type: :group,
- description: "[Deprecated] Replaced with `Oban`/`:queues` (keeping the same format)"
- },
- %{
- group: :pleroma,
- key: Pleroma.Web.Federator.RetryQueue,
- type: :group,
- description: "[Deprecated] See `Oban` and `:workers` sections for configuration notes",
- children: [
- %{
- key: :max_retries,
- type: :integer,
- description: "[Deprecated] Replaced as `Oban`/`:queues`/`:outgoing_federation` value"
- }
- ]
- },
- %{
group: :pleroma,
key: Oban,
type: :group,
@@ -2051,6 +1949,18 @@ config :pleroma, :config_description, [
suggestions: [50]
}
]
+ },
+ %{
+ key: :crontab,
+ type: {:list, :tuple},
+ description: "Settings for cron background jobs",
+ suggestions: [
+ {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker},
+ {"0 * * * *", Pleroma.Workers.Cron.StatsWorker},
+ {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker},
+ {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker},
+ {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker}
+ ]
}
]
},
@@ -2124,7 +2034,8 @@ config :pleroma, :config_description, [
%{
key: :parsers,
type: {:list, :module},
- description: "List of Rich Media parsers.",
+ description:
+ "List of Rich Media parsers. Module names are shortened (removed leading `Pleroma.Web.RichMedia.Parsers.` part), but on adding custom module you need to use full name.",
suggestions: [
Pleroma.Web.RichMedia.Parsers.MetaTagsParser,
Pleroma.Web.RichMedia.Parsers.OEmbed,
@@ -2136,7 +2047,8 @@ config :pleroma, :config_description, [
key: :ttl_setters,
label: "TTL setters",
type: {:list, :module},
- description: "List of rich media TTL setters.",
+ description:
+ "List of rich media TTL setters. Module names are shortened (removed leading `Pleroma.Web.RichMedia.Parser.` part), but on adding custom module you need to use full name.",
suggestions: [
Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl
]
@@ -2144,25 +2056,6 @@ config :pleroma, :config_description, [
]
},
%{
- group: :pleroma,
- key: :fetch_initial_posts,
- type: :group,
- description: "Fetching initial posts settings",
- children: [
- %{
- key: :enabled,
- type: :boolean,
- description: "Fetch posts when a new user is federated with"
- },
- %{
- key: :pages,
- type: :integer,
- description: "The amount of pages to fetch",
- suggestions: [5]
- }
- ]
- },
- %{
group: :auto_linker,
key: :opts,
type: :group,
@@ -2415,6 +2308,7 @@ config :pleroma, :config_description, [
children: [
%{
key: :active,
+ label: "Enabled",
type: :boolean,
description: "Globally enable or disable digest emails"
},
@@ -2590,19 +2484,6 @@ config :pleroma, :config_description, [
},
%{
group: :pleroma,
- key: :database,
- type: :group,
- description: "Database related settings",
- children: [
- %{
- key: :rum_enabled,
- type: :boolean,
- description: "If RUM indexes should be used. Default: disabled"
- }
- ]
- },
- %{
- group: :pleroma,
key: :rate_limit,
type: :group,
description:
@@ -2615,6 +2496,12 @@ config :pleroma, :config_description, [
suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
},
%{
+ key: :timeline,
+ type: [:tuple, {:list, :tuple}],
+ description: "For requests to timelines (each timeline has it's own limiter)",
+ suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
+ },
+ %{
key: :app_account_creation,
type: [:tuple, {:list, :tuple}],
description: "For registering user accounts from the same IP address",
@@ -2623,7 +2510,7 @@ config :pleroma, :config_description, [
%{
key: :relations_actions,
type: [:tuple, {:list, :tuple}],
- description: "For actions on relations with all users (follow, unfollow)",
+ description: "For actions on relationships with all users (follow, unfollow)",
suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
},
%{
@@ -2740,19 +2627,6 @@ config :pleroma, :config_description, [
]
},
%{
- group: :tesla,
- type: :group,
- description: "Tesla settings",
- children: [
- %{
- key: :adapter,
- type: :module,
- description: "Tesla adapter",
- suggestions: [Tesla.Adapter.Hackney]
- }
- ]
- },
- %{
group: :pleroma,
key: :chat,
type: :group,
@@ -2765,20 +2639,6 @@ config :pleroma, :config_description, [
]
},
%{
- group: :prometheus,
- key: Pleroma.Web.Endpoint.MetricsExporter,
- type: :group,
- description: "Prometheus settings",
- children: [
- %{
- key: :path,
- type: :string,
- description: "API endpoint with metrics",
- suggestions: ["/api/pleroma/app_metrics"]
- }
- ]
- },
- %{
group: :http_signatures,
type: :group,
description: "HTTP Signatures settings",
@@ -2862,6 +2722,8 @@ config :pleroma, :config_description, [
%{
key: :scrub_policy,
type: {:list, :module},
+ description:
+ "Module names are shortened (removed leading `Pleroma.HTML.` part), but on adding custom module you need to use full name.",
suggestions: [Pleroma.HTML.Transform.MediaProxy, Pleroma.HTML.Scrubber.Default]
}
]
@@ -3045,7 +2907,7 @@ config :pleroma, :config_description, [
group: :pleroma,
key: :feed,
type: :group,
- description: "Configure feed rendering.",
+ description: "Configure feed rendering",
children: [
%{
key: :post_title,
@@ -3095,7 +2957,7 @@ config :pleroma, :config_description, [
group: :pleroma,
key: :modules,
type: :group,
- description: "Custom Runtime Modules.",
+ description: "Custom Runtime Modules",
children: [
%{
key: :runtime_dir,
@@ -3106,14 +2968,308 @@ config :pleroma, :config_description, [
},
%{
group: :pleroma,
+ key: :streamer,
+ type: :group,
+ description: "Settings for notifications streamer",
+ children: [
+ %{
+ key: :workers,
+ type: :integer,
+ description: "Number of workers to send notifications.",
+ suggestions: [3]
+ },
+ %{
+ key: :overflow_workers,
+ type: :integer,
+ description: "Maximum number of workers created if pool is empty.",
+ suggestions: [2]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :connections_pool,
+ type: :group,
+ description: "Advanced settings for `gun` connections pool",
+ children: [
+ %{
+ key: :checkin_timeout,
+ type: :integer,
+ description: "Timeout to checkin connection from pool. Default: 250ms.",
+ suggestions: [250]
+ },
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Maximum number of connections in the pool. Default: 250 connections.",
+ suggestions: [250]
+ },
+ %{
+ key: :retry,
+ type: :integer,
+ description:
+ "Number of retries, while `gun` will try to reconnect if connection goes down. Default: 1.",
+ suggestions: [1]
+ },
+ %{
+ key: :retry_timeout,
+ type: :integer,
+ description:
+ "Time between retries when `gun` will try to reconnect in milliseconds. Default: 1000ms.",
+ suggestions: [1000]
+ },
+ %{
+ key: :await_up_timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait until connection is up. Default: 5000ms.",
+ suggestions: [5000]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :pools,
type: :group,
- description: "Allow instance configuration from database.",
+ description: "Advanced settings for `gun` workers pools",
children: [
%{
- key: :configurable_from_database,
+ key: :federation,
+ type: :keyword,
+ description: "Settings for federation pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [10]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :media,
+ type: :keyword,
+ description: "Settings for media pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [10]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :upload,
+ type: :keyword,
+ description: "Settings for upload pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [25]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [5]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [300_000]
+ }
+ ]
+ },
+ %{
+ key: :default,
+ type: :keyword,
+ description: "Settings for default pool.",
+ children: [
+ %{
+ key: :size,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [10]
+ },
+ %{
+ key: :max_overflow,
+ type: :integer,
+ description: "Number of additional workers if pool is under load.",
+ suggestions: [2]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `gun` will wait for response.",
+ suggestions: [10_000]
+ }
+ ]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :hackney_pools,
+ type: :group,
+ description: "Advanced settings for `hackney` connections pools",
+ children: [
+ %{
+ key: :federation,
+ type: :keyword,
+ description: "Settings for federation pool.",
+ children: [
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `hackney` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :media,
+ type: :keyword,
+ description: "Settings for media pool.",
+ children: [
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [50]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `hackney` will wait for response.",
+ suggestions: [150_000]
+ }
+ ]
+ },
+ %{
+ key: :upload,
+ type: :keyword,
+ description: "Settings for upload pool.",
+ children: [
+ %{
+ key: :max_connections,
+ type: :integer,
+ description: "Number workers in the pool.",
+ suggestions: [25]
+ },
+ %{
+ key: :timeout,
+ type: :integer,
+ description: "Timeout while `hackney` will wait for response.",
+ suggestions: [300_000]
+ }
+ ]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: :restrict_unauthenticated,
+ type: :group,
+ description:
+ "Disallow viewing timelines, user profiles and statuses for unauthenticated users.",
+ children: [
+ %{
+ key: :timelines,
+ type: :map,
+ description: "Settings for public and federated timelines.",
+ children: [
+ %{
+ key: :local,
+ type: :boolean,
+ description: "Disallow view public timeline."
+ },
+ %{
+ key: :federated,
+ type: :boolean,
+ description: "Disallow view federated timeline."
+ }
+ ]
+ },
+ %{
+ key: :profiles,
+ type: :map,
+ description: "Settings for user profiles.",
+ children: [
+ %{
+ key: :local,
+ type: :boolean,
+ description: "Disallow view local user profiles."
+ },
+ %{
+ key: :remote,
+ type: :boolean,
+ description: "Disallow view remote user profiles."
+ }
+ ]
+ },
+ %{
+ key: :activities,
+ type: :map,
+ description: "Settings for statuses.",
+ children: [
+ %{
+ key: :local,
+ type: :boolean,
+ description: "Disallow view local statuses."
+ },
+ %{
+ key: :remote,
+ type: :boolean,
+ description: "Disallow view remote statuses."
+ }
+ ]
+ }
+ ]
+ },
+ %{
+ group: :pleroma,
+ key: Pleroma.Web.ApiSpec.CastAndValidate,
+ type: :group,
+ children: [
+ %{
+ key: :strict,
type: :boolean,
description:
- "Allow transferring configuration to DB with the subsequent customization from Admin api. Default: disabled"
+ "Enables strict input validation (useful in development, not recommended in production)",
+ suggestions: [false]
}
]
}
diff --git a/config/dev.exs b/config/dev.exs
index 7e1e3b4be..4faaeff5b 100644
--- a/config/dev.exs
+++ b/config/dev.exs
@@ -52,6 +52,8 @@ config :pleroma, Pleroma.Repo,
hostname: "localhost",
pool_size: 10
+config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true
+
if File.exists?("./config/dev.secret.exs") do
import_config "dev.secret.exs"
else
diff --git a/config/test.exs b/config/test.exs
index 6bea09380..e38b9967d 100644
--- a/config/test.exs
+++ b/config/test.exs
@@ -56,6 +56,19 @@ config :pleroma, :rich_media,
ignore_hosts: [],
ignore_tld: ["local", "localdomain", "lan"]
+config :pleroma, :instance,
+ multi_factor_authentication: [
+ totp: [
+ # digits 6 or 8
+ digits: 6,
+ period: 30
+ ],
+ backup_codes: [
+ number: 2,
+ length: 6
+ ]
+ ]
+
config :web_push_encryption, :vapid_details,
subject: "mailto:administrator@example.com",
public_key:
@@ -74,11 +87,7 @@ config :pleroma, Pleroma.ScheduledActivity,
total_user_limit: 3,
enabled: false
-config :pleroma, :rate_limit,
- search: [{1000, 30}, {1000, 30}],
- app_account_creation: {10_000, 5},
- password_reset: {1000, 30},
- ap_routes: nil
+config :pleroma, :rate_limit, %{}
config :pleroma, :http_security, report_uri: "https://endpoint.com"
@@ -94,8 +103,14 @@ config :pleroma, Pleroma.ReverseProxy.Client, Pleroma.ReverseProxy.ClientMock
config :pleroma, :modules, runtime_dir: "test/fixtures/modules"
+config :pleroma, Pleroma.Gun, Pleroma.GunMock
+
config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: true
+config :pleroma, Pleroma.Plugs.RemoteIp, enabled: false
+
+config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true
+
if File.exists?("./config/test.secret.exs") do
import_config "test.secret.exs"
else