From a367ff86982987aa0573d9b375000a909223c3ad Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Sat, 12 Oct 2019 22:05:06 -0500 Subject: graylist (reject unknown) federation & known account auto-learning finally have toggle switches in site settings --- app/lib/activitypub/activity/create.rb | 2 +- app/models/form/admin_settings.rb | 4 ++++ app/services/activitypub/process_account_service.rb | 2 +- app/services/favourite_service.rb | 2 +- app/services/follow_service.rb | 2 +- app/services/post_status_service.rb | 2 +- app/services/reblog_service.rb | 2 +- app/views/admin/settings/edit.html.haml | 6 ++++++ 8 files changed, 16 insertions(+), 6 deletions(-) (limited to 'app') diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index e7fe19152..4367344ab 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -9,7 +9,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity if @options[:announced_by].nil? return reject_payload! if !@options[:requested] && rejecting_unknown? else - @account.mark_known! if known?(@options[:announced_by]) + @account.mark_known! if Setting.auto_mark_known && known?(@options[:announced_by]) end end diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 0e9bfb265..a2ea2489b 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -34,6 +34,8 @@ class Form::AdminSettings mascot show_reblogs_in_public_timelines show_replies_in_public_timelines + auto_reject_unknown + auto_mark_known ).freeze BOOLEAN_KEYS = %i( @@ -49,6 +51,8 @@ class Form::AdminSettings enable_keybase show_reblogs_in_public_timelines show_replies_in_public_timelines + auto_reject_unknown + auto_mark_known ).freeze UPLOAD_KEYS = %i( diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index c1c643ff0..a1d508405 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -23,7 +23,7 @@ class ActivityPub::ProcessAccountService < BaseService is_new_account = @account.nil? if is_new_account - set_reject_unknown_policy + set_reject_unknown_policy if Setting.auto_reject_unknown create_account end update_account diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb index cff4c37e0..788b3a620 100644 --- a/app/services/favourite_service.rb +++ b/app/services/favourite_service.rb @@ -16,7 +16,7 @@ class FavouriteService < BaseService favourite = Favourite.create!(account: account, status: status) - status.account.mark_known! unless status.account.known? + status.account.mark_known! unless !Setting.auto_mark_known || status.account.known? curate_status(status) create_notification(favourite) unless skip_notify diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index 776c4cb9b..1653253f5 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -14,7 +14,7 @@ class FollowService < BaseService raise ActiveRecord::RecordNotFound if target_account.nil? || target_account.id == source_account.id || target_account.suspended? raise Mastodon::NotPermittedError if target_account.blocking?(source_account) || source_account.blocking?(target_account) || target_account.moved? - target_account.mark_known! unless target_account.known? + target_account.mark_known! unless !Setting.auto_mark_known || target_account.known? if source_account.following?(target_account) # We're already following this account, but we'll call follow! again to diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index e7c81309f..353c1ef82 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -95,7 +95,7 @@ class PostStatusService < BaseService end def mark_recipient_known - @in_reply_to.account.mark_known! unless @in_reply_to.account.known? + @in_reply_to.account.mark_known! unless !Setting.auto_mark_known || @in_reply_to.account.known? end def set_footer_from_i_am diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb index 1e7d4f3ca..4e63caef8 100644 --- a/app/services/reblog_service.rb +++ b/app/services/reblog_service.rb @@ -17,7 +17,7 @@ class ReblogService < BaseService new_reblog = reblog.nil? if new_reblog - reblogged_status.account.mark_known! unless reblogged_status.account.known? + reblogged_status.account.mark_known! unless !Setting.auto_mark_known || reblogged_status.account.known? visibility = options[:visibility] || account.user&.setting_default_privacy visibility = reblogged_status.visibility if reblogged_status.hidden? diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index a8c9f6a58..80f76c3c5 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -42,6 +42,12 @@ %hr.spacer/ + = f.input :auto_reject_unknown, as: :boolean, wrapper: :with_label, label: t('admin.settings.auto_reject_unknown.title'), hint: t('admin.settings.auto_reject_unknown.desc_html') + + = f.input :auto_mark_known, as: :boolean, wrapper: :with_label, label: t('admin.settings.auto_mark_known.title'), hint: t('admin.settings.auto_mark_known.desc_html') + + %hr.spacer/ + .fields-group = f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html') -- cgit