Change: ホワイトリスト全体を有効にするオプション (#593)

This commit is contained in:
KMY(雪あすか) 2024-02-18 11:16:42 +09:00 committed by GitHub
parent dfc9f35d71
commit 1efeedf896
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 20 additions and 0 deletions

View file

@ -65,6 +65,7 @@ class Form::AdminSettings
enable_local_timeline enable_local_timeline
emoji_reaction_disallow_domains emoji_reaction_disallow_domains
permit_new_account_domains permit_new_account_domains
hold_remote_new_accounts
).freeze ).freeze
INTEGER_KEYS = %i( INTEGER_KEYS = %i(
@ -107,6 +108,7 @@ class Form::AdminSettings
stranger_mention_from_local_ng stranger_mention_from_local_ng
enable_local_timeline enable_local_timeline
delete_content_cache_without_reaction delete_content_cache_without_reaction
hold_remote_new_accounts
).freeze ).freeze
UPLOAD_KEYS = %i( UPLOAD_KEYS = %i(

View file

@ -140,6 +140,7 @@ class ActivityPub::ProcessAccountService < BaseService
end end
def blocking_new_account? def blocking_new_account?
return false unless Setting.hold_remote_new_accounts
return false if permit_new_account_domains.blank? return false if permit_new_account_domains.blank?
permit_new_account_domains.exclude?(@domain) permit_new_account_domains.exclude?(@domain)

View file

@ -36,6 +36,9 @@
= t 'admin.ng_words.remote_approval_hint' = t 'admin.ng_words.remote_approval_hint'
= link_to t('admin.ng_words.remote_approval_list'), admin_accounts_path(status: 'remote_pending', origin: 'remote') = link_to t('admin.ng_words.remote_approval_list'), admin_accounts_path(status: 'remote_pending', origin: 'remote')
.fields-group
= f.input :hold_remote_new_accounts, wrapper: :with_label, as: :boolean, label: t('admin.ng_words.hold_remote_new_accounts')
.fields-group .fields-group
= f.input :permit_new_account_domains, wrapper: :with_label, as: :text, kmyblue: true, input_html: { rows: 6 }, label: t('admin.ng_words.permit_new_account_domains') = f.input :permit_new_account_domains, wrapper: :with_label, as: :text, kmyblue: true, input_html: { rows: 6 }, label: t('admin.ng_words.permit_new_account_domains')

View file

@ -650,6 +650,7 @@ en:
ng_words: ng_words:
hide_local_users_for_anonymous: Hide timeline local user posts from anonymous hide_local_users_for_anonymous: Hide timeline local user posts from anonymous
history_hint: We recommend that you regularly check your NG words to make sure that you have not specified the NG words incorrectly. history_hint: We recommend that you regularly check your NG words to make sure that you have not specified the NG words incorrectly.
hold_remote_new_accounts: Hold new remote accounts
keywords: Reject keywords keywords: Reject keywords
keywords_for_stranger_mention: Reject keywords when mention/reply/reference/quote from strangers keywords_for_stranger_mention: Reject keywords when mention/reply/reference/quote from strangers
keywords_for_stranger_mention_hint: This words are checked posts from other servers only. keywords_for_stranger_mention_hint: This words are checked posts from other servers only.

View file

@ -643,6 +643,7 @@ ja:
ng_words: ng_words:
hide_local_users_for_anonymous: ログインしていない状態でローカルユーザーの投稿をタイムラインから取得できないようにする hide_local_users_for_anonymous: ログインしていない状態でローカルユーザーの投稿をタイムラインから取得できないようにする
history_hint: 設定されたNGワードによって実際に拒否された投稿などは、履歴より確認できます。NGワードの指定に誤りがないか定期的に確認することをおすすめします。 history_hint: 設定されたNGワードによって実際に拒否された投稿などは、履歴より確認できます。NGワードの指定に誤りがないか定期的に確認することをおすすめします。
hold_remote_new_accounts: リモートの新規アカウントを保留する
keywords: 投稿できないキーワード keywords: 投稿できないキーワード
keywords_for_stranger_mention: フォローしていないアカウントへのメンションや参照で利用できないキーワード keywords_for_stranger_mention: フォローしていないアカウントへのメンションや参照で利用できないキーワード
keywords_for_stranger_mention_hint: フォローしていないアカウントへのメンション、参照、引用にのみ適用されます keywords_for_stranger_mention_hint: フォローしていないアカウントへのメンション、参照、引用にのみ適用されます

View file

@ -12,6 +12,7 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
describe 'about blocking new remote account' do describe 'about blocking new remote account' do
subject { described_class.new.call('alice', 'example.com', payload) } subject { described_class.new.call('alice', 'example.com', payload) }
let(:hold_remote_new_accounts) { true }
let(:permit_new_account_domains) { nil } let(:permit_new_account_domains) { nil }
let(:payload) do let(:payload) do
{ {
@ -24,6 +25,7 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
end end
before do before do
Setting.hold_remote_new_accounts = hold_remote_new_accounts
Setting.permit_new_account_domains = permit_new_account_domains Setting.permit_new_account_domains = permit_new_account_domains
end end
@ -43,6 +45,16 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
expect(subject.remote_pending).to be true expect(subject.remote_pending).to be true
end end
context 'when the domain is not on list but hold_remote_new_accounts is disabled' do
let(:hold_remote_new_accounts) { false }
it 'creates normal account' do
expect(subject).to_not be_nil
expect(subject.suspended?).to be false
expect(subject.remote_pending).to be false
end
end
context 'with has existing account' do context 'with has existing account' do
before do before do
Fabricate(:account, uri: 'https://foo.test', domain: 'example.com', username: 'alice', note: 'old bio') Fabricate(:account, uri: 'https://foo.test', domain: 'example.com', username: 'alice', note: 'old bio')