summaryrefslogtreecommitdiff
path: root/helpers.rb
diff options
context:
space:
mode:
authorpdp8 <pdp8@pdp8.info>2023-06-30 15:42:14 +0200
committerpdp8 <pdp8@pdp8.info>2023-06-30 15:42:14 +0200
commit9d95a49ecd7e2f3e49b3462a281f2b86b406cf41 (patch)
treecd9695f2e22632e88eb710beeb041458e7ac3a71 /helpers.rb
parente328b59ffc2476262dbd076d2478aaade78e649c (diff)
inbox activities handled by dedicated functions
Diffstat (limited to 'helpers.rb')
-rw-r--r--helpers.rb32
1 files changed, 20 insertions, 12 deletions
diff --git a/helpers.rb b/helpers.rb
index 68aabe4..a51ea3d 100644
--- a/helpers.rb
+++ b/helpers.rb
@@ -1,8 +1,7 @@
helpers do
def curl ext, url
- #p "/run/current-system/sw/bin/curl -fsSL #{ext} #{url}"
- response = `/run/current-system/sw/bin/curl -fsSL #{ext} #{url}`
+ response = `/run/current-system/sw/bin/curl --fail-with-body -sSL #{ext} #{url}`
$?.success? ? response : nil
end
@@ -12,24 +11,33 @@ helpers do
end
# https://github.com/mastodon/mastodon/blob/main/app/lib/request.rb
- def send_signed object, url
+ def send_signed object#, url
keypair = OpenSSL::PKey::RSA.new(File.read('private.pem'))
date = Time.now.utc.httpdate
body = object.to_json
sha256 = OpenSSL::Digest::SHA256.new
digest = "SHA-256=" + sha256.base64digest(body)
- host = URI.parse(url).host
- inbox = fetch(url)["inbox"]
- return false unless inbox
- request_uri = URI(inbox).request_uri
+ jj object
+ #(object['to'] + object['cc'] + object['bto'] + object['bcc']).uniq.each do |url|
+ object['to'].uniq.each do |url|
+ unless url == 'https://www.w3.org/ns/activitystreams#Public'
+ host = URI.parse(url).host
+ inbox = fetch(url)["inbox"]
+ if inbox
+ request_uri = URI(inbox).request_uri
- signed_string = "(request-target): post #{request_uri}\nhost: #{host}\ndate: #{date}\ndigest: #{digest}\ncontent-type: application/activity+json"
- signature = Base64.strict_encode64(keypair.sign(OpenSSL::Digest.new('SHA256'), signed_string))
- signed_header = 'keyId="' + ACTOR + '#main-key",algorithm="rsa-sha256",headers="(request-target) host date digest content-type",signature="' + signature + '"'
+ signed_string = "(request-target): post #{request_uri}\nhost: #{host}\ndate: #{date}\ndigest: #{digest}\ncontent-type: application/activity+json"
+ signature = Base64.strict_encode64(keypair.sign(OpenSSL::Digest.new('SHA256'), signed_string))
+ signed_header = 'keyId="' + ACTOR + '#main-key",algorithm="rsa-sha256",headers="(request-target) host date digest content-type",signature="' + signature + '"'
- p curl("-X POST -H 'Content-Type: application/activity+json' -H 'Host: #{host}' -H 'Date: #{date}' -H 'Digest: #{digest}' -H 'Signature: #{signed_header}' -d '#{body}'", inbox)
- $?.success?
+ p curl("-X POST -H 'Content-Type: application/activity+json' -H 'Host: #{host}' -H 'Date: #{date}' -H 'Digest: #{digest}' -H 'Signature: #{signed_header}' -d '#{body}'", inbox)
+ #$?.success?
+ else
+ p "No inbox for #{url}"
+ end
+ end
+ end
end