* origin/develop: (24 commits) MastoAPI followers/following endpoints Switch the CI to Elixir 1.8.1 Linting. WebPush: Add activity id to the push messages. MastoAPI Accounts: Add fetching by nickname. Update Differences-in-MastodonAPI-Responses.md Remove chromium input hilight that clashes with our own Style again the login page to fit pleroma more MastoAPI StatusView: Add locality indicator. Broadcast deleted activity id on deletion to conform to MastoAPI streamig spec Change order of source code to align with platforms Update homepages and provide source code links for Roma apps in Clients.md Rename Mastalab -> Fedilab in Clients.md http: connection: unify adapter configuration and defaults http: connection: relax the timeouts a little http: rework connection timeouts to match hackney docs, enforce 1 second max TCP connection timeout http: actually pass the options list to the Connection factory http: connection: merge hackney option lists instead of concatenating them http: safely catch erlang exits and elixir errors from hackney (ref #672) Allow an admin to delete a user status ...
358 lines
8.4 KiB
Elixir
358 lines
8.4 KiB
Elixir
# This file is responsible for configuring your application
|
|
# and its dependencies with the aid of the Mix.Config module.
|
|
#
|
|
# This configuration file is loaded before any dependency and
|
|
# is restricted to this project.
|
|
use Mix.Config
|
|
|
|
# General application configuration
|
|
config :pleroma, ecto_repos: [Pleroma.Repo]
|
|
|
|
config :pleroma, Pleroma.Repo, types: Pleroma.PostgresTypes
|
|
|
|
config :pleroma, Pleroma.Captcha,
|
|
enabled: false,
|
|
seconds_valid: 60,
|
|
method: Pleroma.Captcha.Kocaptcha
|
|
|
|
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, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
|
|
|
|
# Upload configuration
|
|
config :pleroma, Pleroma.Upload,
|
|
uploader: Pleroma.Uploaders.Local,
|
|
filters: [],
|
|
proxy_remote: false,
|
|
proxy_opts: [
|
|
redirect_on_failure: false,
|
|
max_body_length: 25 * 1_048_576,
|
|
http: [
|
|
follow_redirect: true,
|
|
pool: :upload
|
|
]
|
|
]
|
|
|
|
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
|
|
|
|
config :pleroma, Pleroma.Uploaders.S3,
|
|
bucket: nil,
|
|
public_endpoint: "https://s3.amazonaws.com"
|
|
|
|
config :pleroma, Pleroma.Uploaders.MDII,
|
|
cgi: "https://mdii.sakura.ne.jp/mdii-post.cgi",
|
|
files: "https://mdii.sakura.ne.jp"
|
|
|
|
config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"]
|
|
|
|
config :pleroma, :uri_schemes,
|
|
valid_schemes: [
|
|
"https",
|
|
"http",
|
|
"dat",
|
|
"dweb",
|
|
"gopher",
|
|
"ipfs",
|
|
"ipns",
|
|
"irc",
|
|
"ircs",
|
|
"magnet",
|
|
"mailto",
|
|
"mumble",
|
|
"ssb",
|
|
"xmpp"
|
|
]
|
|
|
|
websocket_config = [
|
|
path: "/websocket",
|
|
serializer: [
|
|
{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"},
|
|
{Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}
|
|
],
|
|
timeout: 60_000,
|
|
transport_log: false,
|
|
compress: false
|
|
]
|
|
|
|
# Configures the endpoint
|
|
config :pleroma, Pleroma.Web.Endpoint,
|
|
url: [host: "localhost"],
|
|
http: [
|
|
dispatch: [
|
|
{:_,
|
|
[
|
|
{"/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, []}}
|
|
]}
|
|
]
|
|
],
|
|
protocol: "https",
|
|
secret_key_base: "aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl",
|
|
signing_salt: "CqaoopA2",
|
|
render_errors: [view: Pleroma.Web.ErrorView, accepts: ~w(json)],
|
|
pubsub: [name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2],
|
|
secure_cookie_flag: true
|
|
|
|
# Configures Elixir's Logger
|
|
config :logger, :console,
|
|
format: "$time $metadata[$level] $message\n",
|
|
metadata: [:request_id]
|
|
|
|
config :logger, :ex_syslogger,
|
|
level: :debug,
|
|
ident: "Pleroma",
|
|
format: "$metadata[$level] $message",
|
|
metadata: [:request_id]
|
|
|
|
config :mime, :types, %{
|
|
"application/xml" => ["xml"],
|
|
"application/xrd+xml" => ["xrd+xml"],
|
|
"application/jrd+json" => ["jrd+json"],
|
|
"application/activity+json" => ["activity+json"],
|
|
"application/ld+json" => ["activity+json"]
|
|
}
|
|
|
|
config :pleroma, :websub, Pleroma.Web.Websub
|
|
config :pleroma, :ostatus, Pleroma.Web.OStatus
|
|
config :pleroma, :httpoison, Pleroma.HTTP
|
|
config :tesla, adapter: Tesla.Adapter.Hackney
|
|
|
|
# Configures http settings, upstream proxy etc.
|
|
config :pleroma, :http,
|
|
proxy_url: nil,
|
|
adapter: [
|
|
ssl_options: [
|
|
# We don't support TLS v1.3 yet
|
|
versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]
|
|
]
|
|
]
|
|
|
|
config :pleroma, :instance,
|
|
name: "Shigusegubu",
|
|
email: "pleroma@hjkos.com",
|
|
description: "SigSegV, a pleroma instance",
|
|
limit: 5_000,
|
|
remote_limit: 100_000,
|
|
upload_limit: 50_000_000,
|
|
avatar_upload_limit: 2_000_000,
|
|
background_upload_limit: 4_000_000,
|
|
banner_upload_limit: 4_000_000,
|
|
registrations_open: true,
|
|
federating: true,
|
|
federation_reachability_timeout_days: 7,
|
|
allow_relay: true,
|
|
rewrite_policy: [
|
|
Pleroma.Web.ActivityPub.MRF.HellthreadPolicy,
|
|
Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy
|
|
],
|
|
public: true,
|
|
quarantined_instances: ["pleroma.rareome.ga"],
|
|
managed_config: true,
|
|
static_dir: "instance/static/",
|
|
allowed_post_formats: [
|
|
"text/plain"
|
|
],
|
|
finmoji_enabled: true,
|
|
mrf_transparency: true,
|
|
autofollowed_nicknames: [],
|
|
max_pinned_statuses: 1,
|
|
no_attachment_links: false,
|
|
welcome_user_nickname: nil,
|
|
welcome_message: nil,
|
|
max_report_comment_size: 1000
|
|
|
|
config :pleroma, :markup,
|
|
# XXX - unfortunately, inline images must be enabled by default right now, because
|
|
# of custom emoji. Issue #275 discusses defanging that somehow.
|
|
allow_inline_images: true,
|
|
allow_headings: false,
|
|
allow_tables: false,
|
|
allow_fonts: false,
|
|
scrub_policy: [
|
|
Pleroma.HTML.Transform.MediaProxy,
|
|
Pleroma.HTML.Scrubber.Default
|
|
]
|
|
|
|
config :pleroma, :frontend_configurations,
|
|
pleroma_fe: %{
|
|
theme: "sigsegv2",
|
|
logo: "/static/logo.svg",
|
|
background: "/static/sigsegv_s.png",
|
|
redirectRootNoLogin: "/main/all",
|
|
redirectRootLogin: "/main/friends",
|
|
logoMask: true,
|
|
logoMargin: "0.1em",
|
|
showInstanceSpecificPanel: true,
|
|
scopeOptionsEnabled: false,
|
|
formattingOptionsEnabled: false,
|
|
collapseMessageWithSubject: false,
|
|
hidePostStats: false,
|
|
hideUserStats: false,
|
|
scopeCopy: false,
|
|
subjectLineBehavior: "noop",
|
|
alwaysShowSubjectInput: false
|
|
},
|
|
masto_fe: %{
|
|
showInstanceSpecificPanel: true
|
|
}
|
|
|
|
config :pleroma, :activitypub,
|
|
accept_blocks: true,
|
|
unfollow_blocked: true,
|
|
outgoing_blocks: true,
|
|
follow_handshake_timeout: 500
|
|
|
|
config :pleroma, :user, deny_follow_blocked: true
|
|
|
|
config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default
|
|
|
|
config :pleroma, :mrf_rejectnonpublic,
|
|
allow_followersonly: false,
|
|
allow_direct: false
|
|
|
|
config :pleroma, :mrf_hellthread,
|
|
delist_threshold: 10,
|
|
reject_threshold: 20
|
|
|
|
config :pleroma, :mrf_simple,
|
|
media_removal: [],
|
|
media_nsfw: [],
|
|
federated_timeline_removal: [],
|
|
reject: [],
|
|
accept: []
|
|
|
|
config :pleroma, :mrf_keyword,
|
|
reject: [],
|
|
federated_timeline_removal: [],
|
|
replace: []
|
|
|
|
config :pleroma, :rich_media, enabled: true
|
|
|
|
config :pleroma, :media_proxy,
|
|
enabled: false,
|
|
proxy_opts: [
|
|
redirect_on_failure: false,
|
|
max_body_length: 25 * 1_048_576,
|
|
http: [
|
|
follow_redirect: true,
|
|
pool: :media
|
|
]
|
|
]
|
|
|
|
config :pleroma, :chat, enabled: false
|
|
|
|
config :ecto, json_library: Jason
|
|
|
|
config :phoenix, :format_encoders, json: Jason
|
|
|
|
config :pleroma, :gopher,
|
|
enabled: false,
|
|
ip: {0, 0, 0, 0},
|
|
port: 9999
|
|
|
|
config :pleroma, Pleroma.Web.Metadata, providers: [], unfurl_nsfw: false
|
|
|
|
config :pleroma, :suggestions,
|
|
enabled: false,
|
|
third_party_engine:
|
|
"http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-suggestions-api.cgi?{{host}}+{{user}}",
|
|
timeout: 300_000,
|
|
limit: 23,
|
|
web: "https://vinayaka.distsn.org/?{{host}}+{{user}}"
|
|
|
|
config :pleroma, :http_security,
|
|
enabled: true,
|
|
sts: false,
|
|
sts_max_age: 31_536_000,
|
|
ct_max_age: 2_592_000,
|
|
referrer_policy: "same-origin"
|
|
|
|
config :cors_plug,
|
|
max_age: 86_400,
|
|
methods: ["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"],
|
|
expose: [
|
|
"Link",
|
|
"X-RateLimit-Reset",
|
|
"X-RateLimit-Limit",
|
|
"X-RateLimit-Remaining",
|
|
"X-Request-Id",
|
|
"Idempotency-Key"
|
|
],
|
|
credentials: true,
|
|
headers: ["Authorization", "Content-Type", "Idempotency-Key"]
|
|
|
|
config :pleroma, Pleroma.User,
|
|
restricted_nicknames: [
|
|
".well-known",
|
|
"~",
|
|
"about",
|
|
"activities",
|
|
"api",
|
|
"auth",
|
|
"dev",
|
|
"friend-requests",
|
|
"inbox",
|
|
"internal",
|
|
"main",
|
|
"media",
|
|
"nodeinfo",
|
|
"notice",
|
|
"oauth",
|
|
"objects",
|
|
"ostatus_subscribe",
|
|
"pleroma",
|
|
"proxy",
|
|
"push",
|
|
"registration",
|
|
"relay",
|
|
"settings",
|
|
"status",
|
|
"tag",
|
|
"user-search",
|
|
"users",
|
|
"web"
|
|
]
|
|
|
|
config :pleroma, Pleroma.Web.Federator.RetryQueue,
|
|
enabled: false,
|
|
max_jobs: 20,
|
|
initial_timeout: 30,
|
|
max_retries: 5
|
|
|
|
config :pleroma, Pleroma.Jobs,
|
|
federator_incoming: [max_jobs: 50],
|
|
federator_outgoing: [max_jobs: 50],
|
|
mailer: [max_jobs: 10]
|
|
|
|
config :pleroma, :fetch_initial_posts,
|
|
enabled: false,
|
|
pages: 5
|
|
|
|
config :auto_linker,
|
|
opts: [
|
|
scheme: true,
|
|
extra: true,
|
|
class: false,
|
|
strip_prefix: false,
|
|
new_window: false,
|
|
rel: 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"
|