mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 11:41: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
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class ActivityPub
|
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
|
class FediblockFetchJob < ApplicationJob
|
||||||
def perform
|
def perform
|
||||||
ActivityPub::Fediblock.find_each do |fediblock|
|
ActivityPub::Fediblock.find_each do |fediblock|
|
||||||
fediblock.process!
|
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
|
rescue ActivityPub::Fediblock::FediblockDownloadError => e
|
||||||
ExceptionNotifier.notify_exception(e, data: { fediblock: fediblock.title })
|
ExceptionNotifier.notify_exception(e, data: { fediblock: fediblock.title })
|
||||||
end
|
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