diff options
author | Thibaut Girka <thib@sitedethib.com> | 2019-07-30 12:22:33 +0200 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2019-07-30 12:22:33 +0200 |
commit | 24968d20a07d483cd36b4747bd1db8bd512002c2 (patch) | |
tree | d306d08bc32edba292cf9aa85c3be8ba009c1b1c /lib | |
parent | f48c7689d230b915ed740a4774736bd5998cbc66 (diff) | |
parent | b31b232edfcc7f04acf828bf6829ab716b290692 (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - app/controllers/directories_controller.rb - package.json - yarn.lock
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mastodon/domains_cli.rb | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/lib/mastodon/domains_cli.rb b/lib/mastodon/domains_cli.rb index b081581fe..f30062363 100644 --- a/lib/mastodon/domains_cli.rb +++ b/lib/mastodon/domains_cli.rb @@ -12,17 +12,33 @@ module Mastodon end option :dry_run, type: :boolean - desc 'purge DOMAIN', 'Remove accounts from a DOMAIN without a trace' + option :whitelist_mode, type: :boolean + desc 'purge [DOMAIN]', 'Remove accounts from a DOMAIN without a trace' long_desc <<-LONG_DESC Remove all accounts from a given DOMAIN without leaving behind any records. Unlike a suspension, if the DOMAIN still exists in the wild, it means the accounts could return if they are resolved again. + + When the --whitelist-mode option is given, instead of purging accounts + from a single domain, all accounts from domains that are not whitelisted + are removed from the database. LONG_DESC - def purge(domain) + def purge(domain = nil) removed = 0 dry_run = options[:dry_run] ? ' (DRY RUN)' : '' - Account.where(domain: domain).find_each do |account| + scope = begin + if options[:whitelist_mode] + Account.remote.where.not(domain: DomainAllow.pluck(:domain)) + elsif domain.present? + Account.remote.where(domain: domain) + else + say('No domain given', :red) + exit(1) + end + end + + scope.find_each do |account| SuspendAccountService.new.call(account, destroy: true) unless options[:dry_run] removed += 1 say('.', :green, false) |