transparancy - log use of admin related method calls & activitypub auto-rejections to a logger account

staging
multiple creatures 2019-07-24 16:39:58 -05:00
parent 8f6e737f38
commit cefcad1130
7 changed files with 40 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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?

View File

@ -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

View File

@ -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!

View File

@ -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

28
app/workers/log_worker.rb Normal file
View File

@ -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