Commit graph

10,170 commits

Author SHA1 Message Date
Mark Felder
f06f0bedd3 Clean up ReachabilityWorker jobs and delete from Instances table when deleting all users and activities for an instance 2025-06-28 13:14:01 -07:00
Mark Felder
29f7607910 Add Instances.check_all_unreachable/0 and Instance.check_unreachable/1 2025-06-28 12:51:10 -07:00
Mark Felder
2267ace106 Ensure ReachabilityWorker jobs can be scheduled without needing awareness of the phase design 2025-06-27 18:12:18 -07:00
Mark Felder
ff5f88aae3 Instance.set_reachable/1 should delete any existing ReachabilityWorker jobs for that instance 2025-06-27 18:07:46 -07:00
Mark Felder
a5e11ad110 Custom pruning is not actually needed because an old job cannot exist in the table due to our use of [replace: true] when retrying jobs or walking it through the different phases 2025-06-27 17:24:02 -07:00
Mark Felder
6e4b5edc25 Reduce pruning of history to anything older than 2 days 2025-06-27 17:13:34 -07:00
Mark Felder
77dca7c3e5 Refactor ReachabilityWorker to use a 5-phase reachability testing approach
It will check reachability for an instance deemed unreachable at the following intervals:

4 attempts, once a minute
4 attempts, once every 15 minutes
4 attempts, once every 60 minutes
4 attempts, once every 8 hours
4 attempts, once every 24 hours

This should be effective and respectful of the resources of instances on the fediverse.

We have the Oban Pruner plugin enabled to keep the Oban Jobs table from growing indefinitely. It prunes every 15 minutes, but this will interfere with our ability to enforce uniqueness on the ReachabilityWorker jobs for a time period longer than 15 minutes. The solution is to exclude the ReachabilityWorker from the pruning operation and instead schedule a custom job that will prune the table for us once a day. The ReachabilityPruner cron task will clean up the history of the ReachabilityWorker jobs older than 6 days.
2025-06-27 17:00:02 -07:00
Mark Felder
59bfa83c9c Remove daily reachability scheduling for unreachable instances 2025-06-27 16:04:08 -07:00
Mark Felder
e58ecd3234 Merge remote-tracking branch 'origin/develop' into improved-reachability 2025-06-27 15:59:46 -07:00
feld
cf6587d344 Merge branch 'delete-instance-improvement' into 'develop'
Queue individual jobs for each user that needs to be deleted when deleting an instance.

See merge request pleroma/pleroma!4377
2025-06-27 20:25:41 +00:00
feld
f6c9b003fa Merge branch 'resurrect-mrf-quietreply' into 'develop'
Resurrect MRF.QuietReply

See merge request pleroma/pleroma!4368
2025-06-27 19:13:07 +00:00
Mark Felder
56aab905e8 Queue individual jobs for each user that needs to be deleted when deleting an instance. 2025-06-27 11:13:15 -07:00
vaartis
9be542e272 Merge branch 'handle-dislike' into 'develop'
Handle the Dislike activity by transforming into a thumbs-down emote

Closes #3378

See merge request pleroma/pleroma!4369
2025-06-21 14:18:46 +00:00
Mark Felder
37d4ed883c Change MRF logic to match when there is an inReplyTo and the public address is in the "to" field
Update the method to alter the to/cc fields for consistency and modify the tests to work without requiring a specific order items in the list
2025-06-19 14:50:45 -07:00
vaartis
490a273dc1 Merge branch 'deepl-fix' into 'develop'
Use JSON for DeepL API requests

See merge request pleroma/pleroma!4363
2025-06-18 12:11:35 +00:00
vaartis
ca7dd87e2d Merge branch 'instance-markup-info' into 'develop'
Expose markup configuration in InstanceView

See merge request pleroma/pleroma!4346
2025-06-18 10:48:15 +00:00
vaartis
cda7cbf2a1 Merge branch 'scrobbles' into 'develop'
Change ScrobbleView external link param name to use snake case

See merge request pleroma/pleroma!4243
2025-06-18 10:25:38 +00:00
Ekaterina Vaartis
7ecfb95331 Handle the Dislike activity by transforming into a thumbs-down emote 2025-06-16 14:18:15 +03:00
Haelwenn (lanodan) Monnier
a69e417020
File.mkdir_p -> Pleroma.Backports.mkdir_p 2025-06-16 12:48:47 +02:00
Haelwenn (lanodan) Monnier
00d536d9e2
backports: Copy mkdir_p TOCTOU fix from elixir PR 14242
See: https://github.com/elixir-lang/elixir/pull/14242
2025-06-16 12:46:00 +02:00
lain
bc75bb35fa Merge branch 'relaxed-also-known-as' into 'develop'
Relax alsoKnownAs requirements to just being a URI

See merge request pleroma/pleroma!4367
2025-06-14 08:30:13 +00:00
Mark Felder
33cf49e860 Resurrect MRF.QuietReply
This was not working correctly because the Publisher was stripping the public address from the cc when federating unlisted activities
2025-06-13 10:28:21 -07:00
Mark Felder
7c64bfaace Include public address in cc if original activity specified it and Publisher param_cc also has values 2025-06-12 22:42:40 -07:00
Mark Felder
23be24b92f Fix federation issue where Public visibility information in cc field was lost when sent to remote servers, causing posts to appear with inconsistent visibility across instances 2025-06-12 21:37:50 -07:00
Ekaterina Vaartis
a361b84fc9 Relax alsoKnownAs requirements to just being a URI 2025-06-11 23:24:18 +03:00
Mark Felder
a46a48fb3f PublisherWorker: change max_attempts to 13 which extends the last delivery attempt to ~4.3 days 2025-06-07 15:13:45 -07:00
Mark Felder
8383584d69 Reapply "Nodeinfo is not universally implemented"
This reverts commit 0fe03fc4ee.
2025-06-07 14:57:34 -07:00
Mark Felder
2748891e12 Change the inboxes assignment in the Publisher to better indicate it's a list containing two lists
This clarifies what is really going on here and removes confusion about the nested Enum.each |> Enum.each which both were using an assignment called "inboxes"
2025-06-07 12:26:07 -07:00
Mark Felder
83c9756825 Remove unncessary NaiveDateTime call.
Every non-nil entry in the database is considered unreachable.
2025-06-06 17:10:33 -07:00
Mark Felder
0fe03fc4ee Revert "Nodeinfo is not universally implemented"
This reverts commit b87ec49972.
2025-06-06 13:44:24 -07:00
Mark Felder
0f667761a9 The ap_id is a URL, so we can just pass that to set_reachable/1
Also only bother attempting to mark reachable if it was known to be unreachable
2025-06-06 13:01:32 -07:00
Mark Felder
b87ec49972 Nodeinfo is not universally implemented 2025-06-06 12:55:21 -07:00
Mark Felder
3d422ef325 Reachability refactor
The result of Oban jobs determine the reachability status.

Publisher jobs will cancel themselves at execution time if the target server is now unreachable.

Receiving activities does not immediately mark a server as reachable, but creates a ReachabilityWorker job to validate.

A Cron will execute daily to test all unreachable servers.
2025-06-06 12:32:09 -07:00
feld
7114635997 Merge branch 'private-functions' into 'develop'
Pleroma.User: Mark some functions as private

See merge request pleroma/pleroma!4357
2025-06-06 01:00:43 +00:00
Mark Felder
db65b35ca3 Fix test Returns JSON when format is not supported (Pleroma.Web.WebFinger.WebFingerControllerTest)
If we want to return JSON when a badly behaving client requests text/html, we still have to accept it at the Plug
2025-06-05 17:11:16 -07:00
Mark Felder
48316d168c Fix failing tests due to Builder.block/2 becoming Builder.block/3 with no default value 2025-06-05 16:55:07 -07:00
vaartis
8484e09424 Merge branch 'elixir-1.18' into 'develop'
Elixir 1.18 warnings

See merge request pleroma/pleroma!4358
2025-06-05 09:00:39 +00:00
nicole mikołajczyk
ae2c97fad8 Use JSON for DeepL API requests
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2025-06-04 21:32:30 +02:00
Phantasm
dc26f74961
Revert to previous tag_validator behavior
This paritally reverts commit 9710063fdc
and reverts commit 7ddae61414

See thread: https://git.pleroma.social/pleroma/pleroma/-/merge_requests/4358#note_112761
2025-06-04 19:16:59 +02:00
Ekaterina Vaartis
d95e1066b9 Fix formatting 2025-06-04 12:03:54 +03:00
Ekaterina Vaartis
6fa4f08e67 Add back String.downcase that was accidentally removed from tag_validator 2025-06-04 11:43:18 +03:00
Phantasm
1be8deda73
Remove Pleroma.OTPVersion module
Its last use was a check in lib/application.ex that was removed in
commit 0e53cb4940

Major OTP version can be fetched with System.otp_release/0.
If checking against minor versions and patch levels is needed,
revert this commit since it uses the recommended way of getting
a full OTP version string.
2025-06-03 23:17:39 +02:00
Phantasm
0e53cb4940
Remove unreachable checks for OTP < 22.2
OTP 22 is no longer supported at all.

Pleroma's dependencies cannot be built with Elixir 1.13 and
Elixir 1.14 cannot be built with OTP 22 since it depends on features not
present in OTP 22. Hence why these checks cannot get triggered anymore.
2025-06-03 23:11:37 +02:00
Phantasm
9710063fdc
Apply suggestions to 2 files. 2025-06-03 23:11:37 +02:00
lain
93ce56418e Merge branch 'permissive-webfinger' into 'develop'
WebFinger query default to return JSON when no or unrecognized accept header is provided.

Closes #3381

See merge request pleroma/pleroma!4345
2025-05-29 08:41:27 +00:00
lain
36be0d32a4 Merge branch 'expiring-blocks' into 'develop'
Add expiring blocks

See merge request pleroma/pleroma!4351
2025-05-29 08:25:21 +00:00
lain
374e8c85a7 Apply lambadalambda's suggestion(s) to 1 file(s) 2025-05-29 08:17:31 +00:00
mkljczk
4960e040c1 Merge branch 'doc-typo' into 'develop'
Fix typo in account_status function doc

See merge request pleroma/pleroma!4355
2025-05-23 13:42:32 +02:00
mkljczk
4c8a93a06d Pleroma.User: Mark some functions as private
Signed-off-by: Nicole Mikołajczyk <git@mkljczk.pl>
2025-05-19 10:03:48 +02:00
Phantasm
af81f7bf82
Don't use deprecated function invocation syntax
warning: using map.field notation (without parentheses) to invoke function TranslationMock.configured?() is deprecated, you must add parentheses instead: remote.function()
2025-05-14 17:00:19 +02:00