about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-07-24 16:39:58 -0500
committermultiple creatures <dev@multiple-creature.party>2019-07-24 16:39:58 -0500
commitcefcad113031ce580121d33c489d33f59e459fc4 (patch)
treeaf6e202d39a56737a5a992a103068b6e4366921a /app
parent8f6e737f38c98bbe431c0c60a42208ba185d94e6 (diff)
transparancy - log use of admin related method calls & activitypub auto-rejections to a logger account
Diffstat (limited to 'app')
-rw-r--r--app/helpers/autoreject_helper.rb2
-rw-r--r--app/lib/activitypub/activity.rb1
-rw-r--r--app/models/account.rb5
-rw-r--r--app/services/block_domain_service.rb1
-rw-r--r--app/services/suspend_account_service.rb2
-rw-r--r--app/services/unblock_domain_service.rb1
-rw-r--r--app/workers/log_worker.rb28
7 files changed, 40 insertions, 0 deletions
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