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
This commit is contained in:
Goffi 2022-03-22 17:00:42 +01:00
commit 8a2154ccca

View file

@ -22,6 +22,7 @@ CONF_SECTION = f"component {IMPORT_NAME}"
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 @@ AP_MB_MAP = {
"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