Commit graph

15848 commits

Author SHA1 Message Date
floatingghost e3c8c4f24f Merge pull request 'mrf/object_age: fix handling of non-public objects' (#851) from Oneric/akkoma:mrf-fix-oage into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/851
2025-01-03 15:26:11 +00:00
floatingghost 67cdc38296 Merge pull request 'Only proxy HTTP and HTTP urls via Media Proxy' (#860) from nopjmp/akkoma:media-proxy-only-http into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/860
2025-01-03 15:25:14 +00:00
floatingghost 89d209f486 Merge pull request 'Fix NodeInfo content-type' (#853) from Oneric/akkoma:nodeinfo-contenttype into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/853
2025-01-03 15:24:25 +00:00
floatingghost 087ada3b2e Merge pull request 'Update supported OTP version to 27 in docs' (#849) from norm/akkoma:docs/otp-27 into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/849
2025-01-03 15:23:59 +00:00
floatingghost 91bedcfa68 Merge pull request 'Completely omit id for anonymous objects' (#850) from Oneric/akkoma:ap-anonymous-errata into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/850
2025-01-03 15:23:03 +00:00
nopjmp ff5d197341 Update CHANGELOG.md 2024-12-16 20:35:12 -06:00
nopjmp 7632765b43 Only proxy HTTP and HTTP urls via Media Proxy
We make an assumption that we are only proxying HTTP/HTTPS hosted
media through the media proxy endpoint.

Fixes: #859
2024-12-16 20:35:12 -06:00
Oneric 294de939cb signing_key: refactor nested case into with statement
The error branches were already effectively identical before.
This change is purely cosmetic.
2024-12-08 20:43:57 +00:00
Oneric 7583eceb38 Make SigningKey data migration future-proof
Bug originally discovered by tudbut
2024-12-08 20:43:10 +00:00
Floatingghost 834edfcf96 add changelog 2024-11-26 09:50:04 +00:00
Floatingghost 79b282dea6 bump version 2024-11-26 09:36:20 +00:00
Floatingghost d1d82782db add signing key index 2024-11-26 09:35:56 +00:00
Haelwenn (lanodan) Monnier 2b1a252cc7 User: truncate remote user fields instead of rejecting 2024-11-26 09:29:44 +00:00
Oneric 416aebb76a Fix NodeInfo content-type
Fixes: https://akkoma.dev/AkkomaGang/akkoma/issues/852
2024-11-19 19:25:31 +01:00
Oneric 932810c35e mrf/object_age: fix handling of non-public objects
Current logic unconditionally adds public adressing to "cc"
and follower adressing to "to" after attempting to strip it
from the other one. This creates serious problems:

First the bug prompting this investigation and fix,
unconditional addition creates duplicates when adressing
URIs already were in their intended final field; e.g.
this is prominently the case for all "unlisted" posts.
Since List.delete only removes the first occurence,
this then broke follower-adress stripping later on
making the policy ineffective.

It’s also just not safe in general wrt to non-public adressing:
e.g. pre-existing duplicates didn’t get fully stripped,
bespoke adressing modes with only one of public addressing
or follower addressing are mangled — and most importantly:
any belatedly received DM or follower-only post
also got public adressing added!
Shockingly this last point was actually asserted as "correct" in tests;
it appears to be a mistake from mindless match adjustments
while fixing crashes on nil adressing in
10c792110e.

Clean up this sloppy logic up, making sure no more duplicates are
added by us, all instances of relevant adresses are purged and only
readded when they actually existed to begin with.
2024-11-17 00:44:51 +01:00
Norm 4c7ef1e027 Update supported OTP version to 27 in docs
The minor incompatibility should have been fixed with commit
bee10eab5e and PRs #839 and #841.
2024-11-09 18:24:53 -05:00
Oneric 0f9c9aac38 Completely omit id for anonymous objects
Current AP spec demands anonymous objects to have an id value,
but explicitly set it to JSON null. Howeveras it turns out this is
incompatible with JSON-LD requiring `@id` to be a string and thus AP
spec is incompatible iwth the Ativity Streams spec it is based on.
This is an issue for (the few) AP implementers actually performing
JSON-LD processing, like IceShrimp.NET.
This was uncovered by IceShrimp.NET’s zotan due to our adoption of
anonymous objects for emoj in f101886709.

The issues is being discussed by W3C, and will most likely be resolved
via an errata redefining anonymous objects to completely omit the id
field just like transient objects already do. See:
https://github.com/w3c/activitypub/issues/476

Fixes: https://akkoma.dev/AkkomaGang/akkoma/issues/848
2024-11-09 19:29:29 +01:00
Floatingghost c0a99df06a Merge remote-tracking branch 'oneric/varfixes' into develop 2024-10-30 15:15:00 +00:00
floatingghost 0cb4c35ee4 Merge pull request 'Extract keys to their own table, match keyID' (#816) from keys-extraction into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/816
2024-10-30 15:08:11 +00:00
Floatingghost c9b3fcc1d3 allow for OTP code changes in :zip 2024-10-30 14:43:18 +00:00
Floatingghost 11c5838947 standardise local key id generation 2024-10-30 12:44:01 +00:00
Floatingghost 180dc8b472 downgrade earmark 2024-10-26 08:50:38 +01:00
Floatingghost d330c57cda make sure we correctly match key objects 2024-10-26 08:42:07 +01:00
Floatingghost bd64d07082 ensure migration actually works 2024-10-26 07:51:41 +01:00
Floatingghost 9d2c558f64 remove unused import 2024-10-26 07:42:43 +01:00
Floatingghost ac25b051ae remove previous "allow user routes" functionality 2024-10-26 07:28:43 +01:00
Floatingghost c5a44a59db remove unneeded index 2024-10-26 07:00:38 +01:00
Floatingghost 58d5d9d7bf fix tests, contain object 2024-10-26 06:58:47 +01:00
Floatingghost b6e8fde4dd Merge branch 'develop' into keys-extraction 2024-10-26 06:11:29 +01:00
Floatingghost bee10eab5e correct minor zip behaviour 2024-10-26 06:11:12 +01:00
Floatingghost 13215f5f06 remove public key field 2024-10-26 05:28:55 +01:00
Floatingghost 430b376ded mix format 2024-10-26 05:05:48 +01:00
Floatingghost ccf1007883 Fix about a million tests 2024-10-26 05:05:48 +01:00
Floatingghost 6da783b84d Fix http signature plug tests 2024-10-26 05:05:48 +01:00
Floatingghost 8f322456a0 Allow unsigned fetches of a user's public key 2024-10-26 05:05:48 +01:00
Floatingghost 9c876cea21 Fix some tests 2024-10-26 05:05:48 +01:00
Floatingghost 9728e2f8f7 adjust logic to use relation :signing_key 2024-10-26 05:05:47 +01:00
Floatingghost b0f7da9ce0 remove now-unused Keys module 2024-10-26 05:05:28 +01:00
Floatingghost fc99c694e6 Add signing key modules 2024-10-26 05:05:28 +01:00
Floatingghost fbb13fde76 Merge branch 'develop' of akkoma.dev:AkkomaGang/akkoma into develop 2024-10-26 05:04:27 +01:00
Floatingghost cbd236aeb5 mix format 2024-10-26 05:04:20 +01:00
floatingghost 71d3bbd7be Merge pull request 'Fix wrong type when importing emojis' (#841) from tudbut/akkomafixes:emojis into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/841
2024-10-26 04:00:12 +00:00
floatingghost 98a3dab10a Merge pull request 'Fix fs error while unpacking frontends' (#839) from tudbut/akkomafixes:frontends into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/839
2024-10-26 03:58:40 +00:00
TudbuT 661b7fedb6
fix wrong type when importing emojis 2024-10-18 14:57:31 +02:00
TudbuT 8b5aca9619
fix fs error while unpacking frontends 2024-10-18 14:50:28 +02:00
floatingghost f101886709 Merge pull request 'Federate emoji as anonymous objects' (#815) from Oneric/akkoma:emoji-id into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/815
2024-10-16 14:58:46 +00:00
floatingghost 09fa7227f6 Merge pull request 'Tweak fetch security checks' (#819) from Oneric/akkoma:id-refetch into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/819
2024-10-16 14:16:14 +00:00
Oneric d5b0720596 Allow cross-domain redirects on AP requests
Since we now remember the final location redirects lead to
and use it for all further checks since
3e134b07fa, these redirects
can no longer be exploited to serve counterfeit objects.

This fixes:
 - display URLs from independent webapp clients
   redirecting to the canonical domain
 - Peertube display URLs for remote content
   (acting like the above)
2024-10-14 01:42:51 +02:00
Oneric 940792f8ba Refetch on AP ID mismatch
As hinted at in the commit message when strict checking
was added in 8684964c5d,
refetching is more robust than display URL comparison
but in exchange is harder to implement correctly.

A similar refetch approach is also employed by
e.g. Mastodon, IceShrimp and FireFish.

To make sure no checks can be bypassed by forcing
a refetch, id checking is placed at the very end.

This will fix:
 - Peertube display URL arrays our transmogrifier fails to normalise
 - non-canonical display URLs from alternative frontends
   (theoretical; we didnt’t get any actual reports about this)

It will also be helpful in the planned key handling overhaul.

The modified user collision test was introduced in
https://git.pleroma.social/pleroma/pleroma/-/merge_requests/461
and unfortunately the issues this fixes aren’t public.
Afaict it was just meant to guard against someone serving
faked data belonging to an unrelated domain. Since we now
refetch and the id actually is mocked, lookup now succeeds
but will use the real data from the authorative server
making it unproblematic. Instead modify the fake data further
and make sure we don’t end up using the spoofed version.
2024-10-14 01:42:43 +02:00
floatingghost 3c72b48a05 Merge pull request 'Fix busywait on docker-entrypoint script' (#832) from cevado/akkoma:fix-busy-wait-docker-entrypoint into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/832
2024-09-24 23:52:07 +00:00