Add Ruby script for delivering AS payload

This commit is contained in:
Anthony Wang 2022-07-11 15:12:46 -05:00
parent 964d4ff5a0
commit 41223c10be
Signed by: a
GPG key ID: BC96B00AEC5F2D76
3 changed files with 55 additions and 0 deletions

14
deliver.rb Normal file
View file

@ -0,0 +1,14 @@
# https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/
require 'http'
require 'openssl'
document = File.read('message')
date = Time.now.utc.httpdate
keypair = OpenSSL::PKey::RSA.new(File.read('private.pem'))
signed_string = "(request-target): post /inbox\nhost: git.exozy.me\ndate: #{date}"
signature = Base64.strict_encode64(keypair.sign(OpenSSL::Digest::SHA256.new, signed_string))
header = 'keyId="https://test.exozy.me/api/v1/activitypub/user/test#main-key",headers="(request-target) host date",signature="' + signature + '"'
HTTP.headers({ 'Host': 'mastodon.social', 'Date': date, 'Signature': header })
.post('https://git.exozy.me/api/v1/activitypub/user/Ta180m/inbox', body: document)

14
message Normal file
View file

@ -0,0 +1,14 @@
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Note",
"attributedTo": "https://test.exozy.me/api/v1/activitypub/user/test",
"context": "https://git.exozy.me/Ta180m/Hello-world/issues/2",
"inReplyTo": "https://git.exozy.me/Ta180m/Hello-world/issues/2",
"mediaType": "text/html",
"content": "<p>Hello from test.exozy.me!</p>",
"source": {
"mediaType": "text/markdown; variant=Commonmark",
"content": "Hello from test.exozy.me!"
},
"published": "2019-11-06T20:49:05.604488Z"
}

27
private.pem Normal file
View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAsPQH/jssyJryAX9I065SZE69e5OIBW3q2nFjMBDlC+WStN2P
uJqFznsEcEMq9Ge3pTQ3Rqj2SumyqngwYhN63SpFjeplgvL20ygNfd5c4sVwZicn
aLAsjwcWS/7hF6ENW9Vhwk5yBYel7efxPaNY98XhPLVDYeX8ZfB8PKExC6V4h8d1
iQqMnSw+/twy1/W69x3A4sZlsIisqmiY18haxyR4BblQuB0uwnlR6wpJFHkqX5Ci
Q4/knRnxj0pDvaLL0fscBWnO7dP+9+HrHu2NM7GfZbRMQhjuoC6VQbg7iowbPdA0
OEHR6rGpSVaBCHd44Y2Tbd06rAArVZinek9hAwIDAQABAoIBADY8ZaLHkl9eFmTd
FX5EBN7Xv3375wn6+avAay1VUE7IK6Ih8qYbPn3d+KtL+wN0MraA/Zw7t1mYrXlQ
Y0v8OoFFLpJj0H9FZt+rfA8jM4cSCvRUdeDBdrbT7kKWuXkblNOb4F3E22/Udsgn
eipxQZiX3wRTbna4HhdEkV+n7DdsGnOis11u9dXXP5w6oN6biazO81chvR9iHd9l
4eUFaPaZLH9PvOwx2kFmwuBRdkV8LNjWWldE21yvXAY4ZNG4zlm2eryuzY6XY54J
ACaggLYn/p7nqHcR51Xy7S3l8TXV2s6hzVHZh83cta3FPu10hVsL2aHYRMjDgZhz
YQtnW+ECgYEAxvOasW0zz1kpp+8uKkV5j3jwhpKo7uwCi+zIXj10iINFgNH0ZnkV
z0IbFtr+EsWy+ktc1vUsaSwACVUUVLbWB7jWIlSWM5cCa3HS5t//HEJkPN7uuEwi
o+/fIGHYWp2cWCfVkvJYFts4UU0AhZq3dwjMgqSUmPWH78eX6OB1PxECgYEA47GZ
oU04SGNIwYHeOCuOBXvzfjcFIZ6k4JP604ar4u9VpErsTjPhUyYSmdfNOJOw6bQK
xGQGvqZTdxytG4q1+lHY3zFV+whz+kCOAELzSuREsiffSrIeOmCnTZxaL9E0HZ30
qoezzNWH2lS4aYhkqBee1niWH5PgkVoEppsSBtMCgYAHimwulWkFTufZSaOCTqfQ
3FChiSWGCMP/8bWWfNXR5sfXnh2ZVLWS6XqFXz+KDpw+CGU4cIqCYfyOXf8rRtLN
8B+NpY8b3XlmASZxQcQ1mf6aoAiES750YD8gxxSgOqEWZkweCbl1BFIaIsUGS1rw
1BCMUxiew4+ncvU7CmbnQQKBgDnP3jIWaTP4AYEgeEvKw0ShNDHXxnXC0hozeHw8
tWfpXNVaMKWqhouWHyLwqCq1VTYBgLpcq1m84XRc05cqoQntviLtY+dZPhlMSsHG
Pf/F9atGdGuCzioEYHZUPJHnjFP4xyaFTiG0FcpZuHkTKHuFg87wzy01Xs+JC6VB
ulIBAoGBALwTuLDSeSwU3xXo2xpG5zOygx7Gqzo94j1lvN/EjNPaqD+GKQuFPTOz
CJ/sF0oCYwmT8q0mDIONX/MVvYy7H6SeK6zhogfEUPdIElLvoUoA/Z6tEtx/BHcF
9XP+oR1/6XEzxLoCK8j0RgDXtvJNzctT4iITnzFBmLShnOFv0HQX
-----END RSA PRIVATE KEY-----