mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 09:31:41 +00:00
feat: al actualizar las blocklists, bloquear las instancias en los sitios que las tengan habilitadas
This commit is contained in:
parent
4bc11c7007
commit
d5f48c6007
2 changed files with 34 additions and 1 deletions
|
@ -1,11 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub
|
||||
# Se encarga de mantener las listas de bloqueo actualizadas
|
||||
# Se encarga de mantener las listas de bloqueo actualizadas. Luego de
|
||||
# actualizar el listado de instancias, bloquea las instancias en cada
|
||||
# sitio que tenga el fediblock habilitado.
|
||||
class FediblockFetchJob < ApplicationJob
|
||||
def perform
|
||||
ActivityPub::Fediblock.find_each do |fediblock|
|
||||
fediblock.process!
|
||||
|
||||
instances_added = fediblock.instances - fediblock.instances_was
|
||||
|
||||
# No hacer nada si no cambió con respecto a la versión anterior
|
||||
next if instances_added.empty?
|
||||
|
||||
ActivityPub::FediblockUpdatedJob.perform_later(fediblock: fediblock, hostnames: instances_added)
|
||||
rescue ActivityPub::Fediblock::FediblockDownloadError => e
|
||||
ExceptionNotifier.notify_exception(e, data: { fediblock: fediblock.title })
|
||||
end
|
||||
|
|
24
app/jobs/activity_pub/fediblock_updated_job.rb
Normal file
24
app/jobs/activity_pub/fediblock_updated_job.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Se encarga de mantener sincronizadas las listas de instancias
|
||||
# de los fediblocks con los sitios que las tengan activadas.
|
||||
class ActivityPub
|
||||
class FediblockUpdatedJob < ApplicationJob
|
||||
# @param :fediblock [ActivityPub::Fediblock]
|
||||
# @param :instances [Array<String>]
|
||||
def perform(fediblock:, hostnames:)
|
||||
instances = ActivityPub::Instance.where(hostname: instances)
|
||||
|
||||
# Todos los sitios con la Social Inbox habilitada
|
||||
Site.where(id: DeploySocialDistributedPress.pluck(:site_id)).find_each do |site|
|
||||
# Crea el estado si no existía
|
||||
fediblock_state = site.fediblock_states.find_or_create_by(fediblock: fediblock)
|
||||
|
||||
# No hace nada con los deshabilitados
|
||||
next unless fediblock_state.enabled?
|
||||
|
||||
ActivityPub::InstanceModerationJob.perform_later(site: site, hostnames: instances)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue