diff options
Diffstat (limited to 'app/helpers/moderation_helper.rb')
-rw-r--r-- | app/helpers/moderation_helper.rb | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/app/helpers/moderation_helper.rb b/app/helpers/moderation_helper.rb index 9d12dc858..7db3ba210 100644 --- a/app/helpers/moderation_helper.rb +++ b/app/helpers/moderation_helper.rb @@ -1,22 +1,24 @@ module ModerationHelper include LogHelper - POLICIES = %w(silence unsilence suspend unsuspend force_unlisted mark_known mark_unknown reject_unknown allow_public force_sensitive allow_nonsensitive reset) + POLICIES = %w(silence unsilence suspend unsuspend force_unlisted mark_known mark_unknown reject_unknown manual_only auto_trust allow_public force_sensitive allow_nonsensitive reset) EXCLUDED_DOMAINS = %w(tailma.ws monsterpit.net monsterpit.cloud monsterpit.gallery monsterpit.blog) def janitor_account account_id = ENV.fetch('JANITOR_USER', '').to_i - return if account_id == 0 + return if account_id.zero? + Account.find_by(id: account_id) end def account_policy(username, domain, policy, reason = nil) return if policy.blank? + policy = policy.to_s return false unless policy.in?(POLICIES) username, domain = username.split('@')[1..2] if username.start_with?('@') - domain.downcase! unless domain.nil? + domain&.downcase! acct = Account.find_by(username: username, domain: domain) return false if acct.nil? @@ -34,6 +36,10 @@ module ModerationHelper acct.mark_unknown! when 'mark_known' acct.mark_known! + when 'manual_only' + acct.manual_only! + when 'auto_trust' + acct.auto_trust! when 'silence' acct.silence! when 'unsilence' @@ -61,7 +67,7 @@ module ModerationHelper acct.save - return true unless reason && !reason.strip.blank? + return true unless reason && reason.strip.present? AccountModerationNote.create( account_id: @account.id, @@ -79,11 +85,13 @@ module ModerationHelper return false end return false if [404, 410].include?(code) + true end - def domain_policy(domain, policy, reason = nil, force_sensitive: false, reject_unknown: false, reject_media: false, reject_reports: false) + def domain_policy(domain, policy, reason = nil, force_sensitive: false, reject_unknown: false, reject_media: false, manual_only: false, reject_reports: false) return if policy.blank? + policy = policy.to_s return false unless policy.in?(POLICIES) return false unless domain.match?(/\A[\w\-]+\.[\w\-]+(?:\.[\w\-]+)*\Z/) @@ -92,20 +100,21 @@ module ModerationHelper return false if domain.in?(EXCLUDED_DOMAINS) - policy = 'noop' if policy == 'force_sensitive' || policy == 'reject_unknown' + policy = 'noop' if %w(force_sensitive reject_unknown).include?(policy) + force_sensitive = true if policy == 'force_sensitive' reject_unknown = true if policy == 'reject_unknown' + manual_only = true if policy == 'manual_only' if policy.in? %w(silence suspend force_unlisted) - return false unless domain_exists?(domain) - domain_block = DomainBlock.find_or_create_by(domain: domain) domain_block.severity = policy domain_block.force_sensitive = force_sensitive domain_block.reject_unknown = reject_unknown + domain_block.manual_only = manual_only domain_block.reject_media = reject_media domain_block.reject_reports = reject_reports - domain_block.reason = reason.strip if reason && !reason.strip.blank? + domain_block.reason = reason.strip if reason && reason.strip.present? domain_block.save Admin::ActionLog.create(account: @account, action: :create, target: domain_block) |