Merge remote-tracking branch 'parent/main' into upstream-20231109

This commit is contained in:
KMY 2023-11-09 12:33:50 +09:00
commit fc1b280d59
65 changed files with 18502 additions and 13905 deletions

View file

@ -1,6 +1,6 @@
default: &default
adapter: postgresql
pool: <%= ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 %>
pool: <%= ENV["DB_POOL"] || (if Sidekiq.server? then Sidekiq[:concurrency] else ENV['MAX_THREADS'] end) || 5 %>
timeout: 5000
connect_timeout: 15
encoding: unicode

View file

@ -44,7 +44,7 @@ Rails.application.configure do
config.force_ssl = true
config.ssl_options = {
redirect: {
exclude: ->request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') }
exclude: ->(request) { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') }
}
}

View file

@ -67,7 +67,7 @@ end
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
# Rails.application.config.content_security_policy_report_only = true
Rails.application.config.content_security_policy_nonce_generator = ->request { SecureRandom.base64(16) }
Rails.application.config.content_security_policy_nonce_generator = ->(request) { SecureRandom.base64(16) }
Rails.application.config.content_security_policy_nonce_directives = %w(style-src)

View file

@ -556,6 +556,7 @@ be:
total_reported: Скаргі на іх
total_storage: Медыя дадаткі
totals_time_period_hint_html: Паказаныя агульныя значэнні ніжэй уключаюць даныя за ўвесь час.
unknown_instance: На дадзены момант няма запісаў аб гэтым дамене на гэтым серверы.
invites:
deactivate_all: Дэактываваць усё
filter:
@ -1076,6 +1077,14 @@ be:
hint_html: Засталася яшчэ адна рэч! Каб не дапусціць спаму, нам трэба пацвердзіць, што вы чалавек. Разгадайце CAPTCHA ніжэй і націсніце «Працягнуць».
title: Праверка бяспекі
confirmations:
awaiting_review: Ваш электронны адрас пацверджаны! Адміністрацыя %{domain} зараз разглядае вашу рэгістрацыю. Вы атрымаеце паведамленне па электроннай пошце, калі ваш уліковы запіс будзе ўхвалены!
awaiting_review_title: Ваша рэгістрацыя разглядаецца
clicking_this_link: націснуць на гэту спасылку
login_link: увайсці
proceed_to_login_html: Цяпер вы можаце перайсці да %{login_link}.
redirect_to_app_html: Вы павінны былі быць перанакіраваны ў праграму <strong>%{app_name}</strong>. Калі гэтага не адбылося, паспрабуйце %{clicking_this_link} або вярніцеся да праграмы ўручную.
registration_complete: Ваша рэгістрацыя на %{domain} завершана!
welcome_title: Вітаем, %{name}!
wrong_email_hint: Калі гэты адрас электроннай пошты памылковы, вы можаце змяніць яго ў наладах уліковага запісу.
delete_account: Выдаліць уліковы запіс
delete_account_html: Калі вы жадаеце выдаліць ваш уліковы запіс, можаце <a href="%{path}">працягнуць тут</a>. Ад вас будзе запатрабавана пацвярджэнне.
@ -1137,6 +1146,7 @@ be:
functional: Ваш уліковы запіс поўнасцю працуе.
pending: Ваша заяўка разглядаецца нашым супрацоўнікам. Гэта можа заняць некаторы час. Вы атрымаеце электронны ліст, калі заяўка будзе ўхвалена.
redirecting_to: Ваш уліковы запіс неактыўны, бо ў цяперашні час ён перанакіроўваецца на %{acct}.
self_destruct: Паколькі %{domain} зачыняецца, вы атрымаеце толькі абмежаваны доступ да свайго уліковага запісу.
view_strikes: Праглядзець мінулыя папярэджанні для вашага ўліковага запісу
too_fast: Форма адпраўлена занадта хутка, паспрабуйце яшчэ раз.
use_security_key: Выкарыстаеце ключ бяспекі
@ -1622,6 +1632,9 @@ be:
over_daily_limit: Вы перавысілі ліміт ў %{limit} запланаваных на сёння допісаў
over_total_limit: Вы перавысілі ліміт ў %{limit} запланаваных допісаў
too_soon: Запланаваная дата мусіць быць у будучыні
self_destruct:
lead_html: На жаль, дамен <strong>%{domain}</strong> зачыняецца назаўсёды. Калі ў вас быў уліковы запіс, вы не зможаце працягваць выкарыстоўваць яго, але вы ўсё яшчэ можаце запытаць рэзервовае капіраванне вашых даных.
title: Гэты сервер зачыняецца
sessions:
activity: Апошняя актыўнасць
browser: Браўзер

View file

@ -1601,7 +1601,7 @@ ko:
windows_mobile: 윈도우 모바일
windows_phone: 윈도우 폰
revoke: 삭제
revoke_success: 세션을 성공적으로 취소하였습니다
revoke_success: 세션을 성공적으로 삭제하였습니다
title: 세션
view_authentication_history: 내 계정에 대한 인증 이력 보기
settings:

View file

@ -98,7 +98,7 @@ sk:
disabled: Blokovaný
pending: Čakajúci
silenced: Obmedzený
suspended: Vylúčený/á
suspended: Pozastavený/á
title: Moderácia
moderation_notes: Moderátorské poznámky
most_recent_activity: Posledná aktivita
@ -149,8 +149,8 @@ sk:
statuses: Príspevkov
strikes: Predchádzajúce údery
subscribe: Odoberaj
suspend: Vylúč
suspended: Vylúčený/á
suspend: Pozastav
suspended: Pozastavený/á
suspension_irreversible: Údaje tohto účtu boli nenávratne vymazané. Účet môžete zrušiť, aby sa dal používať, ale neobnovia sa žiadne údaje, ktoré predtým mal.
suspension_reversible_hint_html: Účet bol pozastavený a údaje budú úplne odstránené dňa %{date}. Dovtedy je možné účet obnoviť bez akýchkoľvek nepriaznivých účinkov. Ak chcete okamžite odstrániť všetky údaje účtu, môžete tak urobiť nižšie.
title: Účty
@ -162,6 +162,7 @@ sk:
undo_suspension: Zruš blokovanie
unsilenced_msg: Úspešne zrušené obmedzenie účtu %{username}
unsubscribe: Prestaň odoberať
unsuspended_msg: "%{username} ov/in účet úspešne spojazdnený"
username: Prezývka
view_domain: Ukáž súhrn pre doménu
warn: Varuj
@ -209,7 +210,7 @@ sk:
resolve_report: Vyrieš nahlásený problém
sensitive_account: Vynúť všetky médiá na účte ako chúlostivé
silence_account: Utíš účet
suspend_account: Vylúč účet
suspend_account: Pozastav účet
unassigned_report: Odober priradenie nahlásenia
unblock_email_account: Odblokuj emailovú adresu
unsilence_account: Zvráť obmedzenie účtu
@ -255,6 +256,7 @@ sk:
silence_account_html: "%{name} obmedzil/a účet %{target}"
suspend_account_html: "%{name} zablokoval/a účet používateľa %{target}"
unassigned_report_html: "%{name} odobral/a report od %{target}"
unsuspend_account_html: "%{name} spojazdnil/a účet %{target}"
update_user_role_html: "%{name} zmenil/a rolu pre %{target}"
deleted_account: zmazaný účet
empty: Žiadne záznamy nenájdené.
@ -341,6 +343,7 @@ sk:
confirm_suspension:
cancel: Zruš
confirm: Vylúč
preamble_html: Chystáš sa vylúčiť <strong>%{domain}</strong> a jej poddomény.
title: Potvrď blokovanie domény %{domain}
created_msg: Doména je v štádiu blokovania
destroyed_msg: Blokovanie domény bolo zrušené
@ -355,7 +358,7 @@ sk:
severity:
noop: Nič
silence: Obmedz
suspend: Vylúč
suspend: Pozastav
title: Nové blokovanie domény
not_permitted: Nemáš povolenie na vykonanie tohto kroku
obfuscate: Zatemniť názov domény
@ -416,7 +419,7 @@ sk:
reject_media: Zamietni médiá
reject_reports: Zamietni hlásenia
silence: Obmedzená
suspend: Vylúč
suspend: Pozastav
policy: Zásady
reason: Verejné odôvodnenie
title: Zásady o obsahu
@ -537,7 +540,7 @@ sk:
statuses: Nahlásený obsah
summary:
action_preambles:
suspend_html: 'Chystáš sa <strong>vylúčiť</strong> účet <strong>@%{acct}</strong>. To urobí:'
suspend_html: 'Chystáš sa <strong>pozastaviť</strong> účet <strong>@%{acct}</strong>. To urobí:'
actions:
delete_html: Vymaž pohoršujúce príspevky
mark_as_sensitive_html: Označ médiá pohoršujúcich príspevkov za chúlostivé

View file

@ -3,6 +3,18 @@
require 'sidekiq_unique_jobs/web'
require 'sidekiq-scheduler/web'
class RedirectWithVary < ActionDispatch::Routing::PathRedirect
def build_response(req)
super.tap do |response|
response.headers['Vary'] = 'Origin, Accept'
end
end
end
def redirect_with_vary(path)
RedirectWithVary.new(301, path)
end
Rails.application.routes.draw do
# Paths of routes on the web app that to not require to be indexed or
# have alternative format representations requiring separate controllers
@ -97,10 +109,13 @@ Rails.application.routes.draw do
confirmations: 'auth/confirmations',
}
get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/following', to: redirect('/@%{username}/following'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/followers', to: redirect('/@%{username}/followers'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/statuses/:id', to: redirect('/@%{username}/%{id}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
# rubocop:disable Style/FormatStringToken - those do not go through the usual formatting functions and are not safe to correct
get '/users/:username', to: redirect_with_vary('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/following', to: redirect_with_vary('/@%{username}/following'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/followers', to: redirect_with_vary('/@%{username}/followers'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/statuses/:id', to: redirect_with_vary('/@%{username}/%{id}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
# rubocop:enable Style/FormatStringToken
get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }
resources :accounts, path: 'users', only: [:show], param: :username do

View file

@ -4,7 +4,7 @@ const { createHash } = require('crypto');
const { readFileSync } = require('fs');
const { resolve } = require('path');
const CompressionPlugin = require('@renchap/compression-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const { merge } = require('webpack-merge');