Commit graph

475 commits

Author SHA1 Message Date
default
49362f5404 Convert image links in notes to attachments. 2023-05-21 20:32:23 +02:00
default
f136426a25 Minor refactor to msg_note(). 2023-05-21 20:12:59 +02:00
default
d055b63a0d More image tweaks. 2023-05-20 19:33:57 +02:00
default
a597eb7352 Improved default avatars. 2023-05-20 19:25:52 +02:00
default
93d1649ba6 New config option 'drop_dm_from_unknown'. 2023-05-17 11:24:47 +02:00
default
b5eaabe77e When updating the user info, also spam the following list. 2023-05-17 10:49:46 +02:00
default
970ad7a540 Got rid of xs_encdec.h. 2023-05-17 10:08:57 +02:00
default
24f802be7e Use a different approach towards incomplete mentions.
This time, incomplete mentions are completed using a) the host of
the first mention, if there are any, or b) the current host.
2023-05-12 19:01:53 +02:00
default
d35c949a13 Resolve (partially) the issue with mentions without server.
Mastodon (mainly from the API) usually include mentions without server,
which is just stupid. This patch tries to resolve these broken mentions in
process_tags() by looking for a user name starting with it in the already
pre-populated tag list. As of now, this only works if the message is an
inReplyTo and the broken mention is the one of the original
(attributedTo) poster.
2023-05-12 11:56:17 +02:00
default
2e27a805fc Minor refactor to msg_note(): the tag list is created here, not in process_tags(). 2023-05-12 10:33:59 +02:00
default
3d4bf235f0 Minor function prototype tweak. 2023-05-12 10:15:44 +02:00
poesty
e65760a349 Merge pull request 'master' (#1) from grunfink/snac2:master into master
Reviewed-on: https://codeberg.org/poesty/snac2/pulls/1
2023-05-07 07:27:24 +00:00
poesty
7d3a909598 Fixed webfinger and curl issues 2023-05-07 13:42:47 +08:00
default
d3a36218a6 Implemented 'Ping' and 'Pong' activities.
According to https://humungus.tedunangst.com/r/honk/v/tip/f/docs/ping.txt
2023-05-05 09:54:41 +02:00
default
980a8d524f Fixed more warnings. 2023-05-04 09:34:33 +02:00
default
185aac2387 Added -Wextra to C flags. 2023-05-04 09:28:36 +02:00
default
753eadfd17 Added some const here and there. 2023-05-04 09:25:09 +02:00
default
511f5062b7 Deleted real unused parameters. 2023-05-04 09:19:26 +02:00
default
21fa6c7904 Strip the query string in msg_follow(). 2023-04-23 14:33:53 +02:00
default
291f251ced Added mastoapi follow. 2023-04-23 08:44:26 +02:00
default
5b93e9069e Added mastoapi code for account search. 2023-04-23 05:33:54 +02:00
default
81100cb825 Posts can now be sent (still no images). 2023-04-15 19:05:26 +02:00
default
bd21d144de New function timeline_touch(). 2023-04-14 19:17:16 +02:00
default
a050be9107 Don't show the full tree in notifications. 2023-04-14 13:05:36 +02:00
default
bcde97c2d5 New function notify_add(). 2023-04-13 16:59:17 +02:00
default
2d5d63554c Started working on a notification list. 2023-04-13 15:32:13 +02:00
default
79224ca2b5 New function mastodon_status(). 2023-04-11 09:50:12 +02:00
default
5d26f31a8a Fixed overzealous rejection of Announces. 2023-04-05 23:23:19 +02:00
default
976083bf87 Some log tweaks. 2023-04-02 11:17:51 +02:00
default
c83b601f90 In is_msg_public(), also look at 'Announce' messages. 2023-03-31 19:09:59 +02:00
default
21e562cfbd Inbox collection can be disabled from the config file. 2023-03-08 10:14:40 +01:00
default
985bb474ba Enable back inbox recollection. 2023-03-07 10:29:50 +01:00
default
71394774f4 Disabled inbox recollection temporarily (for global re push). 2023-03-07 10:27:50 +01:00
default
35995d03be Reject messages not for me. 2023-03-07 10:04:13 +01:00
default
23177e9395 is_msg_for_me() also accepts msgs where a followed is cc'ed. 2023-03-07 09:40:55 +01:00
default
946c29773a Some improvements to is_msg_for_me(). 2023-03-06 20:07:44 +01:00
default
b032e3d522 Fixed is_msg_for_me(). 2023-03-06 14:35:11 +01:00
default
e3e45b7c98 New function is_msg_for_me(). 2023-03-06 14:28:53 +01:00
default
60f77b6cad msg_update() sends copies the 'to' and 'cc' fields in notes. 2023-03-06 11:26:43 +01:00
default
751211684f Don't send public admirations of non-public messages. 2023-03-06 11:16:15 +01:00
default
79ea0bf4ab Reject MUTEd actor messages ASAP with a 403 status. 2023-03-04 00:26:50 +01:00
default
45f490286a Send to collected inboxes AFTER sending to explicit recipients. 2023-03-03 06:04:40 +01:00
default
8451d66601 Log the user-agent when serving the actor. 2023-03-02 15:34:04 +01:00
default
1ca94dab67 Added user-agent in non-signed http connections. 2023-03-02 13:30:29 +01:00
default
5036cb5e11 Connection jobs are treated as urgent. 2023-03-02 12:38:02 +01:00
default
e705e5c3ed Show a bigger piece of a connection error. 2023-03-02 12:30:00 +01:00
default
4773d6c64c Output to the shared inboxes only the public messages. 2023-03-02 10:26:52 +01:00
default
d53d9af2be Enqueue messages to the collected inboxes first. 2023-03-02 09:28:19 +01:00
default
29b12498dd Simplified is_msg_public(). 2023-03-02 09:15:40 +01:00
default
e74ae0f589 Renamed inboxes/ to inbox/. 2023-03-02 09:01:08 +01:00
default
5e3c50d6e1 New inbox collection functions. 2023-03-02 08:43:50 +01:00
default
eb0c7eabbb Minor refactoring to actor_request().
Including commented out experimental code for collecting sharedInboxes.
2023-03-01 09:22:32 +01:00
default
d75a22adab New function srv_archive_error(). 2023-03-01 08:25:36 +01:00
default
1d82d13d62 In activitypub_request(), retry failed signed requests as non-signed. 2023-02-24 09:00:03 +01:00
default
2bfebba7be Don't wait for 3 seconds if there were some q_items processed. 2023-02-22 08:39:54 +01:00
default
3a97721c30 Unrolled the recipient-to-inbox process in process_user_queue_item().
Instead of calling inbox_list(), waiting for it to end and then
sending to all the "uniqueized" inboxes, the sending is done everytime
a unique inbox is found.
2023-02-20 13:19:29 +01:00
default
58c01be996 Use actor_request() again in get_actor_inbox().
This was faster, but some actors not already here (i.e. some
mentions) were not posted.
2023-02-20 10:02:21 +01:00
default
5230435b31 New boolean argument 'priv' to msg_note(). 2023-02-20 09:32:44 +01:00
default
9083bef5cb Don't try to send to empty email addresses. 2023-02-20 06:12:23 +01:00
default
f1f3e3b116 Email notifications can be disabled. 2023-02-20 06:00:54 +01:00
default
d3da67eaba Don't request the actor in get_actor_inbox(). 2023-02-15 06:01:47 +01:00
default
1af96788f0 Even more tweaks to connection reply logging. 2023-02-14 08:49:17 +01:00
default
e71c72f037 More tweaks to connection reply logging. 2023-02-14 08:32:07 +01:00
default
f832e6a508 Some tweaks to connection reply logging. 2023-02-14 08:26:39 +01:00
default
7e27ccfde8 Try to show a piece of the error after connecting. 2023-02-14 08:15:43 +01:00
default
f5d3859e07 Added the user to the notification. 2023-02-08 14:47:23 +01:00
default
944bd60e06 Deleted old output message processing in user queue. 2023-02-07 13:34:26 +01:00
default
4cca157641 Output messages are now processed by the pool of threads. 2023-02-07 13:31:48 +01:00
default
8f63c6259a Log unexpected q_item types. 2023-02-07 13:19:27 +01:00
default
7be01b7f34 Output messages are sent with send_to_inbox_raw(). 2023-02-07 10:33:58 +01:00
default
3ddf76c2aa New function send_to_inbox_raw(). 2023-02-07 10:29:06 +01:00
default
2db57c9df9 Added internals for Telegram notifications. 2023-02-07 07:37:23 +01:00
default
f6d51357af process_queue() now posts the q_item to the thread pool.
Instead of calling process_queue_item() itself.
2023-02-06 20:29:18 +01:00
default
b2d186cd0f The pool of threads now process q_items.
Also, the purge is commanded as a q_item.
2023-02-06 20:07:29 +01:00
default
71a7569467 Deleted the type argument from object_get_my_md5() and object_get().
It was never used.
2023-02-05 17:45:00 +01:00
default
d49089898f Elevated debug level to bad user / invalid user messages. 2023-02-03 16:51:59 +01:00
default
928f22fbba Email notifications have been moved to the global queue. 2023-02-02 05:21:16 +01:00
default
c639553836 New function queue() (the global queue). 2023-02-02 05:07:20 +01:00
default
108ed072e2 Renamed process_queue_item() to process_user_queue_item(). 2023-02-02 04:55:58 +01:00
default
8d22c448d4 process_queue() has been renamed to process_user_queue(). 2023-02-02 04:50:51 +01:00
default
106c94ef86 queue() renamed to user_queue(). 2023-02-02 04:47:59 +01:00
default
ee77e45abb dequeue() does not need a snac argument. 2023-02-02 04:44:30 +01:00
default
c2524323a9 New function process_queue_item(). 2023-01-31 22:30:34 +01:00
default
cabbdbe209 Deleted dead code. 2023-01-31 20:26:33 +01:00
default
94c4790bd7 Unified queue message field names. 2023-01-31 20:22:36 +01:00
default
4e86847f72 Image attachments in posts can now have descriptions ('alt text'). 2023-01-28 18:22:42 +01:00
default
756e8cb2a7 More tweaks to the default avatar. 2023-01-27 18:28:55 +01:00
default
aecfcacc32 Some tweaks to the default avatar. 2023-01-27 18:21:54 +01:00
default
a3ed2408fc New function default_avatar_base64(). 2023-01-27 18:17:11 +01:00
default
fd1e281cba Use a shorter timeout for first output connections. 2023-01-24 15:06:58 +01:00
default
2921dbe058 Always make ids unique. 2023-01-22 20:31:16 +01:00
default
7199c00403 In msg_note(), store the original content in the sourceContent field. 2023-01-20 10:09:32 +01:00
default
a38c7aeadc Updated year in copyright notices. 2023-01-17 09:50:16 +01:00
default
b262961c93 Process HTML Unicode entities specially in process_tags(). 2023-01-17 09:37:41 +01:00
Andrew Alderwick
3cb1725225 Added OpenBSD's unveil() and pledge() support. 2023-01-13 13:25:14 +01:00
default
11ba44ff9f Some mention formatting tweaks. 2023-01-13 07:12:19 +01:00
default
1d0ab9c156 Added (partial) support for #HashTags in posts. 2023-01-12 13:49:37 +01:00
default
6b344b8c2e Deleted unused argument in timeline_request(). 2023-01-11 20:51:15 +01:00
default
40b3f739d2 Deleted unused argument in timeline_admire(). 2023-01-11 20:47:36 +01:00
default
75f8554e38 Deleted unused arguments in timeline_add(). 2023-01-11 20:40:13 +01:00
default
1aac24ca75 More keyId/signature tweaks. 2023-01-11 09:38:19 +01:00
default
1438d046a5 Log tweaks. 2023-01-10 20:37:53 +01:00
default
23eb05ee99 Use the already loaded actor in check_signature(). 2023-01-10 18:21:00 +01:00
default
292d7c3e95 Fixed log level for 'serving actor'. 2022-12-24 07:05:01 +01:00
default
850259b269 Added a working space to timeline_request(). 2022-12-23 21:41:52 +01:00
default
e762d942de Don't rewrite the id unless it's different. 2022-12-23 21:30:18 +01:00
default
f9f6d96579 Corrected a debug level. 2022-12-23 12:32:59 +01:00
default
f83ff46b6b Fixed crash on some webfinger errors. 2022-12-23 12:20:54 +01:00
default
0bba515cf0 timeline_request() fixes the canonical id for the object. 2022-12-23 10:01:10 +01:00
default
a24b27bf29 Don't generate inReplyTo as an empty string. 2022-12-23 08:05:00 +01:00
default
8461fbfbcc Log the actor request. 2022-12-16 08:35:52 +01:00
default
e6c48cc96a In msg_note(), delete all cc recipients also in the to. 2022-12-16 07:51:10 +01:00
default
25acaf178c Replaced all calls to post() with enqueue_message(). 2022-12-16 07:16:00 +01:00
default
427f7341fa New function enqueue_message(). 2022-12-16 07:09:25 +01:00
default
286eb291c7 Lower debug level to repeated follows. 2022-12-15 16:43:01 +01:00
default
df612873d6 Log repeated Follow messages. 2022-12-15 16:37:34 +01:00
default
6a7007e381 Added support for Update + Note on input. 2022-12-15 11:06:31 +01:00
default
645e7ec43e Some code reordering to placate scan-build's wrath. 2022-12-14 04:55:47 +01:00
default
79270abd09 Log the response date in send_to_inbox() errors. 2022-12-11 09:08:12 +01:00
default
6fd5d14428 In process_queue(), do not retry for 404 or 410 status. 2022-12-10 10:36:31 +01:00
default
cef10f5678 Added level of debug for 'Delete' messages. 2022-12-08 08:19:24 +01:00
Alex Schroeder
a221237637 Pagination of the public and private page
Use the query parameters skip and show to control what you can see,
e.g. /alex/admin?skip=0&show=4

Don't use or save the timeline cache if either is set.

The following functions were changed from accepting a single max
parameter to accepting both skip and show:
timeline_simple_list, timeline_list, index_list_desc.
2022-12-06 18:27:33 +01:00
Alex Schroeder
20f862a651 Use "new" instead of "New" for log messages
The messages for new "Like" and new "Delete" started with an uppercase
n instead of a lowercase n like all the other log messages.
2022-12-04 10:35:01 +01:00
default
af6d31ff83 New function timeline_simple_list(). 2022-12-03 07:27:26 +01:00
default
a133427e8d More old code cleaning. 2022-12-02 20:56:51 +01:00
default
3e2891b100 Renamed timeline_here() to object_here(). 2022-12-02 20:44:51 +01:00
default
c06136a8ac Fixed one post queries. 2022-12-02 19:39:17 +01:00
default
33c8a73c17 Fixed RSS and outbox to use the new data storage. 2022-12-02 19:30:59 +01:00
default
c00e3afcdc Big data storage change. 2022-12-02 19:14:59 +01:00
default
e98dbe4eb5 Added the profile="" argument to Person content-type. 2022-12-01 19:38:11 +01:00
default
8b4dbfd708 Deleted dump of debugging code. 2022-11-28 17:54:32 +01:00
default
f209c3205d Use xs_set in recipient_list() and inbox_list(). 2022-11-28 15:49:56 +01:00
default
07fec71273 Upgraded followers to the new db. 2022-11-28 10:46:42 +01:00
default
832bbfd5eb Dump bad signature headers to /tmp/ (temporary). 2022-11-27 09:18:35 +01:00
default
a9d3e0ca79 I was using fclose() instead of pclose(). What a moron. 2022-11-27 09:09:55 +01:00
default
1243e26a0d New function object_add_ow(). 2022-11-26 05:18:48 +01:00
default
afeec970a3 Also call object_del() on a renewed actor in actor_request(). 2022-11-25 12:50:19 +01:00
default
e2c332c68a On Update + Person, call object_del() before actor_add(). 2022-11-25 12:09:30 +01:00
default
9145cca97a In msg_note(), also add the in_reply_to author as a tag.Mention. 2022-11-22 20:31:22 +01:00
default
f4bebf0323 Logging tweaks. 2022-11-18 18:08:09 +01:00
default
e6bf647b98 Always log process_queue sending. 2022-11-18 08:04:20 +01:00
default
f0e17d6753 Queue messages to inboxes instead of actors. 2022-11-17 18:33:54 +01:00
default
a12da31bdf Move send to actor logging to process_queue(). 2022-11-17 10:16:54 +01:00
default
35ad83e9ec Also log the inbox in send_to_actor(). 2022-11-17 09:16:25 +01:00
default
afce422785 Use endpoints/sharedInbox instead of inbox, if there is one. 2022-11-17 09:04:24 +01:00
default
21c676487a Set "u-url mention" class for mentions. 2022-11-13 15:15:16 +01:00
default
73323a7fc0 Some formatting refactoring. 2022-11-13 08:41:50 +01:00
default
2364d960b7 Fixed memory leak. 2022-11-07 19:37:05 +01:00
default
c0d5016e1e Use the newly resolved actor in msg_follow() instead of rewriting the old one. 2022-11-02 21:36:55 +01:00
default
dbe60be4f3 Fixed bug when following by @user@host. 2022-11-02 20:28:40 +01:00
default
1fd14a850d People page started. 2022-11-02 10:13:14 +01:00
default
34a2b47e85 Don't store objects other than 'Note' in timeline_request(). 2022-11-01 20:13:23 +01:00
default
78b3a30447 Some code moving to avoid false positive leaks. 2022-10-25 13:59:15 +02:00
default
2ab428ab0a Fixed leak. 2022-10-25 10:19:42 +02:00
default
084731fec2 Send notification emails through the queue. 2022-10-21 19:07:20 +02:00
default
6ffbb3a4fc Fixed typo. 2022-10-21 10:37:08 +02:00
default
d210674569 Don't notify about admirations of things by others. 2022-10-21 10:36:09 +02:00
default
6e470440f9 Rewritten notify() to write the message in bulk.
This was meant to avoid some 32 EPIPE from sendmail,
but it's still happening.
2022-10-21 10:26:45 +02:00
default
a52ed9be78 New function notify(). 2022-10-21 09:41:29 +02:00
default
a16600e330 Better 'Delete' message logging. 2022-10-20 10:34:32 +02:00
default
395f80bdc4 Added support for HEAD methods.
Mastodon uses them when it founds an attachment.
2022-10-16 19:00:17 +02:00
default
78ec3b077b Media can be attached to notes.
The web interface limits this (by now) to only one
attachment, given the URL.
2022-10-10 09:03:15 +02:00
default
849913dc59 Use the time functions of xs_time.h. 2022-10-02 09:27:17 +02:00
default
be3191ee5d Fixed crash. 2022-10-01 21:01:54 +02:00
default
366c23ab85 Also accept 'Delete' on input. 2022-10-01 19:48:13 +02:00
default
82e9a03925 Implemented 'Delete'. 2022-10-01 19:37:47 +02:00
default
37925a020e timeline_request() also triggers an actor_request(). 2022-10-01 18:48:05 +02:00
default
2c00c7b0b5 New web action 'Unfollow'. 2022-10-01 09:12:33 +02:00
default
fa9c90c00e Add a date to a Follow message if it doesn't include one. 2022-09-30 18:12:32 +02:00
default
392c014c26 New function check_signature() (incomplete). 2022-09-29 14:44:24 +02:00
default
49bca7e273 html_entry() is built in its own string and then added.
This will be faster.
2022-09-29 09:11:43 +02:00
default
c5a7a9c475 Treat 410 Gone from actors specially. 2022-09-28 21:09:50 +02:00
default
2be2c07e9c The input queue also has retries. 2022-09-28 20:41:07 +02:00
default
51ed24be47 If an actor cannot be retrieved, move the message back to the queue. 2022-09-28 20:24:47 +02:00
default
e4967cfcb3 Process 'Update' + 'Person'. 2022-09-28 20:08:02 +02:00
default
c38cc09e4c Process 'Undo' + 'Follow'. 2022-09-28 19:59:19 +02:00
default
045498652f 'Announce' messages also try to bring the announced actor. 2022-09-28 07:12:16 +02:00
default
3b8a43013d Check for muted actors in Announce messages. 2022-09-28 05:16:17 +02:00
default
03b0e105b5 Delete the _snac field in outbox. 2022-09-28 04:52:17 +02:00
default
32661d2be7 The outbox returns now some entries. 2022-09-28 04:48:23 +02:00
default
94ef803701 Timeline pages are also served. 2022-09-27 19:00:24 +02:00
default
66a7f633b3 Call process_tags() from msg_note(). 2022-09-27 18:33:25 +02:00
default
b6c4906c6a New function process_tags() (untested). 2022-09-27 18:20:25 +02:00
default
8ac32f0d81 'Accept' messages are processed. 2022-09-27 15:38:09 +02:00
default
05bf4b2c3c New function msg_follow(). 2022-09-27 15:28:08 +02:00
default
6144e0eeeb More work in msg_note(). 2022-09-27 14:50:13 +02:00
default
0b6540f503 Notes can be posted WOW!. 2022-09-27 14:07:36 +02:00
default
26a3b260d5 Started function not_really_markdown(). 2022-09-27 09:38:46 +02:00
default
ec9115717b 'Follow' messages are now processed. 2022-09-27 07:54:05 +02:00
default
e550e86afb Check the digest before enqueueing. 2022-09-27 07:16:46 +02:00
default
8f738e1417 Serve the actor as the correct content-type. 2022-09-26 12:29:26 +02:00
default
fd6f71bfe3 More work but signatures seem to still fail. 2022-09-26 11:19:45 +02:00
default
acc467c034 New function msg_admiration(). 2022-09-26 10:08:14 +02:00
default
f410e3a40a New function post. 2022-09-26 09:28:39 +02:00
default
c37a99b97c New function is_msg_public(). 2022-09-26 09:25:35 +02:00
default
e0e86d269a Renamed to recipient_list(). 2022-09-26 09:22:32 +02:00
default
46ee4a4a18 New function recipients(). 2022-09-26 09:22:05 +02:00
default
74aef6994a Link to local if the child id is from this actor. 2022-09-26 09:08:03 +02:00
default
5321295005 Resolve object id instead of discarding like or boost. 2022-09-26 07:19:45 +02:00
default
d1a2a7438d New metadata 'referrer', that contains an actor.
This field contains the actor that boosted an entry.
2022-09-26 07:13:39 +02:00
default
b5be6a0172 Return the correct content-type. 2022-09-26 00:01:19 +02:00
default
d86f6ee27f Backported from xs. 2022-09-25 22:57:18 +02:00
default
a63c9c24c1 Avoid crashing on empty q_items. 2022-09-25 21:55:29 +02:00
default
bf1ee12da2 More sign work (I'm tired). 2022-09-25 21:45:58 +02:00
default
e132ce5076 New function msg_actor(). 2022-09-25 21:02:47 +02:00
default
6f7f98ded3 Fixed a bug in the digest header. 2022-09-25 18:50:53 +02:00
default
6169932733 New function timeline_request(). 2022-09-25 18:28:15 +02:00
default
bb70101fec New function timeline_admire(). 2022-09-25 17:42:39 +02:00
default
4f328eec1f Some fixes to timeline_add(). 2022-09-25 09:07:43 +02:00
default
5792ef5d24 Process 'Create' messages (untested). 2022-09-25 07:58:25 +02:00
default
b070d2d8f8 The HTTP request headers are stored in a plain dict. 2022-09-25 07:42:57 +02:00
default
e9afd7cd13 More work. 2022-09-24 11:54:35 +02:00
default
a7202dcd1c More message work. 2022-09-24 11:04:35 +02:00
default
ea57b47264 Started creating messages. 2022-09-24 10:43:57 +02:00
default
a6712ba79a Also store the req object in enqueue_input(). 2022-09-24 10:03:27 +02:00
default
3df33c845d More ActivityPub work. 2022-09-23 23:49:09 +02:00
default
c181c57f56 New function enqueue_input(). 2022-09-23 23:09:09 +02:00
default
b4a4fa0b0d Fixed memleak. 2022-09-23 21:01:35 +02:00
default
6e6c315494 New function activitypub_get_handler(). 2022-09-23 20:59:19 +02:00
default
1d694a245a xs_httpd_request() also returns the payload. 2022-09-23 20:28:23 +02:00
default
bbf5471039 New function process_queue(). 2022-09-23 19:37:01 +02:00
default
cf59d68491 New functions send_to_inbox() and send_to_actor(). 2022-09-23 19:07:45 +02:00
default
6586be50a0 Fixed bug in actor_request(). 2022-09-23 18:46:30 +02:00
default
a0bcc4e6c0 Improved activitypub_request(). 2022-09-23 18:15:59 +02:00
default
bdc166111d [activitypub.c] New file. 2022-09-23 17:33:33 +02:00