Send new MagicEnvelope and EncryptedMagicEnvelope

Related to diaspora/diaspora_federation#30
This commit is contained in:
Benjamin Neff 2017-04-30 04:43:55 +02:00
parent 95def40c55
commit f6dc809e29
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
3 changed files with 16 additions and 20 deletions

View file

@ -31,6 +31,16 @@ module Diaspora
attr_reader :sender, :object, :opts
def entity
@entity ||= Entities.build(object)
end
def magic_envelope
@magic_envelope ||= DiasporaFederation::Salmon::MagicEnvelope.new(
entity, sender.diaspora_handle
).envelop(sender.encryption_key)
end
def deliver_to_services
deliver_to_user_services if opts[:service_types]
end

View file

@ -7,22 +7,17 @@ module Diaspora
def deliver_to_remote(people)
return if people.empty?
entity = Entities.build(object)
Workers::SendPrivate.perform_async(sender.id, entity.to_s, targets(people, salmon_slap(entity)))
Workers::SendPrivate.perform_async(sender.id, entity.to_s, targets(people))
end
def targets(people, salmon_slap)
def targets(people)
active, inactive = people.partition {|person| person.pod.active? }
logger.info "ignoring inactive pods: #{inactive.map(&:diaspora_handle).join(', ')}" if inactive.any?
active.map {|person| [person.receive_url, salmon_slap.generate_xml(person.public_key)] }.to_h
active.map {|person| [person.receive_url, encrypted_magic_envelope(person)] }.to_h
end
def salmon_slap(entity)
DiasporaFederation::Salmon::EncryptedSlap.prepare(
sender.diaspora_handle,
sender.encryption_key,
entity
)
def encrypted_magic_envelope(person)
DiasporaFederation::Salmon::EncryptedMagicEnvelope.encrypt(magic_envelope, person.public_key)
end
end
end

View file

@ -14,8 +14,7 @@ module Diaspora
return if targets.empty?
entity = Entities.build(object)
Workers::SendPublic.perform_async(sender.id, entity.to_s, targets, salmon_xml(entity))
Workers::SendPublic.perform_async(sender.id, entity.to_s, targets, magic_envelope.to_xml)
end
def target_urls(people)
@ -29,14 +28,6 @@ module Diaspora
[AppConfig.relay.outbound.url]
end
def salmon_xml(entity)
DiasporaFederation::Salmon::Slap.generate_xml(
sender.diaspora_handle,
sender.encryption_key,
entity
)
end
def deliver_to_hub
logger.debug "deliver to pubsubhubbub sender: #{sender.diaspora_handle}"
Workers::PublishToHub.perform_async(sender.atom_url)