Add locality check to ActivityPub::FetchRemoteAccountService (#9109)
* Add locality check to ActivityPub::FetchRemoteAccountService Fix #8643 Because there are a few places where it is called, it is difficult to confirm if they all previously checked it for locality. It's better to make sure within the service. * Remove faux-remote duplicates of local accounts
This commit is contained in:
parent
6e1a4f85ad
commit
eef8d9a5f7
3 changed files with 19 additions and 2 deletions
|
@ -5,9 +5,10 @@ class ActivityPub::FetchRemoteAccountService < BaseService
|
||||||
|
|
||||||
SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
|
SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
|
||||||
|
|
||||||
# Should be called when uri has already been checked for locality
|
|
||||||
# Does a WebFinger roundtrip on each call
|
# Does a WebFinger roundtrip on each call
|
||||||
def call(uri, id: true, prefetched_body: nil, break_on_redirect: false)
|
def call(uri, id: true, prefetched_body: nil, break_on_redirect: false)
|
||||||
|
return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri)
|
||||||
|
|
||||||
@json = if prefetched_body.nil?
|
@json = if prefetched_body.nil?
|
||||||
fetch_resource(uri, id)
|
fetch_resource(uri, id)
|
||||||
else
|
else
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
class RemoveFauxRemoteAccountDuplicates < ActiveRecord::Migration[5.2]
|
||||||
|
disable_ddl_transaction!
|
||||||
|
|
||||||
|
def up
|
||||||
|
local_domain = Rails.configuration.x.local_domain
|
||||||
|
|
||||||
|
# Just a safety measure to ensure that under no circumstance
|
||||||
|
# we will query `domain IS NULL` because that would return
|
||||||
|
# actually local accounts, the originals
|
||||||
|
return if local_domain.nil?
|
||||||
|
|
||||||
|
Account.where(domain: local_domain).in_batches.destroy_all
|
||||||
|
end
|
||||||
|
|
||||||
|
def down; end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2018_10_24_224956) do
|
ActiveRecord::Schema.define(version: 2018_10_26_034033) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
Loading…
Reference in a new issue