Complemento ActivityPub

He encontrado un problema. Quizás sea un caso extremo. Configuré una de mis categorías para usar ActivityPub, pero no es accesible en otras plataformas como Mastodon, y las publicaciones no se federan porque no puedo acceder y seguir la categoría.

Creo que podría ser un problema debido a la “E” mayúscula en el identificador. Events@bayofislands.community

Tengo otra categoría federada que funciona bien. Puedes verla en acción en

¿Alguna sugerencia para que esto funcione sin crear una categoría de eventos completamente nueva? ¿Puedo modificar uno o más registros en la base de datos para actualizar el nombre de usuario de la categoría?

También estoy notando que la URL para seguir una categoría no funciona en Mastodon: Log in - Mastodon Newfoundland and Labrador

Gracias por el informe. Cambia la E a minúscula y funcionará

Arreglaré este problema (es decir, el manejo de letras mayúsculas) pronto.

1 me gusta

¿Podemos eliminar seguidores? Tengo algunos actores que vinieron de una instancia ahora eliminada y me gustaría limpiar lugares :smirking_face:

Una buena solicitud, la añadiré pronto también.

2 Me gusta

En realidad, no estoy seguro de que sea un problema de mayúsculas. ¿Podría confirmar lo siguiente:

  1. ¿estás ejecutando la última versión de Discourse? y
  2. ¿estás ejecutando la última versión del plugin ActivityPub?
1 me gusta

Me di cuenta de una cosa: el usuario creado por el plugin ActivityPub no tiene ningún grupo asignado y no tiene correos electrónicos.

¿Es posible asignar grupos personalizados a los usuarios creados por el plugin ActivityPub?

3 Me gusta

Esto también resultó en un error por el cual, si la categoría se establecía en TL0, se podía publicar (solo lectura para everyone), los usuarios de AP podrían no publicar ya que no tenían este permiso.

3 Me gusta

También hay un error aquí. Si SiteSettings.selectable_avatars_mode está configurado, incluso si se estableció en everyone, provocará que al usuario de AP le falten avatares.

1 me gusta

Esto está listo y a la espera de revisión después de que se fusione Tag Actors.

Todavía no. Son usuarios en espera, por lo que hay algunas limitaciones. Quizás un poco más adelante.

Gracias por este informe. Le echaré un vistazo más de cerca a este caso pronto. Por ahora, puedes configurar los permisos de publicación en everyone y funcionará.

Gracias también por este informe. Le echaré un vistazo más de cerca a este caso pronto.

3 Me gusta

Hola, tengo este problema con la publicación “sin destinatarios”. ¿Cómo puedo solucionar el problema?

[Discourse Activity Pub] https://meta.appinn.net/ap/actor/b04930460474d895289ae0cd3c2ae719 no pudo programar https://meta.appinn.net/ap/activity/2ad9bfcc78a9df49efa7b6e9bda454da para su entrega: sin destinatarios

Registros:

Mensaje

[Discourse Activity Pub] https://meta.appinn.net/ap/actor/b04930460474d895289ae0cd3c2ae719 no pudo programar https://meta.appinn.net/ap/activity/2ad9bfcc78a9df49efa7b6e9bda454da para su entrega: sin destinatarios

Rastreo de la pila

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:93:in `log_failure'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:35:in `can_deliver?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:13:in `perform'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:27:in `perform'
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:140:in `activity_pub_deliver_activity'
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:38:in `perform_activity_pub_activity'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:478:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:354:in `public_send'
/var/www/discourse/lib/plugin/instance.rb:354:in `block (2 levels) in add_to_class'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:486:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:354:in `public_send'
/var/www/discourse/lib/plugin/instance.rb:354:in `block (2 levels) in add_to_class'
/var/www/discourse/plugins/discourse-activity-pub/app/controllers/discourse_activity_pub/post_controller.rb:17:in `schedule'
actionpack-7.0.8.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-7.0.8.1/lib/abstract_controller/base.rb:215:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/rendering.rb:165:in `process_action'
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:423:in `block in with_resolved_locale'
i18n-1.14.4/lib/i18n.rb:322:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:423:in `with_resolved_locale'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack-7.0.8.1/lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/rescue.rb:23:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `block in instrument'
activesupport-7.0.8.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-7.0.8.1/lib/active_support/notifications.rb:206:in `instrument'
actionpack-7.0.8.1/lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack-7.0.8.1/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-7.0.8.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-7.0.8.1/lib/abstract_controller/base.rb:151:in `process'
actionview-7.0.8.1/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-3.3.1/lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method'
actionpack-7.0.8.1/lib/action_controller/metal.rb:188:in `dispatch'
actionpack-7.0.8.1/lib/action_controller/metal.rb:251:in `dispatch'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:852:in `call'
railties-7.0.8.1/lib/rails/engine.rb:530:in `call'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `public_send'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `method_missing'
actionpack-7.0.8.1/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
actionpack-7.0.8.1/lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-7.0.8.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-7.0.8.1/lib/action_dispatch/routing/route_set.rb:852:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
rack-2.2.9/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.9/lib/rack/conditional_get.rb:40:in `call'
rack-2.2.9/lib/rack/head.rb:12:in `call'
actionpack-7.0.8.1/lib/action_dispatch/http/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:393:in `call'
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in `call'
/var/www/discourse/config/initializers/008-rack-cors.rb:26:in `call'
rack-2.2.9/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.9/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-7.0.8.1/lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack-7.0.8.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/show_exceptions.rb:29:in `call'
logster-2.19.1/lib/logster/middleware/reporter.rb:40:in `call'
railties-7.0.8.1/lib/rails/rack/logger.rb:40:in `call_app'
railties-7.0.8.1/lib/rails/rack/logger.rb:27:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:24:in `call'
rack-2.2.9/lib/rack/method_override.rb:24:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.9/lib/rack/sendfile.rb:110:in `call'
actionpack-7.0.8.1/lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler-3.3.1/lib/mini_profiler.rb:191:in `call'
message_bus-4.3.8/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:237:in `call'
railties-7.0.8.1/lib/rails/engine.rb:530:in `call'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `public_send'
railties-7.0.8.1/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.9/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.9/lib/rack/urlmap.rb:58:in `each'
rack-2.2.9/lib/rack/urlmap.rb:58:in `call'
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

Entorno

HTTP HOSTS: meta.appinn.net

Creo que necesitas que alguien (o algún ‘actor’) siga la categoría. Mira esto:

2 Me gusta

Pero cuando sigo esta categoría usando mastodon.social:
[Discourse Activity Pub] POST request received by https://meta.appinn.net/ap/actor/b04930460474d895289ae0cd3c2ae719/inbox failed: 401 Actor not found for key https://mastodon.social/users/Cosmeticclinic#main-key

¿Es esto un error? (Fecha inválida)

1 me gusta

Solicitud de función: ¿Es posible silenciar o suspender cuentas creadas por el plugin activitypub?

Tenemos un usuario que violó gravemente nuestros términos de servicio y fue baneado permanentemente, pero se fue a otro foro que coopera con nosotros y, a través de activitypub, todavía podemos ver sus publicaciones allí.

Intenté suspenderlo, pero no funcionó. (HTTP 422 Unprocessable Content)

2 Me gusta

Al mismo tiempo, parece que las publicaciones con imágenes enviadas a través de ActivityPub no se cargan correctamente

Aquí tienes un ejemplo en mi foro: OriginalEntregado

1 me gusta

Gracias por los informes, los revisaré detenidamente pronto.

1 me gusta

Este es un plugin increíble y, de hecho, una parte clave del floreciente y emocionante fediverso. ¡Es un trabajo realmente asombroso!

¿Es probable que sea utilizable entre categorías privadas en diferentes instancias de Discourse en un futuro próximo? Sé que este es un caso de uso bastante diferente de la federación abierta, pero es uno que puedo imaginar que sería muy útil para facilitar la colaboración en el contexto de entornos más privados / cerrados.

2 Me gusta

He instalado el plugin activitypub, y puedo ver que está presente y habilitado en la configuración de administración. Sin embargo, cuando voy a la configuración de una categoría, no veo una sección de activitypub allí. Lo único un poco inusual es que estoy ejecutando una configuración multisitio. ¡Agradecería cualquier idea sobre lo que me estoy perdiendo/cómo solucionarlo!

1 me gusta

Solo una nota de que las categorías privadas pueden seguir actualmente a las categorías públicas. Las categorías privadas no pueden seguirse actualmente. Ten en cuenta que existe cierta tensión en la idea de “seguir” a un Grupo “privado”, y que el concepto es controvertido en el Fediverso. Dicho esto, es muy posible que se implemente, pero no será “pronto” :slight_smile:

La configuración de la categoría se ha trasladado a Administración > Plugins > ActivityPub. ¡Actualizaré la documentación en el OP pronto!

4 Me gusta

¡Ajá! Vi algo sobre eso antes, pero fui a Admin > Plugins y no vi el menú en la parte superior, así que hice clic en ActivityPub en la lista de plugins y volví aquí. Luego intenté regresar y mirar en el enlace de configuración. Así que podría ser bueno aclarar eso, quizás con un enlace a la configuración de la categoría desde la configuración de activitypub.

De todos modos, ¡parece que ahora funciona, gracias!

2 Me gusta