From 92847646cff1effdf42eaa0819d836a663d428c4 Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Fri, 14 Feb 2020 17:37:31 -0600 Subject: add options to let admins customize how trusting or strict graylist federation should be --- app/models/form/admin_settings.rb | 8 ++++++++ app/services/favourite_service.rb | 1 + 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 | 18 +++++++++++------- config/locales/en.yml | 5 +++++ config/settings.yml | 4 ++++ 8 files changed, 32 insertions(+), 10 deletions(-) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 359271e5d..f5006c3e3 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -40,6 +40,10 @@ class Form::AdminSettings always_mark_instance_actors_known werewolf_status spam_check_enabled + mark_known_from_follows + mark_known_from_mentions + mark_known_from_boosts + mark_known_from_favourites ).freeze BOOLEAN_KEYS = %i( @@ -61,6 +65,10 @@ class Form::AdminSettings always_mark_instance_actors_known werewolf_status spam_check_enabled + mark_known_from_follows + mark_known_from_mentions + mark_known_from_boosts + mark_known_from_favourites ).freeze UPLOAD_KEYS = %i( diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb index 9ab628fb0..aeac9728b 100644 --- a/app/services/favourite_service.rb +++ b/app/services/favourite_service.rb @@ -15,6 +15,7 @@ class FavouriteService < BaseService return favourite unless favourite.nil? + account.mark_known! unless !Setting.auto_mark_known || !Setting.mark_known_from_favourites || account.known? favourite = Favourite.create!(account: account, status: status) curate_status(status) diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index 7b714bfb2..1d9f1c726 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -15,7 +15,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 !Setting.auto_mark_known || target_account.known? + target_account.mark_known! unless !Setting.auto_mark_known || !Setting.mark_known_from_follows || target_account.known? SyncRemoteAccountWorker.perform_async(target_account.id) unless target_account.local? || target_account.passive_relationships.exists? diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 274c2c297..3505dc536 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -102,7 +102,7 @@ class PostStatusService < BaseService end def mark_recipient_known - @in_reply_to.account.mark_known! unless !Setting.auto_mark_known || @in_reply_to.account.known? + @in_reply_to.account.mark_known! unless !Setting.auto_mark_known || !Setting.mark_known_from_mentions || @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 29dcbaf7c..4b7002fca 100644 --- a/app/services/reblog_service.rb +++ b/app/services/reblog_service.rb @@ -18,7 +18,7 @@ class ReblogService < BaseService new_reblog = reblog.nil? if new_reblog - reblogged_status.account.mark_known! unless !Setting.auto_mark_known || reblogged_status.account.known? + reblogged_status.account.mark_known! unless !Setting.auto_mark_known || !Setting.mark_known_from_boosts || reblogged_status.account.known? reblogged_status.touch if reblogged_status.account.id == account.id visibility = options[:visibility] || account.user&.setting_default_privacy diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index 2203c8275..032188db3 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -42,13 +42,17 @@ %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') - - = f.input :auto_mark_instance_actors_known, as: :boolean, wrapper: :with_label, label: t('admin.settings.auto_mark_instance_actors_known.title'), hint: t('admin.settings.auto_mark_instance_actors_known.desc_html') - - = f.input :always_mark_instance_actors_known, as: :boolean, wrapper: :with_label, label: t('admin.settings.always_mark_instance_actors_known.title'), hint: t('admin.settings.always_mark_instance_actors_known.desc_html') + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = 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') + = f.input :auto_mark_instance_actors_known, as: :boolean, wrapper: :with_label, label: t('admin.settings.auto_mark_instance_actors_known.title'), hint: t('admin.settings.auto_mark_instance_actors_known.desc_html') + = f.input :always_mark_instance_actors_known, as: :boolean, wrapper: :with_label, label: t('admin.settings.always_mark_instance_actors_known.title'), hint: t('admin.settings.always_mark_instance_actors_known.desc_html') + .fields-row__column.fields-row__column-6.fields-group + = f.input :mark_known_from_follows, as: :boolean, wrapper: :with_label, label: t('admin.settings.mark_known_from.follows') + = f.input :mark_known_from_mentions, as: :boolean, wrapper: :with_label, label: t('admin.settings.mark_known_from.mentions') + = f.input :mark_known_from_boosts, as: :boolean, wrapper: :with_label, label: t('admin.settings.mark_known_from.boosts') + = f.input :mark_known_from_favourites, as: :boolean, wrapper: :with_label, label: t('admin.settings.mark_known_from.favourites') %hr.spacer/ diff --git a/config/locales/en.yml b/config/locales/en.yml index 6d5c4f093..3c8bb4fb6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -526,6 +526,11 @@ en: always_mark_instance_actors_known: desc_html: Always allow server actor accounts to fetch resources from this server. May reduce privacy. title: Always trust server actors + mark_known_from: + follows: Trust accounts when someone joins their pack + mentions: Trust accounts when locally mentioned + boosts: Trust accounts shared by known creatures + favourites: Trust accounts when locally admired werewolf_status: desc_html: Enable werewolf status Easter egg (requires an announcer account) title: Werewolf status diff --git a/config/settings.yml b/config/settings.yml index 23f77c55e..e37ed821e 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -72,6 +72,10 @@ defaults: &defaults spam_check_enabled: true auto_mark_instance_actors_known: true always_mark_instance_actors_known: false + mark_known_from_follows: true + mark_known_from_mentions: true + mark_known_from_boosts: true + mark_known_from_favourites: false development: <<: *defaults -- cgit