From 4dfc40324b1f3b20550982621501e162d2ed3bed Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Thu, 8 Aug 2019 09:59:14 -0500 Subject: add new `reject unknown` policy option to prevent spam & harassment from large/undermoderated servers --- db/migrate/20190807171841_add_known_to_accounts.rb | 5 ++++ db/migrate/20190807172051_mark_known_accounts.rb | 30 ++++++++++++++++++++++ ...07221924_add_reject_unknown_to_domain_blocks.rb | 7 +++++ 3 files changed, 42 insertions(+) create mode 100644 db/migrate/20190807171841_add_known_to_accounts.rb create mode 100644 db/migrate/20190807172051_mark_known_accounts.rb create mode 100644 db/migrate/20190807221924_add_reject_unknown_to_domain_blocks.rb (limited to 'db/migrate') diff --git a/db/migrate/20190807171841_add_known_to_accounts.rb b/db/migrate/20190807171841_add_known_to_accounts.rb new file mode 100644 index 000000000..ff43f2a32 --- /dev/null +++ b/db/migrate/20190807171841_add_known_to_accounts.rb @@ -0,0 +1,5 @@ +class AddKnownToAccounts < ActiveRecord::Migration[5.2] + def change + add_column :accounts, :known, :boolean, null: false, default: false + end +end diff --git a/db/migrate/20190807172051_mark_known_accounts.rb b/db/migrate/20190807172051_mark_known_accounts.rb new file mode 100644 index 000000000..95f9fe99c --- /dev/null +++ b/db/migrate/20190807172051_mark_known_accounts.rb @@ -0,0 +1,30 @@ +class MarkKnownAccounts < ActiveRecord::Migration[5.2] + def up + Rails.logger.info("Marking known accounts:") + known_accounts = local_accounts | packmates | boosted_authors | faved_authors + Rails.logger.info(" Updating account flags...") + Account.where(id: known_accounts).in_batches.update_all(known: true) + end + + private + + def boosted_authors + Rails.logger.info(" Gathering boosted accounts...") + Status.where(id: Status.local.reblogs.reorder(nil).select(:reblog_of_id)).reorder(nil).pluck(:account_id) + end + + def faved_authors + Rails.logger.info(" Gathering favourited accounts...") + Status.where(id: Favourite.select(:status_id)).reorder(nil).pluck(:account_id) + end + + def local_accounts + Rails.logger.info(" Gathering local accounts...") + Account.local.pluck(:id) + end + + def packmates + Rails.logger.info(" Gathering packmate accounts...") + Account.local.flat_map { |account| account.following_ids | account.follower_ids } + end +end diff --git a/db/migrate/20190807221924_add_reject_unknown_to_domain_blocks.rb b/db/migrate/20190807221924_add_reject_unknown_to_domain_blocks.rb new file mode 100644 index 000000000..110d1fb79 --- /dev/null +++ b/db/migrate/20190807221924_add_reject_unknown_to_domain_blocks.rb @@ -0,0 +1,7 @@ +class AddRejectUnknownToDomainBlocks < ActiveRecord::Migration[5.2] + def change + safety_assured { + add_column :domain_blocks, :reject_unknown, :boolean, null: false, default: false + } + end +end -- cgit