Skip to content
Extraits de code Groupes Projets
Valider cf615abb rédigé par Eugen Rochko's avatar Eugen Rochko Validation de GitHub
Parcourir les fichiers

Add configuration to disable private status federation over PuSH (#4582)

parent b01a19fe
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -39,7 +39,7 @@ class ProcessMentionsService < BaseService ...@@ -39,7 +39,7 @@ class ProcessMentionsService < BaseService
if mentioned_account.local? if mentioned_account.local?
NotifyService.new.call(mentioned_account, mention) NotifyService.new.call(mentioned_account, mention)
elsif mentioned_account.ostatus? elsif mentioned_account.ostatus? && (Rails.configuration.x.use_ostatus_privacy || !status.stream_entry.hidden?)
NotificationWorker.perform_async(stream_entry_to_xml(status.stream_entry), status.account_id, mentioned_account.id) NotificationWorker.perform_async(stream_entry_to_xml(status.stream_entry), status.account_id, mentioned_account.id)
elsif mentioned_account.activitypub? elsif mentioned_account.activitypub?
ActivityPub::DeliveryWorker.perform_async(build_json(mention.status), mention.status.account_id, mentioned_account.inbox_url) ActivityPub::DeliveryWorker.perform_async(build_json(mention.status), mention.status.account_id, mentioned_account.inbox_url)
......
...@@ -14,7 +14,7 @@ class Pubsubhubbub::DistributionWorker ...@@ -14,7 +14,7 @@ class Pubsubhubbub::DistributionWorker
@subscriptions = active_subscriptions.to_a @subscriptions = active_subscriptions.to_a
distribute_public!(stream_entries.reject(&:hidden?)) distribute_public!(stream_entries.reject(&:hidden?))
distribute_hidden!(stream_entries.select(&:hidden?)) distribute_hidden!(stream_entries.select(&:hidden?)) if Rails.configuration.x.use_ostatus_privacy
end end
private private
......
...@@ -5,7 +5,7 @@ host = ENV.fetch('LOCAL_DOMAIN') { "localhost:#{port}" } ...@@ -5,7 +5,7 @@ host = ENV.fetch('LOCAL_DOMAIN') { "localhost:#{port}" }
web_host = ENV.fetch('WEB_DOMAIN') { host } web_host = ENV.fetch('WEB_DOMAIN') { host }
https = ENV['LOCAL_HTTPS'] == 'true' https = ENV['LOCAL_HTTPS'] == 'true'
alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { "" } alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { '' }
Rails.application.configure do Rails.application.configure do
config.x.local_domain = host config.x.local_domain = host
...@@ -17,6 +17,7 @@ Rails.application.configure do ...@@ -17,6 +17,7 @@ Rails.application.configure do
config.action_mailer.default_url_options = { host: web_host, protocol: https ? 'https://' : 'http://', trailing_slash: false } config.action_mailer.default_url_options = { host: web_host, protocol: https ? 'https://' : 'http://', trailing_slash: false }
config.x.streaming_api_base_url = 'ws://localhost:4000' config.x.streaming_api_base_url = 'ws://localhost:4000'
config.x.use_ostatus_privacy = true
if Rails.env.production? if Rails.env.production?
config.x.streaming_api_base_url = ENV.fetch('STREAMING_API_BASE_URL') { "ws#{https ? 's' : ''}://#{web_host}" } config.x.streaming_api_base_url = ENV.fetch('STREAMING_API_BASE_URL') { "ws#{https ? 's' : ''}://#{web_host}" }
......
...@@ -22,24 +22,62 @@ describe Pubsubhubbub::DistributionWorker do ...@@ -22,24 +22,62 @@ describe Pubsubhubbub::DistributionWorker do
end end
end end
describe 'with private status' do context 'when OStatus privacy is used' do
let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :private) } around do |example|
before_val = Rails.configuration.x.use_ostatus_privacy
Rails.configuration.x.use_ostatus_privacy = true
example.run
Rails.configuration.x.use_ostatus_privacy = before_val
end
it 'delivers payload only to subscriptions with followers' do describe 'with private status' do
allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk) let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :private) }
subject.perform(status.stream_entry.id)
expect(Pubsubhubbub::DeliveryWorker).to have_received(:push_bulk).with([subscription_with_follower]) it 'delivers payload only to subscriptions with followers' do
expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk).with([anonymous_subscription]) allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk)
subject.perform(status.stream_entry.id)
expect(Pubsubhubbub::DeliveryWorker).to have_received(:push_bulk).with([subscription_with_follower])
expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk).with([anonymous_subscription])
end
end
describe 'with direct status' do
let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :direct) }
it 'does not deliver payload' do
allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk)
subject.perform(status.stream_entry.id)
expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk)
end
end end
end end
describe 'with direct status' do context 'when OStatus privacy is not used' do
let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :direct) } around do |example|
before_val = Rails.configuration.x.use_ostatus_privacy
Rails.configuration.x.use_ostatus_privacy = false
example.run
Rails.configuration.x.use_ostatus_privacy = before_val
end
it 'does not deliver payload' do describe 'with private status' do
allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk) let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :private) }
subject.perform(status.stream_entry.id)
expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk) it 'does not deliver anything' do
allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk)
subject.perform(status.stream_entry.id)
expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk)
end
end
describe 'with direct status' do
let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :direct) }
it 'does not deliver payload' do
allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk)
subject.perform(status.stream_entry.id)
expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk)
end
end end
end end
end end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter