diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-10-26 23:08:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-26 23:08:34 +0200 |
commit | eef8d9a5f7d07bf785c6a7184e01374e211c6d7f (patch) | |
tree | 2f0fa19750c33e94ac060540be04eda694d5f495 | |
parent | 6e1a4f85ad96b25087d98fed1e70044c0f45a132 (diff) |
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
-rw-r--r-- | app/services/activitypub/fetch_remote_account_service.rb | 3 | ||||
-rw-r--r-- | db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb | 16 | ||||
-rw-r--r-- | db/schema.rb | 2 |
3 files changed, 19 insertions, 2 deletions
diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb index 1ec9ee5dd..8430d12d5 100644 --- a/app/services/activitypub/fetch_remote_account_service.rb +++ b/app/services/activitypub/fetch_remote_account_service.rb @@ -5,9 +5,10 @@ class ActivityPub::FetchRemoteAccountService < BaseService 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 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? fetch_resource(uri, id) else diff --git a/db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb b/db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb new file mode 100644 index 000000000..bd4f4c2a3 --- /dev/null +++ b/db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index 3c4f41648..731a84521 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # 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 enable_extension "plpgsql" |