diff --git a/app/helpers/autoreject_helper.rb b/app/helpers/autoreject_helper.rb index f11e32530..9a2b48a88 100644 --- a/app/helpers/autoreject_helper.rb +++ b/app/helpers/autoreject_helper.rb @@ -61,8 +61,10 @@ module AutorejectHelper if should_reject?(uri) if @json Rails.logger.info("Auto-rejected #{@json['id']} (#{@json['type']})") + LogWorker.perform_async("Auto-rejected an incoming '#{@json['type']}#{@object && " #{@object['type']}".rstrip}' from #{@json['id']}.") elsif uri Rails.logger.info("Auto-rejected #{uri}") + LogWorker.perform_async("Auto-rejected a request to #{uri}.") end return true end diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index fee8fcd25..057a106c3 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -184,6 +184,7 @@ class ActivityPub::Activity def reject_payload! Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_account] && "via #{@options[:relayed_through_account].uri}"}") + LogWorker.perform_async("Auto-rejected an incoming '#{@json['type']}#{@object && " #{@object['type']}".rstrip}' from #{@json['id']} by #{@account.uri}#{@options[:relayed_through_account] && " via #{@options[:relayed_through_account].uri}"}.") nil end end diff --git a/app/models/account.rb b/app/models/account.rb index efa6b8fbd..8d5e5ee1a 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -212,6 +212,7 @@ class Account < ApplicationRecord end def force_unlisted! + LogWorker.perform_async("\xf0\x9f\x93\xb5 Forced the media of account '#{@account.acct}' to be unlisted.") transaction do update!(force_unlisted: true) Status.where(account_id: id, visibility: :public).in_batches.update_all(visibility: :unlisted) @@ -219,6 +220,7 @@ class Account < ApplicationRecord end def force_sensitive! + LogWorker.perform_async("\xf0\x9f\x94\x9e Forced the media of account '#{@account.acct}' to be marked sensitive.") transaction do update!(force_sensitive: true) Status.where(account_id: id, sensitive: false).in_batches.update_all(sensitive: true) @@ -226,6 +228,7 @@ class Account < ApplicationRecord end def allow_public! + LogWorker.perform_async("\xf0\x9f\x86\x97 No longer forcing the media of account '#{@account.acct}' to be marked sensitive.") update!(force_unlisted: false) end @@ -240,10 +243,12 @@ class Account < ApplicationRecord def silence!(date = nil) date ||= Time.now.utc update!(silenced_at: date) + LogWorker.perform_async("\xf0\x9f\x94\x87 Silenced account '#{@account.acct}'.") end def unsilence! update!(silenced_at: nil) + LogWorker.perform_async("\xf0\x9f\x94\x8a Unsilenced account '#{@account.acct}'.") end def suspended? diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb index 4a1218e3f..5158f6793 100644 --- a/app/services/block_domain_service.rb +++ b/app/services/block_domain_service.rb @@ -5,6 +5,7 @@ class BlockDomainService < BaseService def call(domain_block) @domain_block = domain_block + LogWorker.perform_async("\xf0\x9f\x9a\xab Applying #{@domain_block.severity}#{@domain_block.force_sensitive? ? " and force sensitive media" : ''}#{@domain_block.reject_media? ? " and reject media" : ''} policy on domain '#{blocked_domain}'.") process_domain_block! end diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb index 86c7ac137..c38e6c814 100644 --- a/app/services/suspend_account_service.rb +++ b/app/services/suspend_account_service.rb @@ -40,6 +40,8 @@ class SuspendAccountService < BaseService @account = account @options = options + LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f Suspending account '#{@account.acct}'.") + reject_follows! purge_user! purge_profile! diff --git a/app/services/unblock_domain_service.rb b/app/services/unblock_domain_service.rb index eceecd6d7..58b33a7f3 100644 --- a/app/services/unblock_domain_service.rb +++ b/app/services/unblock_domain_service.rb @@ -5,6 +5,7 @@ class UnblockDomainService < BaseService def call(domain_block) @domain_block = domain_block + LogWorker.perform_async("\xf0\x9f\x86\x97 Reset policy on domain '#{@domain_block.domain}'.") process_retroactive_updates domain_block.destroy end diff --git a/app/workers/log_worker.rb b/app/workers/log_worker.rb new file mode 100644 index 000000000..556820e16 --- /dev/null +++ b/app/workers/log_worker.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class LogWorker + include Sidekiq::Worker + + sidekiq_options unique: :until_executed + + def perform(log_text) + logger_id = ENV['LOG_USER'].to_i + return true if logger_id == 0 + + logger = Account.find_by(id: logger_id) + return true if logger.nil? + + PostStatusService.new.call( + logger, + created_at: Time.now.utc, + text: log_text.strip, + tags: ['monsterpit.admin.log'], + visibility: :unlisted, + local_only: true, + content_type: 'text/plain', + language: 'en', + ) + rescue ActiveRecord::RecordNotFound, ActiveRecord::RecordInvalid + true + end +end