Merge branch 'master' into glitch-soc/merge-upstream

This commit is contained in:
Thibaut Girka
2019-08-08 08:44:33 +02:00
27 changed files with 266 additions and 59 deletions

View File

@@ -3,13 +3,22 @@
class BlockDomainService < BaseService
attr_reader :domain_block
def call(domain_block)
def call(domain_block, update = false)
@domain_block = domain_block
process_domain_block!
process_retroactive_updates! if update
end
private
def process_retroactive_updates!
# If the domain block severity has been changed, undo the appropriate limitations
scope = Account.by_domain_and_subdomains(domain_block.domain)
scope.where(silenced_at: domain_block.created_at).in_batches.update_all(silenced_at: nil) unless domain_block.silence?
scope.where(suspended_at: domain_block.created_at).in_batches.update_all(suspended_at: nil) unless domain_block.suspend?
end
def process_domain_block!
clear_media! if domain_block.reject_media?

View File

@@ -60,17 +60,23 @@ class ResolveAccountService < BaseService
@account = uri
@username = @account.username
@domain = @account.domain
@uri = [@username, @domain].compact.join('@')
else
@uri = uri
@username, @domain = uri.split('@')
end
@domain = nil if TagManager.instance.local_domain?(@domain)
@domain = begin
if TagManager.instance.local_domain?(@domain)
nil
else
TagManager.instance.normalize_domain(@domain)
end
end
@uri = [@username, @domain].compact.join('@')
end
def process_webfinger!(uri, redirected = false)
@webfinger = Goldfinger.finger("acct:#{@uri}")
@webfinger = Goldfinger.finger("acct:#{uri}")
confirmed_username, confirmed_domain = @webfinger.subject.gsub(/\Aacct:/, '').split('@')
if confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero?

View File

@@ -10,24 +10,9 @@ class UnblockDomainService < BaseService
end
def process_retroactive_updates
blocked_accounts.in_batches.update_all(update_options) unless domain_block.noop?
end
def blocked_accounts
scope = Account.by_domain_and_subdomains(domain_block.domain)
if domain_block.silence?
scope.where(silenced_at: @domain_block.created_at)
else
scope.where(suspended_at: @domain_block.created_at)
end
end
def update_options
{ domain_block_impact => nil }
end
def domain_block_impact
domain_block.silence? ? :silenced_at : :suspended_at
scope.where(silenced_at: domain_block.created_at).in_batches.update_all(silenced_at: nil) unless domain_block.noop?
scope.where(suspended_at: domain_block.created_at).in_batches.update_all(suspended_at: nil) if domain_block.suspend?
end
end