Merge branch 'develop' into feature/1885-MRF-metadata
authorMark Felder <feld@FreeBSD.org>
Thu, 2 Jul 2020 14:57:57 +0000 (09:57 -0500)
committerMark Felder <feld@FreeBSD.org>
Thu, 2 Jul 2020 14:57:57 +0000 (09:57 -0500)
1  2 
config/description.exs

diff --combined config/description.exs
index e0c07bf78c4fbde1cd02bd09642e081569d1ad9f,4ea8a2f50b86a33ff838e93f2f872e49dcf15592..39c6c57938f861a3c034c13fb01cc8b22c599d6d
@@@ -40,12 -40,13 +40,13 @@@ config :pleroma, :config_description, 
          key: :link_name,
          type: :boolean,
          description:
-           "If enabled, a name parameter will be added to the url of the upload. For example `https://instance.tld/media/imagehash.png?name=realname.png`."
+           "If enabled, a name parameter will be added to the URL of the upload. For example `https://instance.tld/media/imagehash.png?name=realname.png`."
        },
        %{
          key: :base_url,
+         label: "Base URL",
          type: :string,
-         description: "Base url for the uploads, needed if you use CDN",
+         description: "Base URL for the uploads, needed if you use CDN",
          suggestions: [
            "https://cdn-host.com"
          ]
@@@ -58,6 -59,7 +59,7 @@@
        },
        %{
          key: :proxy_opts,
+         label: "Proxy Options",
          type: :keyword,
          description: "Options for Pleroma.ReverseProxy",
          suggestions: [
@@@ -85,6 -87,7 +87,7 @@@
            },
            %{
              key: :http,
+             label: "HTTP",
              type: :keyword,
              description: "HTTP options",
              children: [
        %{
          key: :args,
          type: [:string, {:list, :string}, {:list, :tuple}],
 -        description: "List of actions for the mogrify command",
 +        description:
 +          "List of actions for the mogrify command. It's possible to add self-written settings as string. " <>
 +            "For example `[\"auto-orient\", \"strip\", {\"resize\", \"3840x1080>\"}]` string will be parsed into list of the settings.",
          suggestions: [
            "strip",
            "auto-orient",
    %{
      group: :pleroma,
      key: :uri_schemes,
+     label: "URI Schemes",
      type: :group,
      description: "URI schemes related settings",
      children: [
          key: :invites_enabled,
          type: :boolean,
          description:
-           "Enable user invitations for admins (depends on `registrations_open` being disabled)."
+           "Enable user invitations for admins (depends on `registrations_open` being disabled)"
        },
        %{
          key: :account_activation_required,
          type: :boolean,
-         description: "Require users to confirm their emails before signing in."
+         description: "Require users to confirm their emails before signing in"
        },
        %{
          key: :federating,
          type: :boolean,
-         description: "Enable federation with other instances."
+         description: "Enable federation with other instances"
        },
        %{
          key: :federation_incoming_replies_max_depth,
          label: "Fed. reachability timeout days",
          type: :integer,
          description:
-           "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it.",
+           "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it",
          suggestions: [
            7
          ]
        },
        %{
          key: :safe_dm_mentions,
+         label: "Safe DM mentions",
          type: :boolean,
          description:
            "If enabled, only mentions at the beginning of a post will be used to address people in direct messages." <>
        %{
          key: :skip_thread_containment,
          type: :boolean,
-         description: "Skip filtering out broken threads. Default: enabled"
+         description: "Skip filtering out broken threads. Default: enabled."
        },
        %{
          key: :limit_to_local_content,
          children: [
            %{
              key: :totp,
+             label: "TOTP settings",
              type: :keyword,
              description: "TOTP settings",
              suggestions: [digits: 6, period: 30],
                  type: :integer,
                  suggestions: [30],
                  description:
-                   "a period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds."
+                   "A period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds."
                }
              ]
            },
                  key: :number,
                  type: :integer,
                  suggestions: [5],
-                 description: "number of backup codes to generate."
+                 description: "Number of backup codes to generate."
                },
                %{
                  key: :length,
      group: :logger,
      type: :group,
      key: :ex_syslogger,
+     label: "ExSyslogger",
      description: "ExSyslogger-related settings",
      children: [
        %{
        %{
          key: :format,
          type: :string,
-         description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\".",
+         description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
          suggestions: ["$metadata[$level] $message"]
        },
        %{
      group: :logger,
      type: :group,
      key: :console,
+     label: "Console Logger",
      description: "Console logger settings",
      children: [
        %{
        %{
          key: :format,
          type: :string,
-         description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\".",
+         description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
          suggestions: ["$metadata[$level] $message"]
        },
        %{
    %{
      group: :quack,
      type: :group,
+     label: "Quack Logger",
      description: "Quack-related settings",
      children: [
        %{
              key: :greentext,
              label: "Greentext",
              type: :boolean,
-             description: "Enables green text on lines prefixed with the > character."
+             description: "Enables green text on lines prefixed with the > character"
            },
            %{
              key: :hideFilteredStatuses,
              label: "Hide Filtered Statuses",
              type: :boolean,
-             description: "Hides filtered statuses from timelines."
+             description: "Hides filtered statuses from timelines"
            },
            %{
              key: :hideMutedPosts,
              label: "Hide Muted Posts",
              type: :boolean,
-             description: "Hides muted statuses from timelines."
+             description: "Hides muted statuses from timelines"
            },
            %{
              key: :hidePostStats,
              key: :hideSitename,
              label: "Hide Sitename",
              type: :boolean,
-             description: "Hides instance name from PleromaFE banner."
+             description: "Hides instance name from PleromaFE banner"
            },
            %{
              key: :hideUserStats,
              label: "NSFW Censor Image",
              type: :string,
              description:
-               "URL of the image to use for hiding NSFW media attachments in the timeline.",
+               "URL of the image to use for hiding NSFW media attachments in the timeline",
              suggestions: ["/static/img/nsfw.74818f9.png"]
            },
            %{
              key: :postContentType,
              label: "Post Content Type",
              type: {:dropdown, :atom},
-             description: "Default post formatting option.",
+             description: "Default post formatting option",
              suggestions: ["text/plain", "text/html", "text/markdown", "text/bbcode"]
            },
            %{
              key: :sidebarRight,
              label: "Sidebar on Right",
              type: :boolean,
-             description: "Change alignment of sidebar and panels to the right."
+             description: "Change alignment of sidebar and panels to the right"
            },
            %{
              key: :showFeaturesPanel,
              label: "Show instance features panel",
              type: :boolean,
              description:
-               "Enables panel displaying functionality of the instance on the About page."
+               "Enables panel displaying functionality of the instance on the About page"
            },
            %{
              key: :showInstanceSpecificPanel,
          key: :mascots,
          type: {:keyword, :map},
          description:
-           "Keyword of mascots, each element must contain both an url and a mime_type key",
+           "Keyword of mascots, each element must contain both an URL and a mime_type key",
          suggestions: [
            pleroma_fox_tan: %{
              url: "/images/pleroma-fox-tan-smol.png",
        %{
          key: :default_user_avatar,
          type: :string,
-         description: "URL of the default user avatar.",
+         description: "URL of the default user avatar",
          suggestions: ["/images/avi.png"]
        }
      ]
      key: :manifest,
      type: :group,
      description:
-       "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE",
+       "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE.",
      children: [
        %{
          key: :icons,
    %{
      group: :pleroma,
      key: :mrf_simple,
-     label: "MRF simple",
 +    tab: :mrf,
+     label: "MRF Simple",
      type: :group,
      description: "Message Rewrite Facility",
      children: [
    %{
      group: :pleroma,
      key: :mrf_activity_expiration,
 +    tab: :mrf,
      label: "MRF Activity Expiration Policy",
      type: :group,
      description: "Adds expiration to all local Create Note activities",
    %{
      group: :pleroma,
      key: :mrf_subchain,
-     label: "MRF subchain",
 +    tab: :mrf,
+     label: "MRF Subchain",
      type: :group,
      description:
        "This policy processes messages through an alternate pipeline when a given message matches certain criteria." <>
    %{
      group: :pleroma,
      key: :mrf_rejectnonpublic,
 +    tab: :mrf,
      description:
        "MRF RejectNonPublic settings. RejectNonPublic drops posts with non-public visibility settings.",
-     label: "MRF reject non public",
+     label: "MRF Reject Non Public",
      type: :group,
      children: [
        %{
    %{
      group: :pleroma,
      key: :mrf_hellthread,
-     label: "MRF hellthread",
 +    tab: :mrf,
+     label: "MRF Hellthread",
      type: :group,
      description: "Block messages with too much mentions",
      children: [
    %{
      group: :pleroma,
      key: :mrf_keyword,
-     label: "MRF keyword",
 +    tab: :mrf,
+     label: "MRF Keyword",
      type: :group,
      description: "Reject or Word-Replace messages with a keyword or regex",
      children: [
    %{
      group: :pleroma,
      key: :mrf_mention,
-     label: "MRF mention",
 +    tab: :mrf,
+     label: "MRF Mention",
      type: :group,
      description: "Block messages which mention a user",
      children: [
        %{
          key: :actors,
          type: {:list, :string},
-         description: "A list of actors for which any post mentioning them will be dropped.",
+         description: "A list of actors for which any post mentioning them will be dropped",
          suggestions: ["actor1", "actor2"]
        }
      ]
    %{
      group: :pleroma,
      key: :mrf_vocabulary,
-     label: "MRF vocabulary",
 +    tab: :mrf,
+     label: "MRF Vocabulary",
      type: :group,
      description: "Filter messages which belong to certain activity vocabularies",
      children: [
          key: :accept,
          type: {:list, :string},
          description:
-           "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted",
+           "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted.",
          suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
        },
        %{
          key: :reject,
          type: {:list, :string},
          description:
-           "A list of ActivityStreams terms to reject. If empty, no messages are rejected",
+           "A list of ActivityStreams terms to reject. If empty, no messages are rejected.",
          suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
        }
      ]
        },
        %{
          key: :base_url,
+         label: "Base URL",
          type: :string,
          description:
            "The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.",
        },
        %{
          key: :proxy_opts,
+         label: "Proxy Options",
          type: :keyword,
          description: "Options for Pleroma.ReverseProxy",
          suggestions: [
            },
            %{
              key: :http,
+             label: "HTTP",
              type: :keyword,
              description: "HTTP options",
              children: [
        },
        %{
          key: :ip,
+         label: "IP",
          type: :tuple,
          description: "IP address to bind to",
          suggestions: [{0, 0, 0, 0}]
        %{
          key: :dstport,
          type: :integer,
-         description: "Port advertised in urls (optional, defaults to port)",
+         description: "Port advertised in URLs (optional, defaults to port)",
          suggestions: [9999]
        }
      ]
    %{
      group: :pleroma,
      key: :activitypub,
+     label: "ActivityPub",
      type: :group,
      description: "ActivityPub-related settings",
      children: [
          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)."
+           "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,
    %{
      group: :pleroma,
      key: :http_security,
+     label: "HTTP security",
      type: :group,
      description: "HTTP security settings",
      children: [
          key: :report_uri,
          label: "Report URI",
          type: :string,
-         description: "Adds the specified url to report-uri and report-to group in CSP header",
+         description: "Adds the specified URL to report-uri and report-to group in CSP header",
          suggestions: ["https://example.com/report-uri"]
        }
      ]
    %{
      group: :web_push_encryption,
      key: :vapid_details,
+     label: "Vapid Details",
      type: :group,
      description:
-       "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it",
+       "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it.",
      children: [
        %{
          key: :subject,
    },
    %{
      group: :pleroma,
+     label: "Pleroma Admin Token",
      type: :group,
      description:
        "Allows to set a token that can be used to authenticate with the admin api without using an actual user by giving it as the `admin_token` parameter",
        %{
          key: :admin_token,
          type: :string,
-         description: "Token",
+         description: "Admin token",
          suggestions: ["We recommend a secure random string or UUID"]
        }
      ]
      key: :rich_media,
      type: :group,
      description:
-       "If enabled the instance will parse metadata from attached links to generate link previews.",
+       "If enabled the instance will parse metadata from attached links to generate link previews",
      children: [
        %{
          key: :enabled,
          type: :boolean,
-         description: "Enables RichMedia parsing of URLs."
+         description: "Enables RichMedia parsing of URLs"
        },
        %{
          key: :ignore_hosts,
          type: {:list, :string},
-         description: "List of hosts which will be ignored by the metadata parser.",
+         description: "List of hosts which will be ignored by the metadata parser",
          suggestions: ["accounts.google.com", "xss.website"]
        },
        %{
          key: :ignore_tld,
          label: "Ignore TLD",
          type: {:list, :string},
-         description: "List TLDs (top-level domains) which will ignore for parse metadata.",
+         description: "List TLDs (top-level domains) which will ignore for parse metadata",
          suggestions: ["local", "localdomain", "lan"]
        },
        %{
    %{
      group: :auto_linker,
      key: :opts,
+     label: "Auto Linker",
      type: :group,
      description: "Configuration for the auto_linker library",
      children: [
        %{
          key: :class,
          type: [:string, false],
-         description: "Specify the class to be added to the generated link. Disable to clear",
+         description: "Specify the class to be added to the generated link. Disable to clear.",
          suggestions: ["auto-linker", false]
        },
        %{
          key: :rel,
          type: [:string, false],
-         description: "Override the rel attribute. Disable to clear",
+         description: "Override the rel attribute. Disable to clear.",
          suggestions: ["ugc", "noopener noreferrer", false]
        },
        %{
          key: :new_window,
          type: :boolean,
-         description: "Link urls will open in new window/tab"
+         description: "Link URLs will open in new window/tab"
        },
        %{
          key: :truncate,
          type: [:integer, false],
          description:
-           "Set to a number to truncate urls longer then the number. Truncated urls will end in `..`",
+           "Set to a number to truncate URLs longer then the number. Truncated URLs will end in `..`",
          suggestions: [15, false]
        },
        %{
        %{
          key: :extra,
          type: :boolean,
-         description: "Link urls with rarely used schemes (magnet, ipfs, irc, etc.)"
+         description: "Link URLs with rarely used schemes (magnet, ipfs, irc, etc.)"
        }
      ]
    },
    },
    %{
      group: :pleroma,
+     label: "Pleroma Authenticator",
      type: :group,
      description: "Authenticator",
      children: [
    %{
      group: :pleroma,
      key: :ldap,
+     label: "LDAP",
      type: :group,
      description:
        "Use LDAP for user authentication. When a user logs in to the Pleroma instance, the name and password" <>
        },
        %{
          key: :uid,
+         label: "UID",
          type: :string,
          description:
            "LDAP attribute name to authenticate the user, e.g. when \"cn\", the filter will be \"cn=username,base\"",
      children: [
        %{
          key: :enforce_oauth_admin_scope_usage,
+         label: "Enforce OAuth admin scope usage",
          type: :boolean,
          description:
            "OAuth admin scope requirement toggle. " <>
              "If enabled, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token " <>
-             "(client app must support admin scopes). If disabled and token doesn't have admin scope(s)," <>
+             "(client app must support admin scopes). If disabled and token doesn't have admin scope(s), " <>
              "`is_admin` user flag grants access to admin-specific actions."
        },
        %{
        },
        %{
          key: :oauth_consumer_template,
+         label: "OAuth consumer template",
          type: :string,
          description:
            "OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to" <>
        },
        %{
          key: :oauth_consumer_strategies,
+         label: "OAuth consumer strategies",
          type: {:list, :string},
          description:
            "The list of enabled OAuth consumer strategies. By default it's set by OAUTH_CONSUMER_STRATEGIES environment variable." <>
        %{
          key: :enabled,
          type: :boolean,
-         description: "enables new users admin digest email when `true`",
+         description: "Enables new users admin digest email when `true`",
          suggestions: [false]
        }
      ]
    %{
      group: :pleroma,
      key: :oauth2,
+     label: "OAuth2",
      type: :group,
      description: "Configure OAuth 2 provider capabilities",
      children: [
        %{
          key: :clean_expired_tokens,
          type: :boolean,
-         description: "Enable a background job to clean expired oauth tokens. Default: disabled."
+         description: "Enable a background job to clean expired OAuth tokens. Default: disabled."
        }
      ]
    },
        },
        %{
          key: :relation_id_action,
+         label: "Relation ID action",
          type: [:tuple, {:list, :tuple}],
          description: "For actions on relation with a specific user (follow, unfollow)",
          suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
        },
        %{
          key: :status_id_action,
+         label: "Status ID action",
          type: [:tuple, {:list, :tuple}],
          description:
            "For fav / unfav or reblog / unreblog actions on the same status by the same user",
    },
    %{
      group: :esshd,
+     label: "ESSHD",
      type: :group,
      description:
        "Before enabling this you must add :esshd to mix.exs as one of the extra_applications " <>
    },
    %{
      group: :mime,
+     label: "Mime Types",
      type: :group,
-     description: "Mime types",
+     description: "Mime Types settings",
      children: [
        %{
          key: :types,
    %{
      group: :pleroma,
      key: :http,
+     label: "HTTP",
      type: :group,
      description: "HTTP settings",
      children: [
    %{
      group: :pleroma,
      key: :markup,
+     label: "Markup Settings",
      type: :group,
      children: [
        %{
    },
    %{
      group: :pleroma,
 +    tab: :mrf,
      key: :mrf_normalize_markup,
-     label: "MRF normalize markup",
+     label: "MRF Normalize Markup",
      description: "MRF NormalizeMarkup settings. Scrub configured hypertext markup.",
      type: :group,
      children: [
    },
    %{
      group: :cors_plug,
+     label: "CORS plug config",
      type: :group,
      children: [
        %{
    %{
      group: :pleroma,
      key: :web_cache_ttl,
+     label: "Web cache TTL",
      type: :group,
      description:
        "The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration.",
    %{
      group: :pleroma,
      key: :static_fe,
+     label: "Static FE",
      type: :group,
      description:
-       "Render profiles and posts using server-generated HTML that is viewable without using JavaScript.",
+       "Render profiles and posts using server-generated HTML that is viewable without using JavaScript",
      children: [
        %{
          key: :enabled,
        %{
          key: :post_title,
          type: :map,
-         description: "Configure title rendering.",
+         description: "Configure title rendering",
          children: [
            %{
              key: :max_length,
              type: :integer,
-             description: "Maximum number of characters before truncating title.",
+             description: "Maximum number of characters before truncating title",
              suggestions: [100]
            },
            %{
              key: :omission,
              type: :string,
-             description: "Replacement which will be used after truncating string.",
+             description: "Replacement which will be used after truncating string",
              suggestions: ["..."]
            }
          ]
    %{
      group: :pleroma,
      key: :mrf_object_age,
-     label: "MRF object age",
+     label: "MRF Object Age",
 +    tab: :mrf,
      type: :group,
      description: "Rejects or delists posts based on their age when received.",
      children: [
        %{
          key: :workers,
          type: :integer,
-         description: "Number of workers to send notifications.",
+         description: "Number of workers to send notifications",
          suggestions: [3]
        },
        %{
          key: :overflow_workers,
          type: :integer,
-         description: "Maximum number of workers created if pool is empty.",
+         description: "Maximum number of workers created if pool is empty",
          suggestions: [2]
        }
      ]
    %{
      group: :pleroma,
      key: :mrf,
 +    tab: :mrf,
 +    label: "MRF",
      type: :group,
      description: "General MRF settings",
      children: [