Mercurial > libervia-backend
diff sat/plugins/plugin_comp_ap_gateway/constants.py @ 3745:a8c7e5cef0cb
comp AP gateway: signature checking, caching and threads management:
- HTTP signature is checked for incoming messages
- AP actor can now be followed using pubsub subscription. When following is accepted, the
node is cached
- replies to posts are put in cached pubsub comment nodes, with a `comments_max_depth`
option to limit the number of comment nodes for a root message (documentation will come
to explain this).
ticket 364
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 22 Mar 2022 17:00:42 +0100 |
parents | 86eea17cafa7 |
children | 125c7043b277 |
line wrap: on
line diff
--- a/sat/plugins/plugin_comp_ap_gateway/constants.py Tue Mar 22 17:00:42 2022 +0100 +++ b/sat/plugins/plugin_comp_ap_gateway/constants.py Tue Mar 22 17:00:42 2022 +0100 @@ -22,6 +22,7 @@ CONTENT_TYPE_AP = "application/activity+json; charset=utf-8" TYPE_ACTOR = "actor" TYPE_INBOX = "inbox" +TYPE_SHARED_INBOX = "shared_inbox" TYPE_OUTBOX = "outbox" TYPE_ITEM = "item" MEDIA_TYPE_AP = "application/activity+json" @@ -30,7 +31,39 @@ "content": "content_xhtml", } -AP_REQUEST_TYPES = {"actor", "outbox"} +AP_REQUEST_TYPES = { + "GET": {"actor", "outbox"}, + "POST": {"inbox"}, +} +# headers to check for signature +SIGN_HEADERS = { + # headers needed for all HTTP methods + None: [ + # tuples are equivalent headers/pseudo headers, one of them must be present + ("date", "(created)"), + ("digest", "(request-target)"), + ], + b"GET": ["host"], + b"POST": ["digest"] +} PAGE_SIZE = 10 +HS2019 = "hs2019" +# delay after which a signed request is not accepted anymore +SIGN_EXP = 12*60*60 # 12 hours (same value as for Mastodon) LRU_MAX_SIZE = 200 +ACTIVITY_TYPES = ( + "Accept", "Add", "Announce", "Arrive", "Block", "Create", "Delete", "Dislike", "Flag", + "Follow", "Ignore", "Invite", "Join", "Leave", "Like", "Listen", "Move", "Offer", + "Question", "Reject", "Read", "Remove", "TentativeReject", "TentativeAccept", + "Travel", "Undo", "Update", "View" +) +ACTIVITY_TYPES_LOWER = [a.lower() for a in ACTIVITY_TYPES] +ACTIVITY_OBJECT_MANDATORY = ( + "Create", "Update", "Delete", "Follow", "Add", "Remove", "Like", "Block", "Undo" +) +ACTIVITY_TARGET_MANDATORY = ("Add", "Remove") +# activities which can be used with Shared Inbox (i.e. with not account specified) +ACTIVIY_NO_ACCOUNT_ALLOWED = ("create",) +# maximum number of parents to retrieve when comments_max_depth option is set +COMMENTS_MAX_PARENTS = 100