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

This commit is contained in:
KMY 2024-04-22 08:58:37 +09:00
commit 44f4a93430
100 changed files with 770 additions and 441 deletions

View file

@ -52,7 +52,7 @@ require_relative '../lib/active_record/batches'
require_relative '../lib/simple_navigation/item_extensions'
require_relative '../lib/http_extensions'
Dotenv::Railtie.load
Dotenv::Rails.load
Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'

View file

@ -1,35 +0,0 @@
# frozen_string_literal: true
lock '3.17.2'
set :repo_url, ENV.fetch('REPO', 'https://github.com/kmycode/mastodon.git')
set :branch, ENV.fetch('BRANCH', 'main')
set :application, 'mastodon'
set :rbenv_type, :user
set :rbenv_ruby, File.read('.ruby-version').strip
set :migration_role, :app
append :linked_files, '.env.production', 'public/robots.txt'
append :linked_dirs, 'vendor/bundle', 'node_modules', 'public/system'
SYSTEMD_SERVICES = %i[sidekiq streaming web].freeze
SERVICE_ACTIONS = %i[reload restart status].freeze
namespace :systemd do
SYSTEMD_SERVICES.each do |service|
SERVICE_ACTIONS.each do |action|
desc "Perform a #{action} on #{service} service"
task :"#{service}:#{action}" do
on roles(:app) do
# runs e.g. "sudo restart mastodon-sidekiq.service"
sudo :systemctl, action, "#{fetch(:application)}-#{service}.service"
end
end
end
end
end
after 'deploy:publishing', 'systemd:web:reload'
after 'deploy:publishing', 'systemd:sidekiq:restart'
after 'deploy:publishing', 'systemd:streaming:restart'

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true
require "active_support/core_ext/integer/time"
require 'active_support/core_ext/integer/time'
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
@ -44,8 +44,8 @@ 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') },
},
}
# Info include generic and useful information about system operation, but avoids logging too much

View file

@ -88,7 +88,7 @@ if ENV['PAM_ENABLED'] == 'true'
usernames: Set['pam_user1', 'pam_user2'],
servicenames: Set['pam_test', 'pam_test_controlled'],
password: '123456',
env: { email: 'pam@example.com' }
env: { email: 'pam@example.com' },
}
end

View file

@ -0,0 +1,26 @@
# frozen_string_literal: true
%w(
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY
).each do |key|
ENV.fetch(key) do
raise <<~MESSAGE
The ActiveRecord encryption feature requires that these variables are set:
- ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY
- ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT
- ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY
Run `bin/rails db:encryption:init` to generate values and then assign the environment variables.
MESSAGE
end
end
Rails.application.configure do
config.active_record.encryption.deterministic_key = ENV.fetch('ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY')
config.active_record.encryption.key_derivation_salt = ENV.fetch('ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT')
config.active_record.encryption.primary_key = ENV.fetch('ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY')
end

View file

@ -7,4 +7,4 @@
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code
# by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'".
Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"]
Rails.backtrace_cleaner.remove_silencers! if ENV['BACKTRACE']

View file

@ -152,7 +152,7 @@ Doorkeeper.configure do
#
# You can use this option in order to forbid URI's with 'javascript' scheme
# for example.
forbid_redirect_uri { |uri| %w[data vbscript javascript].include?(uri.scheme.to_s.downcase) }
forbid_redirect_uri { |uri| %w(data vbscript javascript).include?(uri.scheme.to_s.downcase) }
# Specify what grant flows are enabled in array of Strings. The valid
# strings and the flows they enable are:

View file

@ -7,7 +7,7 @@ Rails.application.configure do
proxy = URI.parse(ENV['http_proxy'])
raise "Unsupported proxy type: #{proxy.scheme}" unless %w(http https).include? proxy.scheme
raise "No proxy host" unless proxy.host
raise 'No proxy host' unless proxy.host
host = proxy.host
host = host[1...-1] if host[0] == '[' # for IPv6 address
@ -24,7 +24,7 @@ Rails.application.configure do
proxy = URI.parse(ENV['http_hidden_proxy'])
raise "Unsupported proxy type: #{proxy.scheme}" unless %w(http https).include? proxy.scheme
raise "No proxy host" unless proxy.host
raise 'No proxy host' unless proxy.host
host = proxy.host
host = host[1...-1] if host[0] == '[' # for IPv6 address

View file

@ -73,7 +73,7 @@ if ENV['S3_ENABLED'] == 'true'
if ENV.has_key?('S3_ENDPOINT')
Paperclip::Attachment.default_options[:s3_options].merge!(
endpoint: ENV['S3_ENDPOINT'],
force_path_style: ENV['S3_OVERRIDE_PATH_STYLE'] != 'true',
force_path_style: ENV['S3_OVERRIDE_PATH_STYLE'] != 'true'
)
Paperclip::Attachment.default_options[:url] = ':s3_path_url'
@ -159,7 +159,7 @@ else
Paperclip::Attachment.default_options.merge!(
storage: :filesystem,
path: File.join(ENV.fetch('PAPERCLIP_ROOT_PATH', File.join(':rails_root', 'public', 'system')), ':prefix_path:class', ':attachment', ':id_partition', ':style', ':filename'),
url: ENV.fetch('PAPERCLIP_ROOT_URL', '/system') + '/:prefix_url:class/:attachment/:id_partition/:style/:filename',
url: ENV.fetch('PAPERCLIP_ROOT_URL', '/system') + '/:prefix_url:class/:attachment/:id_partition/:style/:filename'
)
end

View file

@ -14,7 +14,7 @@ class Rack::Attack
end
def remote_ip
@remote_ip ||= (@env["action_dispatch.remote_ip"] || ip).to_s
@remote_ip ||= (@env['action_dispatch.remote_ip'] || ip).to_s
end
def throttleable_remote_ip

View file

@ -6,7 +6,7 @@ WebAuthn.configure do |config|
config.origin = "#{Rails.configuration.x.use_https ? 'https' : 'http'}://#{Rails.configuration.x.web_domain}"
# Relying Party name for display purposes
config.rp_name = "Mastodon"
config.rp_name = 'Mastodon'
# Optionally configure a client timeout hint, in milliseconds.
# This hint specifies how long the browser should wait for an

View file

@ -621,6 +621,9 @@ cs:
actions_description_html: Rozhodněte, který krok učinit pro vyřešení tohoto hlášení. Pokud podniknete kárný krok proti nahlášenému účtu, bude mu zasláno e-mailové oznámení, s výjimkou případu, kdy je zvolena kategorie <strong>Spam</strong>.
actions_description_remote_html: Rozhodněte, co podniknout pro vyřešení tohoto hlášení. Toto ovlivní pouze to, jak <strong>váš</strong> server komunikuje s tímto vzdáleným účtem, a zpracuje jeho obsah.
add_to_report: Přidat do hlášení další
already_suspended_badges:
local: Již pozastaveno na tomto serveru
remote: Již pozastaveno na jejich serveru
are_you_sure: Jste si jisti?
assign_to_self: Přidělit ke mně
assigned: Přiřazený moderátor
@ -1704,13 +1707,26 @@ cs:
import: Import
import_and_export: Import a export
migrate: Přesun účtu
notifications: E-mailová upozornění
preferences: Předvolby
profile: Profil
relationships: Sledovaní a sledující
severed_relationships: Přerušené vztahy
statuses_cleanup: Automatické mazání příspěvků
strikes: Moderační prohřešky
two_factor_authentication: Dvoufázové ověřování
webauthn_authentication: Bezpečnostní klíče
severed_relationships:
download: Stáhnout (%{count})
event_type:
account_suspension: Pozastavení účtu (%{target_name})
domain_block: Pozastavení serveru (%{target_name})
user_domain_block: Zablokovali jste %{target_name}
lost_followers: Ztracení sledující
lost_follows: Ztracená sledování
preamble: Když zablokujete doménu nebo když se moderátoři rozhodnou pozastavit vzdálený server, můžete přijít o sledování a sledující. Když k tomu dojde, budete si moci stáhnout seznamy přerušených vztahů, abyste je mohli zkontrolovat a případně importovat na jiný server.
purged: Informace o tomto serveru byly správci serveru vymazány.
type: Událost
statuses:
attached:
audio:
@ -1816,6 +1832,7 @@ cs:
contrast: Mastodon (vysoký kontrast)
default: Mastodon (tmavý)
mastodon-light: Mastodon (světlý)
system: Automaticky (dle motivu systému)
time:
formats:
default: "%d. %b %Y, %H:%M"
@ -1903,7 +1920,46 @@ cs:
silence: Účet omezen
suspend: Účet pozastaven
welcome:
apps_android_action: Získejte na Google Play
apps_ios_action: Stáhnout z App Store
apps_step: Stáhněte si naše oficiální aplikace.
apps_title: Aplikace Mastodon
checklist_subtitle: 'Začněme na této nové sociální hranici:'
checklist_title: Uvítací kontrolní seznam
edit_profile_action: Přizpůsobit
edit_profile_step: Zlepšete své interakce tím, že si vytvoříte komplexní profil.
edit_profile_title: Přizpůsobte si svůj profil
explanation: Zde je pár tipů do začátku
feature_action: Zjistit více
feature_audience: Mastodon vám nabízí jedinečnou možnost správy publika bez prostředníků. Mastodon nasazený na vaší vlastní infrastruktuře vám umožňuje sledovat a být sledován z jakéhokoli jiného Mastodon serveru online a není pod kontrolou nikoho jiného než vás.
feature_audience_title: Vytvořte si svědomě své publikum
feature_control: Sami nejlépe víte, co chcete vidět na svém domovském kanálu. Žádné algoritmy ani reklamy, které by plýtvaly vaším časem. Sledujte kohokoli z libovolného Mastodon serveru z jediného účtu, dostávejte jejich příspěvky v chronologickém pořadí a udělejte si svůj kout internetu trochu více podle sebe.
feature_control_title: Mějte pod kontrolou vlastní časovou osu
feature_creativity: Mastodon podporuje zvukové, video a obrázkové příspěvky, popisy přístupnosti, ankety, upozornění na obsah, animované avatary, vlastní emotikony, ovládání ořezu miniatur a další funkce, které vám pomohou vyjádřit se online. Ať už publikujete své umění, hudbu nebo podcast, Mastodon je tu pro vás.
feature_creativity_title: Bezkonkurenční kreativita
feature_moderation: Mastodon dává rozhodování zpět do vašich rukou. Každý server si vytváří svá vlastní pravidla a předpisy, které jsou prosazovány lokálně, nikoli shora jako v případě firemních sociálních médií, díky čemuž lze nejpružněji reagovat na potřeby různých skupin lidí. Připojte se k serveru s pravidly, se kterými souhlasíte, nebo si založte vlastní.
feature_moderation_title: Moderování způsobem, jakým by to mělo být
follow_action: Sledovat
follow_step: Mastodon je o sledování zajimavých lidí.
follow_title: Přizpůsobte si svůj domovský kanál
follows_subtitle: Sledujte známé účty
follows_title: Koho sledovat
follows_view_more: Zobrazit více lidí ke sledování
hashtags_recent_count:
few: "%{people} osoby v posledních 2 dnech"
many: "%{people} osob v posledních 2 dnech"
one: "%{people} osoba v posledních 2 dnech"
other: "%{people} osob v posledních 2 dnech"
hashtags_subtitle: Prozkoumejte, co je populární od posledních 2 dnů
hashtags_title: Populární hashtagy
hashtags_view_more: Zobrazit více populárních hashtagů
post_action: Sepsat
post_step: Řekněte světu ahoj pomocí textu, fotografií, videí nebo anket.
post_title: Vytvořte svůj první příspěvek
share_action: Sdílet
share_step: Dejte přátelům vědět, jak vás mohou na Mastodonu najít.
share_title: Sdílejte svůj Mastodon profil
sign_in_action: Přihlásit se
subject: Vítejte na Mastodonu
title: Vítejte na palubě, %{name}!
users:

View file

@ -1241,7 +1241,7 @@ eu:
add_new: Gehitu berria
errors:
limit: Gehienezko traola kopurua erakutsi duzu jada
hint_html: "<strong>Zer dira nabarmendutako traolak?</strong> Zure profilean toki nabarmendu batean agertzen dira eta jendeari traola hau daukaten bidalketa publikoak arakatzea ahalbidetzen diote. Sormen lana edo epe luzerako proiektuak jarraitzeko primerakoak dira."
hint_html: "<strong>Zer dira nabarmendutako traolak?</strong> Zure profileko toki nabarmendu batean agertzen dira eta jendeari traola haue dituzten bidalketa publikoak arakatzea ahalbidetzen diote. Sormen-lanak edo epe luzerako proiektuak jarraitzeko primerakoak dira."
filters:
contexts:
account: Profilak
@ -1910,7 +1910,7 @@ eu:
signed_in_as: 'Saioa honela hasita:'
verification:
extra_instructions_html: <strong>Aholkua:</strong> webguneko esteka ikusezina izan daiteke. Muina <code>rel="me"</code> da, erabiltzaileak sortutako edukia duten webguneetan beste inor zure burutzat aurkeztea eragozten duena. <code>a</code> beharrean <code>esteka</code> motako etiketa bat ere erabil dezakezu orriaren goiburuan, baina HTMLak erabilgarri egon behar du JavaScript exekutatu gabe.
here_is_how: Hemen duzu nola
here_is_how: Argibidea
hint_html: "<strong>Mastodonen nortasun-egiaztapena guztiontzat da.</strong> Web estandar irekietan oinarritua, orain eta betiko doan. Behar duzun guztia jendeak ezagutzen duen webgune pertsonal bat da. Mastodon profiletik webgune honetara estekatzen duzunean, webguneak Mastodon profilera estekatzen duela egiaztatuko dugu eta adierazle bat erakutsiko du."
instructions_html: Kopiatu eta itsatsi ondoko kodea zure webguneko HTMLan. Ondoren, gehitu zure webgunearen helbidea zure profileko eremu gehigarrietako batean, "Editatu profila" fitxatik eta gorde aldaketak.
verification: Egiaztaketa

View file

@ -1765,9 +1765,9 @@ fi:
tags:
does_not_match_previous_name: ei vastaa edellistä nimeä
themes:
contrast: Mastodon (Korkea kontrasti)
default: Mastodon (Tumma)
mastodon-light: Mastodon (Vaalea)
contrast: Mastodon (suuri kontrasti)
default: Mastodon (tumma)
mastodon-light: Mastodon (vaalea)
system: Automaattinen (käytä järjestelmän teemaa)
time:
formats:

View file

@ -979,7 +979,7 @@ ko:
new_report:
body: "%{reporter} 님이 %{target}를 신고했습니다"
body_remote: "%{domain}의 누군가가 %{target}을 신고했습니다"
subject: "%{instance} 에 새 신고 등록됨 (#%{id})"
subject: "%{instance}의 새로운 신고(#%{id})"
new_software_updates:
body: 새 마스토돈 버전이 릴리스되었습니다. 업데이트 할 수 있습니다!
subject: "%{instance}에 대해 새 마스토돈 버전이 사용 가능합니다!"
@ -1118,7 +1118,7 @@ ko:
date:
formats:
default: "%Y-%m-%d"
with_month_name: "%Y년 %f월 %e일"
with_month_name: "%Y년 %B %d일"
datetime:
distance_in_words:
about_x_hours: "%{count}시간"
@ -1742,7 +1742,7 @@ ko:
time:
formats:
default: "%Y-%m-%d %H:%M"
month: "%Y년 %f월"
month: "%Y년 %b"
time: "%H:%M"
with_time_zone: "%Y-%m-%d %H:%M %Z"
translation:
@ -1896,4 +1896,4 @@ ko:
not_enabled: 아직 WebAuthn을 활성화 하지 않았습니다.
not_supported: 이 브라우저는 보안 키를 지원하지 않습니다
otp_required: 보안 키를 사용하기 위해서는 2단계 인증을 먼저 활성화 해 주세요
registered_on: "%{date} 에 등록됨"
registered_on: "%{date}에 등록됨"

View file

@ -116,6 +116,7 @@ cs:
sign_up_requires_approval: Nové registrace budou vyžadovat schválení
severity: Zvolte, jak naložit s požadavky z dané IP
rule:
hint: Nepovinné. Uveďte další podrobnosti o pravidle
text: Popište pravidlo nebo požadavek uživatelům tohoto serveru. Snažte se ho držet krátký a jednoduchý
sessions:
otp: 'Zadejte kód pro dvoufázové ověření vygenerovaný vaší mobilní aplikací, nebo použijte jeden z vašich záložních kódů:'
@ -299,6 +300,7 @@ cs:
patch: Upozornit na aktualizace chyb
trending_tag: Nový trend vyžaduje posouzení
rule:
hint: Další informace
text: Pravidlo
settings:
indexable: Zahrnout stránku profilu do vyhledávačů

View file

@ -609,6 +609,9 @@ sr-Latn:
actions_description_html: Odlučite koju radnju da sprovedete radi rešavanja ove prijave. Ukoliko sprovedete kaznenu radnju protiv prijavljenog naloga, vlasnik naloga će biti obavešten putem i-mejla, osim ukoliko oznaka <strong>„Nepoželjne poruke”</strong> nije odabrana.
actions_description_remote_html: Odlučite koju radnju da preduzmete radi rešavanja ove prijave. Ovo će uticati samo na to kako <strong>Vaš</strong> server komunicira sa ovim udaljenim nalogom i obrađuje njegov sadržaj.
add_to_report: Dodaj još u prijavu
already_suspended_badges:
local: Već suspendovan na ovom serveru
remote: Već suspendovan na njihovom serveru
are_you_sure: Da li ste sigurni?
assign_to_self: Dodeli meni
assigned: Dodeljeni moderator
@ -1678,13 +1681,26 @@ sr-Latn:
import: Uvoz
import_and_export: Uvoz i izvoz
migrate: Prebacivanje naloga
notifications: Obaveštenja e-poštom
preferences: Podešavanja
profile: Javni profil
relationships: Praćenja i pratioci
severed_relationships: Prekinute veze
statuses_cleanup: Automatsko brisanje objava
strikes: Moderacijski prestupi
two_factor_authentication: Dvofaktorska identifikacija
webauthn_authentication: Sigurnosni ključevi
severed_relationships:
download: Preuzmi (%{count})
event_type:
account_suspension: Suspenzija naloga (%{target_name})
domain_block: Suspenzija servera (%{target_name})
user_domain_block: Blokirali ste %{target_name}
lost_followers: Izgubljeni pratioci
lost_follows: Izgubljena praćenja
preamble: Možete izgubiti praćenja i pratioce kada blokirate domen ili kada vaši moderatori odluče da suspenduju udaljeni server. Kada se to desi, moći ćete da preuzmete liste prekinutih veza, koje treba pregledati i eventualno uvesti na drugi server.
purged: Administratori vašeg servera su obrisali informacije o ovom serveru.
type: Događaj
statuses:
attached:
audio:
@ -1784,6 +1800,7 @@ sr-Latn:
contrast: Veliki kontrast
default: Mastodon (tamna)
mastodon-light: Mastodon (svetla)
system: Automatski (korišćenje sistemske teme)
time:
formats:
default: "%d %b %Y, %H:%M"
@ -1896,6 +1913,10 @@ sr-Latn:
follows_subtitle: Pratite dobro poznate naloge
follows_title: Koga pratiti
follows_view_more: Pogledajte još ljudi za praćenje
hashtags_recent_count:
few: "%{people} osobe u poslednja 2 dana"
one: "%{people} osoba u poslednja 2 dana"
other: "%{people} osoba u poslednja 2 dana"
hashtags_subtitle: Istražite šta je u trendu u poslednja 2 dana
hashtags_title: Heš oznake u trendu
hashtags_view_more: Pogledajte još heš oznaka u trendu

View file

@ -609,6 +609,9 @@ sr:
actions_description_html: Одлучите коју радњу да спроведете ради решавања ове пријаве. Уколико спроведете казнену радњу против пријављеног налога, власник налога ће бити обавештен путем и-мејла, осим уколико ознака <strong>„Непожељне поруке”</strong> није одабрана.
actions_description_remote_html: Одлучите коју радњу да предузмете ради решавања ове пријаве. Ово ће утицати само на то како <strong>Ваш</strong> сервер комуницира са овим удаљеним налогом и обрађује његов садржај.
add_to_report: Додај још у пријаву
already_suspended_badges:
local: Већ суспендован на овом серверу
remote: Већ суспендован на њиховом серверу
are_you_sure: Да ли сте сигурни?
assign_to_self: Додели мени
assigned: Додељени модератор
@ -1678,13 +1681,26 @@ sr:
import: Увоз
import_and_export: Увоз и извоз
migrate: Пребацивање налога
notifications: Обавештења е-поштом
preferences: Подешавања
profile: Јавни профил
relationships: Праћења и пратиоци
severed_relationships: Прекинуте везе
statuses_cleanup: Аутоматско брисање објава
strikes: Модерацијски преступи
two_factor_authentication: Двофакторска идентификација
webauthn_authentication: Сигурносни кључеви
severed_relationships:
download: Преузми (%{count})
event_type:
account_suspension: Суспензија налога (%{target_name})
domain_block: Суспензија сервера (%{target_name})
user_domain_block: Блокирали сте %{target_name}
lost_followers: Изгубљени пратиоци
lost_follows: Изгубљена праћења
preamble: Можете изгубити праћења и пратиоце када блокирате домен или када ваши модератори одлуче да суспендују удаљени сервер. Када се то деси, моћи ћете да преузмете листе прекинутих веза, које треба прегледати и евентуално увести на други сервер.
purged: Администратори вашег сервера су обрисали информације о овом серверу.
type: Догађај
statuses:
attached:
audio:
@ -1784,6 +1800,7 @@ sr:
contrast: Велики контраст
default: Mastodon (тамна)
mastodon-light: Mastodon (светла)
system: Аутоматски (коришћење системске теме)
time:
formats:
default: "%d %b %Y, %H:%M"

View file

@ -148,7 +148,7 @@ Rails.application.routes.draw do
resource :inbox, only: [:create], module: :activitypub
resources :contexts, only: [:show], module: :activitypub
get '/:encoded_at(*path)', to: redirect("/@%{path}"), constraints: { encoded_at: /%40/ }
get '/:encoded_at(*path)', to: redirect('/@%{path}'), constraints: { encoded_at: /%40/ }
constraints(username: %r{[^@/.]+}) do
with_options to: 'accounts#show' do