From d35f069d8bf1eadfd377325349c95b759cc87a12 Mon Sep 17 00:00:00 2001 From: Dan Anglin Date: Fri, 12 Apr 2024 17:29:16 +0100 Subject: [PATCH] chore: upgrade GTS to v0.14.2 Upgrade Prod and Dev GTS instances to version 0.14.2. Update the Night Owl CSS theme so that it works with the HTML refactoring in v0.14.2. --- config | 2 +- .../gotosocial/css/night-owl.css | 34 ++-- templates/gotosocial/config.yaml.gotmpl | 153 +++++++++++++----- 3 files changed, 128 insertions(+), 61 deletions(-) rename {example => extras}/gotosocial/css/night-owl.css (91%) diff --git a/config b/config index 10cfca2..9ea1417 160000 --- a/config +++ b/config @@ -1 +1 @@ -Subproject commit 10cfca25891e84debaf41ae6c72aad31ccf71acb +Subproject commit 9ea1417a2f133f0c531325302f64ba91d262a38f diff --git a/example/gotosocial/css/night-owl.css b/extras/gotosocial/css/night-owl.css similarity index 91% rename from example/gotosocial/css/night-owl.css rename to extras/gotosocial/css/night-owl.css index 9af7d35..a12ce4d 100644 --- a/example/gotosocial/css/night-owl.css +++ b/extras/gotosocial/css/night-owl.css @@ -54,7 +54,7 @@ html, body { font-size: 16px; } -.profile .header { +.profile .profile-header { background: linear-gradient(#6d9fef, 30%, #000000); } @@ -62,6 +62,11 @@ html, body { background: linear-gradient(#545454, 5%, #0E0E0E); } +.thread .col-header { + background: linear-gradient(#545454, 5%, #0E0E0E); + border: none; +} + .profile .column-split { gap: 1rem; } @@ -76,27 +81,22 @@ html, body { border-width: 0.1rem; } -.profile .about-user .fields, -.profile .about-user .bio, -.profile .about-user .accountstats, -.profile .toots .toot, -.profile .toots .toot .info, -.toot.expanded, -.toot.expanded .info { - background: var(--night-owl-bg); -} - .profile .about-user .fields { word-wrap: break-word; } -.profile .toots .toot { - border: none; +.profile .about-user .fields, +.profile .about-user .bio, +.profile .about-user .accountstats, +.status, +.status .status-info, +.status.expanded, +.status.expanded .status-info { + background: var(--night-owl-bg); } -.toot:only-child { +.status { border: none; - box-shadow: 5px 5px 5px black; } .role.admin { @@ -114,10 +114,6 @@ a:hover, a:active { color: var(--night-owl-link-hover-fg); } -.page footer #version:before { - content: 'Powered by: '; -} - .button { background-color: var(--night-owl-button-dark); color: var(--night-owl-button-light); diff --git a/templates/gotosocial/config.yaml.gotmpl b/templates/gotosocial/config.yaml.gotmpl index de1ec0a..1bc89a8 100644 --- a/templates/gotosocial/config.yaml.gotmpl +++ b/templates/gotosocial/config.yaml.gotmpl @@ -1,18 +1,19 @@ -# GoToSocial -# Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. - -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# GoToSocial +# Copyright (C) GoToSocial Authors admin@gotosocial.org +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . ########################### ##### GENERAL CONFIG ###### @@ -42,7 +43,7 @@ log-client-ip: true # The format must be compatible with Go's time.Layout, as # documented on https://pkg.go.dev/time#pkg-constants. # -# Examples: [true, false] +# Examples: ["2006-01-02T15:04:05.000Z07:00", ""] # Default: "02/01/2006 15:04:05.000" log-timestamp-format: "2006-01-02 15:04:05" @@ -307,6 +308,43 @@ instance-languages: ["en-gb"] # Default: "blocklist" instance-federation-mode: "blocklist" +# Bool. Enable spam filtering heuristics for messages entering your instance +# via the federation API. Regardless of what you set here, basic checks +# for message relevancy will still be performed, but you can try enabling +# this setting if you are being spammed with unwanted messages from other +# instances, and want to more strictly filter out spam messages. +# +# THIS IS CURRENTLY AN EXPERIMENTAL SETTING, AND MAY FILTER OUT LEGITIMATE +# MESSAGES, OR FAIL TO FILTER OUT SPAMMY MESSAGES. It is recommended to +# only enable this setting when the fediverse is in the midst of a spam +# wave, and you need to batten down the hatches to keep your instance usable. +# +# The decision of whether a message counts as spam or not is made based on +# the following heuristics, in order, where receiver = the account on your +# instance that received a message in their inbox, and requester = the +# account on a remote instance that sent the message. +# +# First, basic relevancy checks +# +# 1. Receiver follows requester. Return OK. +# 2. Statusable doesn't mention receiver. Return NotRelevant. +# +# If instance-federation-spam-filter = false, then return OK now. +# Otherwise check: +# +# 3. Receiver is locked and is followed by requester. Return OK. +# 4. Five or more people are mentioned. Return Spam. +# 5. Receiver follow (requests) a mentioned account. Return OK. +# 6. Statusable has a media attachment. Return Spam. +# 7. Statusable contains non-mention, non-hashtag links. Return Spam. +# +# Messages identified as spam will be dropped from your instance, and not +# inserted into the database, or into home timelines or notifications. +# +# Options: [true, false] +# Default: false +instance-federation-spam-filter: false + # Bool. Allow unauthenticated users to make queries to /api/v1/instance/peers?filter=open in order # to see a list of instances that this instance 'peers' with. Even if set to 'false', then authenticated # users (members of the instance) will still be able to query the endpoint. @@ -360,6 +398,7 @@ instance-deliver-to-shared-inboxes: true # Default: false instance-inject-mastodon-version: false + ########################### ##### ACCOUNTS CONFIG ##### ########################### @@ -410,15 +449,23 @@ accounts-custom-css-length: 10000 # Config pertaining to media uploads (videos, image, image descriptions, emoji). -# Int. Maximum allowed image upload size in bytes. -# Examples: [2097152, 10485760] -# Default: 10485760 -- aka 10MB -media-image-max-size: 10485760 +# Size. Maximum allowed image upload size in bytes. +# +# Raising this limit may cause other servers to not fetch media +# attached to a post. +# +# Examples: [2097152, 10485760, 10MB, 10MiB] +# Default: 10MiB (10485760 bytes) +media-image-max-size: 10MiB -# Int. Maximum allowed video upload size in bytes. -# Examples: [2097152, 10485760] -# Default: 41943040 -- aka 40MB -media-video-max-size: 41943040 +# Size. Maximum allowed video upload size in bytes. +# +# Raising this limit may cause other servers to not fetch media +# attached to a post. +# +# Examples: [2097152, 10485760, 40MB, 40MiB] +# Default: 40MiB (41943040 bytes) +media-video-max-size: 40MiB # Int. Minimum amount of characters required as an image or video description. # Examples: [500, 1000, 1500] @@ -426,25 +473,29 @@ media-video-max-size: 41943040 media-description-min-chars: 0 # Int. Maximum amount of characters permitted in an image or video description. -# Examples: [500, 1000, 1500] -# Default: 500 -media-description-max-chars: 500 +# Examples: [1000, 1500, 3000] +# Default: 1500 +media-description-max-chars: 1500 -# Int. Max size in bytes of emojis uploaded to this instance via the admin API. +# Size. Max size in bytes of emojis uploaded to this instance via the admin API. +# # The default is the same as the Mastodon size limit for emojis (50kb), which allows # for good interoperability. Raising this limit may cause issues with federation # of your emojis to other instances, so beware. -# Examples: [51200, 102400] -# Default: 51200 -media-emoji-local-max-size: 51200 +# +# Examples: [51200, 102400, 50KB, 50KiB] +# Default: 50KiB (51200 bytes) +media-emoji-local-max-size: 50KiB -# Int. Max size in bytes of emojis to download from other instances. +# Size. Max size in bytes of emojis to download from other instances. +# # By default this is 100kb, or twice the size of the default for media-emoji-local-max-size. # This strikes a good balance between decent interoperability with instances that have # higher emoji size limits, and not taking up too much space in storage. -# Examples: [51200, 102400] -# Default: 102400 -media-emoji-remote-max-size: 102400 +# +# Examples: [51200, 102400, 100KB, 100KiB] +# Default: 100KiB (102400 bytes) +media-emoji-remote-max-size: 100KiB # The below media cleanup settings allow admins to customize when and # how often media cleanup + prune jobs run, while being set to a fairly @@ -549,17 +600,14 @@ storage-s3-bucket: "" # Config pertaining to the creation of statuses/posts, and permitted limits. # Int. Maximum amount of characters permitted for a new status. +# including the content warning (if set). +# # Note that going way higher than the default might break federation. +# # Examples: [140, 500, 5000] # Default: 5000 statuses-max-chars: 5000 -# Int. Maximum amount of characters allowed in the CW/subject header of a status. -# Note that going way higher than the default might break federation. -# Examples: [100, 200] -# Default: 100 -statuses-cw-max-chars: 100 - # Int. Maximum amount of options to permit when creating a new poll. # Note that going way higher than the default might break federation. # Examples: [4, 6, 10] @@ -692,6 +740,12 @@ oidc-scopes: # Default: false oidc-link-existing: false +# Array of string. If the returned ID token contains a 'groups' claim that matches one of the +# groups in oidc-allowed-groups, then this user will be granted access on the GtS instance. If the array is empty, +# then all groups will be granted permission. +# Default: [] +oidc-allowed-groups: [] + # Array of string. If the returned ID token contains a 'groups' claim that matches one of the # groups in oidc-admin-groups, then this user will be granted admin rights on the GtS instance # Default: [] @@ -1032,3 +1086,20 @@ advanced-sender-multiplier: 2 # Example: ["s3.example.org", "some-bucket-name.s3.example.org"] # Default: [] advanced-csp-extra-uris: [] + +# String. HTTP request header filtering mode to use for this instance. +# +# "block" -- only requests that are explicitly blocked by header filters +# will be denied (unless they are also explicitly allowed). +# +# "allow" -- only requests that are explicitly allowed by header filters +# will be accepted (unless they are also explicitly blocked). +# +# "" -- request header filtering disabled. +# +# For more details on block and allow modes, check the documentation at: +# https://docs.gotosocial.org/en/latest/admin/request_filtering_modes +# +# Options: ["block", "allow", ""] +# Default: "" +advanced-header-filter-mode: ""