@silverpill sure, I think it was mostly these:
Jul 02 01:40:36 wizard.casa mitra[1433501]: 2025-07-02T01:40:36 mitra_activitypub::queues [WARN] failed to process activity (HTTP status server error (502 Bad Gateway) for url (https://pubeurope.com/users/fr/statuses/114780187162115427)) (attempt #1): {"@context":"https://www.w3.org/ns/activitystreams","actor":"https://newsmast.community/users/politics","cc":["https://pubeurope.com/users/fr","https://www.w3.org/ns/activitystreams#Public"],"id":"https://newsmast.community/users/politics/statuses/114780189123638405/activity","object":"https://pubeurope.com/users/fr/statuses/114780187162115427","published":"2025-07-01T21:51:34Z","to":["https://newsmast.community/users/politics/followers"],"type":"Announce"}I'm not sure how newsmast works and I should've just maybe filtered pubeurope.com? I see newsmast cc's other instances that throw up failures like threads.net, I'll remove the filter and see what happens
This is my 20,000th post, here's to 50,000 more.
Wait shit I owe you some free software autism, hang on.
Well here's the source code to @fedi_monitor_bot so if you ever wanted to learn how to handle an Uptime Kuma webhook post and/or post to Pleroma via cURL, here's how to do it.
<?php /** * Script to allow posting to Pleroma API from Uptime Kuma notifications. * This script can serve as the webhook target as configured in the UK notif. * * Required parameters in include file: * - $kuma_authorization_password for basic authentication * - $instance_hostname used to determine what server to post to * - $instance_username used to determine what user to post as * - $instance_email + $instance_password for basic auth to pleroma API */ // See above required variables require_once('params.php'); // Check authorization header if(@$_SERVER['HTTP_AUTHORIZATION'] !== $kuma_authorization_password) { exit(1); } // convert post data to something useful in php. $post_data = json_decode($_POST['data']); // Assemble post text from Uptime Kuma msg field $post_status_text = $post_data->msg. '<br />'.'<br />'. 'URL: '.$post_data->monitor->url. '<br />'.'<br />'. 'Time: '.$post_data->heartbeat->time; // Use cURL to post to the Pleroma API // Credit Lanodan for the example, one of my favoritest people $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://'.$instance_hostname.'/users/'.$instance_username.'/outbox'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/activity+json', 'Authorization: Basic ' . base64_encode($instance_email.':'.$instance_pass) ]); $json_data = ' { "@context": "https://www.w3.org/ns/activitystreams", "type": "Create", "to": [ "https://www.w3.org/ns/activitystreams#Public", "https://'.$instance_hostname.'/users/'.$instance_username.'/followers" ], "actor": "https://'.$instance_hostname.'/users/'.$instance_username.'", "object": { "attributedTo": "https://'.$instance_hostname.'/users/'.$instance_username.'", "type": "Note", "to": [ "https://www.w3.org/ns/activitystreams#Public", "https://'.$instance_hostname.'/users/'.$instance_username.'/followers" ], "content": "'.$post_status_text.'", "published": "'.date('Y-m-d H:i:s').'" } }'; curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); $response = curl_exec($ch); curl_close($ch); // Debug log the response //file_put_contents('/tmp/kuma-debug.log', $response.PHP_EOL, FILE_APPEND);@trwnh @steve @raucao I am not convinced that there is a problem in the first place.
ActivityPub says the identifier is https://www.w3.org/ns/activitystreams#Public. JSON publishers use full URI. Server implementations that perform JSON-LD processing (e.g. Iceshrimp) also produce full URI, they figured it out. Then, why make a change?
If this issue is purely theoretical, then it must be addressed without changing ActivityPub.
https://github.com/w3c/activitypub/issues/404
It's quite long, but the summary is:
- AP says that the identifier of the special public collection is https://www.w3.org/ns/activitystreams#Public (section 5.6).
- JSON-LD programs may replace https://www.w3.org/ns/activitystreams#Public with as:Public. There is a note in AP that warns about this quirk.
- One proposed erratum re-frames the current normative text. as:Public is presented as a "correct" variant, and https://www.w3.org/ns/activitystreams#Public is said to be "erroneous". Another proposed erratum replaces https://www.w3.org/ns/activitystreams#Public with as:Public in all examples.
Why is it harmful?
- https://www.w3.org/ns/activitystreams#Public is used everywhere. Even among those few implementations that do JSON-LD processing, most don't produce as:Public. The whole problem is made-up.
- as:Public and Public are not valid HTTP URIs, so you need to special-case them when you parse audiences. These variants should be banned, but what happens is the opposite.
- Specification will become even more confusing than it is now, because examples will contradict the normative text.
@raucao I don't know what @bengo is talking about, but yes, some of the proposed changes are outright harmful. For example, there is an attempt to label https://www.w3.org/ns/activitystreams#Public special URI as invalid.
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.