Send new MagicEnvelope and EncryptedMagicEnvelope
Related to diaspora/diaspora_federation#30
This commit is contained in:
parent
95def40c55
commit
f6dc809e29
3 changed files with 16 additions and 20 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue