about summary refs log tree commit diff
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-07-26 13:25:24 -0500
committermultiple creatures <dev@multiple-creature.party>2019-07-26 15:20:57 -0500
commit0151f14dbc1abf33e6bf5cf9bbd2e8038fa39740 (patch)
tree0362a9226de6aaf0da65289433ca69192159557a
parente0b257d512708c8c4fc14af538501954070e0056 (diff)
split federation & moderation logs into different subscopes + make scope tag prefix configurable
-rw-r--r--app/helpers/autoreject_helper.rb6
-rw-r--r--app/helpers/log_helper.rb72
-rw-r--r--app/workers/log_worker.rb7
3 files changed, 46 insertions, 39 deletions
diff --git a/app/helpers/autoreject_helper.rb b/app/helpers/autoreject_helper.rb
index 6f010ca96..1e53f785f 100644
--- a/app/helpers/autoreject_helper.rb
+++ b/app/helpers/autoreject_helper.rb
@@ -1,4 +1,6 @@
 module AutorejectHelper
+  LOG_SCOPE_FEDERATION = ENV.fetch('LOG_SCOPE_FEDERATION', 'federation')
+
 	def should_reject?(uri = nil)
     if uri.nil?
       if @object
@@ -91,10 +93,10 @@ module AutorejectHelper
       reason = reject_reason(reason)
       if @json
         Rails.logger.info("Auto-rejected #{@json['id']} (#{@json['type']})")
-        LogWorker.perform_async("\xf0\x9f\x9a\xab Auto-rejected an incoming '#{@json['type']}#{@object && " #{@object['type']}".rstrip}' from #{@json['id']} because #{reason}.")
+        LogWorker.perform_async("\xf0\x9f\x9a\xab Auto-rejected an incoming '#{@json['type']}#{@object && " #{@object['type']}".rstrip}' from #{@json['id']} because #{reason}.", LOG_SCOPE_FEDERATION)
       elsif uri
         Rails.logger.info("Auto-rejected #{uri}")
-        LogWorker.perform_async("\xf0\x9f\x9a\xab Auto-rejected a request to #{uri} because #{reason}.")
+        LogWorker.perform_async("\xf0\x9f\x9a\xab Auto-rejected a request to #{uri} because #{reason}.", LOG_SCOPE_FEDERATION)
       end
       return true
     end
diff --git a/app/helpers/log_helper.rb b/app/helpers/log_helper.rb
index c2d82c8ca..5665ce0b5 100644
--- a/app/helpers/log_helper.rb
+++ b/app/helpers/log_helper.rb
@@ -1,97 +1,99 @@
 module LogHelper
+  LOG_SCOPE_MODERATION = ENV.fetch('LOG_SCOPE_MODERATION', 'moderation')
+
   def user_friendly_action_log(source, action, target)
     source = source.username if source.is_a?(Account)
 
     case action
     when :create
       if target.is_a? DomainBlock
-        LogWorker.perform_async("\xf0\x9f\x9a\xab <#{source}> applied a #{target.severity}#{target.force_sensitive? ? " and force sensitive media" : ''}#{target.reject_media? ? " and reject media" : ''} policy on https://#{target.domain}\u200b.")
+        LogWorker.perform_async("\xf0\x9f\x9a\xab <#{source}> applied a #{target.severity}#{target.force_sensitive? ? " and force sensitive media" : ''}#{target.reject_media? ? " and reject media" : ''} policy on https://#{target.domain}\u200b.", LOG_SCOPE_MODERATION)
       elsif target.is_a? EmailDomainBlock
-        LogWorker.perform_async("\u26d4 <#{source}> added a registration block on email domain '#{target.domain}'.")
+        LogWorker.perform_async("\u26d4 <#{source}> added a registration block on email domain '#{target.domain}'.", LOG_SCOPE_MODERATION)
       elsif target.is_a? CustomEmoji
-        LogWorker.perform_async("\xf0\x9f\x98\xba <#{source}> added the '#{target.shortcode}' emoji. :#{target.shortcode}:")
+        LogWorker.perform_async("\xf0\x9f\x98\xba <#{source}> added the '#{target.shortcode}' emoji. :#{target.shortcode}:", LOG_SCOPE_MODERATION)
       elsif target.is_a? AccountWarning
-        LogWorker.perform_async("\xe2\x9a\xa0\xef\xb8\x8f <#{source}> sent someone an admin notice.")
+        LogWorker.perform_async("\xe2\x9a\xa0\xef\xb8\x8f <#{source}> sent someone an admin notice.", LOG_SCOPE_MODERATION)
       end
     when :destroy
       if target.is_a? DomainBlock
-        LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> reset the policy on https://#{target.domain}\u200b.")
+        LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> reset the policy on https://#{target.domain}\u200b.", LOG_SCOPE_MODERATION)
       elsif target.is_a? EmailDomainBlock
-        LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> removed the registration block on email domain '#{target.domain}'.")
+        LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> removed the registration block on email domain '#{target.domain}'.", LOG_SCOPE_MODERATION)
       elsif target.is_a? CustomEmoji
-        LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed the '#{target.shortcode}' emoji.")
+        LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed the '#{target.shortcode}' emoji.", LOG_SCOPE_MODERATION)
       elsif target.is_a? Status
-        LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed post #{TagManager.instance.url_for(target)}\u200b.")
+        LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed post #{TagManager.instance.url_for(target, LOG_SCOPE_MODERATION)}\u200b.")
       end
 
     when :update
       if target.is_a? Status
-        LogWorker.perform_async("\xf0\x9f\x91\x81\xef\xb8\x8f <#{source}> changed visibility flags of post #{TagManager.instance.url_for(target)}\u200b.")
+        LogWorker.perform_async("\xf0\x9f\x91\x81\xef\xb8\x8f <#{source}> changed visibility flags of post #{TagManager.instance.url_for(target, LOG_SCOPE_MODERATION)}\u200b.")
       elsif target.is_a? CustomEmoji
-        LogWorker.perform_async("\xf0\x9f\x94\x81 <#{source}> replaced the '#{target.shortcode}' emoji. :#{target.shortcode}:")
+        LogWorker.perform_async("\xf0\x9f\x94\x81 <#{source}> replaced the '#{target.shortcode}' emoji. :#{target.shortcode}:", LOG_SCOPE_MODERATION)
       end
 
     when :enable
       if target.is_a? User
-        LogWorker.perform_async("\xf0\x9f\x92\xa7 <#{source}> unfroze the account of <#{target.username}>.")
+        LogWorker.perform_async("\xf0\x9f\x92\xa7 <#{source}> unfroze the account of <#{target.username}>.", LOG_SCOPE_MODERATION)
       elsif target.is_a? CustomEmoji
-        LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> enabled the '#{target.shortcode}' emoji. :#{target.shortcode}:")
+        LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> enabled the '#{target.shortcode}' emoji. :#{target.shortcode}:", LOG_SCOPE_MODERATION)
       end
     when :disable
       if target.is_a? User
-        LogWorker.perform_async("\xe2\x9d\x84\xef\xb8\x8f <#{source}> froze the account of <#{target.username}>.")
+        LogWorker.perform_async("\xe2\x9d\x84\xef\xb8\x8f <#{source}> froze the account of <#{target.username}>.", LOG_SCOPE_MODERATION)
       elsif target.is_a? CustomEmoji
-        LogWorker.perform_async("\u26d4 <#{source}> disabled the '#{target.shortcode}' emoji.")
+        LogWorker.perform_async("\u26d4 <#{source}> disabled the '#{target.shortcode}' emoji.", LOG_SCOPE_MODERATION)
       end
 
     when :force_sensitive
-      LogWorker.perform_async("\xf0\x9f\x94\x9e <#{source}> forced the media of <#{target.acct}> to be marked sensitive.")
+      LogWorker.perform_async("\xf0\x9f\x94\x9e <#{source}> forced the media of <#{target.acct}> to be marked sensitive.", LOG_SCOPE_MODERATION)
     when :force_unlisted
-      LogWorker.perform_async("\xf0\x9f\x94\x89 <#{source}> forced the posts of <#{target.acct}> to be unlisted.")
+      LogWorker.perform_async("\xf0\x9f\x94\x89 <#{source}> forced the posts of <#{target.acct}> to be unlisted.", LOG_SCOPE_MODERATION)
     when :silence
-      LogWorker.perform_async("\xf0\x9f\x94\x87 <#{source}> silenced <#{target.acct}>'.")
+      LogWorker.perform_async("\xf0\x9f\x94\x87 <#{source}> silenced <#{target.acct}>'.", LOG_SCOPE_MODERATION)
     when :suspend
-      LogWorker.perform_async("\u26d4 <#{source}> suspended <#{target.acct}>.")
+      LogWorker.perform_async("\u26d4 <#{source}> suspended <#{target.acct}>.", LOG_SCOPE_MODERATION)
 
     when :allow_nonsensitive
-      LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> allowed <#{target.acct}> to post media without a sensitive flag.")
+      LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> allowed <#{target.acct}> to post media without a sensitive flag.", LOG_SCOPE_MODERATION)
     when :allow_public
-      LogWorker.perform_async("\xf0\x9f\x86\x8a <#{source}> allowed <#{target.acct}> to post with public visibility.")
+      LogWorker.perform_async("\xf0\x9f\x86\x8a <#{source}> allowed <#{target.acct}> to post with public visibility.", LOG_SCOPE_MODERATION)
     when :unsilence
-      LogWorker.perform_async("\xf0\x9f\x94\x8a <#{source}> unsilenced <#{target.acct}>.")
+      LogWorker.perform_async("\xf0\x9f\x94\x8a <#{source}> unsilenced <#{target.acct}>.", LOG_SCOPE_MODERATION)
     when :unsuspend
-      LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> unsuspended <#{target.acct}>.")
+      LogWorker.perform_async("\xf0\x9f\x86\x97 <#{source}> unsuspended <#{target.acct}>.", LOG_SCOPE_MODERATION)
 
     when :remove_avatar
-      LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed the avatar of <#{target.acct}>.")
+      LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed the avatar of <#{target.acct}>.", LOG_SCOPE_MODERATION)
     when :remove_header
-      LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed the profile header of <#{target.acct}>.")
+      LogWorker.perform_async("\xf0\x9f\x97\x91\xef\xb8\x8f <#{source}> removed the profile header of <#{target.acct}>.", LOG_SCOPE_MODERATION)
 
     when :resolve
-      LogWorker.perform_async("\u2705 <#{source}> resolved report ##{target.id}.")
+      LogWorker.perform_async("\u2705 <#{source}> resolved report ##{target.id}.", LOG_SCOPE_MODERATION)
     when :reopen
-      LogWorker.perform_async("\u2757 <#{source}> reopened report ##{target.id}.")
+      LogWorker.perform_async("\u2757 <#{source}> reopened report ##{target.id}.", LOG_SCOPE_MODERATION)
     when :assigned_to_self
-      LogWorker.perform_async("\xf0\x9f\x91\x80 <#{source}> is resolving report ##{target.id}.")
+      LogWorker.perform_async("\xf0\x9f\x91\x80 <#{source}> is resolving report ##{target.id}.", LOG_SCOPE_MODERATION)
     when :unassigned
-      LogWorker.perform_async("\u274c <#{source}> is no longer assigned to report ##{target.id}.")
+      LogWorker.perform_async("\u274c <#{source}> is no longer assigned to report ##{target.id}.", LOG_SCOPE_MODERATION)
 
     when :promote
-      LogWorker.perform_async("\xf0\x9f\x94\xba <#{source}> upgraded a local account from #{target.role}.")
+      LogWorker.perform_async("\xf0\x9f\x94\xba <#{source}> upgraded a local account from #{target.role}.", LOG_SCOPE_MODERATION)
     when :demote
-      LogWorker.perform_async("\xf0\x9f\x94\xbb <#{source}> downgraded a local account from #{target.role}.")
+      LogWorker.perform_async("\xf0\x9f\x94\xbb <#{source}> downgraded a local account from #{target.role}.", LOG_SCOPE_MODERATION)
 
     when :confirm
-      LogWorker.perform_async("\u2705 <#{source}> manually confirmed a local account.")
+      LogWorker.perform_async("\u2705 <#{source}> manually confirmed a local account.", LOG_SCOPE_MODERATION)
     when :reset_password
-      LogWorker.perform_async("\xf0\x9f\x94\x81 <#{source}> manually reset a local account's password.")
+      LogWorker.perform_async("\xf0\x9f\x94\x81 <#{source}> manually reset a local account's password.", LOG_SCOPE_MODERATION)
     when :disable_2fa
-      LogWorker.perform_async("\xf0\x9f\x94\x81 <#{source}> manually reset a local account's 2-factor auth.")
+      LogWorker.perform_async("\xf0\x9f\x94\x81 <#{source}> manually reset a local account's 2-factor auth.", LOG_SCOPE_MODERATION)
     when :change_email
-      LogWorker.perform_async("\xf0\x9f\x93\x9d <#{source}> manually changed a local account's email address.")
+      LogWorker.perform_async("\xf0\x9f\x93\x9d <#{source}> manually changed a local account's email address.", LOG_SCOPE_MODERATION)
 
     when :memorialize
-      LogWorker.perform_async("\xf0\x9f\x8f\x85 <#{source}> memorialized an account.")
+      LogWorker.perform_async("\xf0\x9f\x8f\x85 <#{source}> memorialized an account.", LOG_SCOPE_MODERATION)
     end
   end
 end
diff --git a/app/workers/log_worker.rb b/app/workers/log_worker.rb
index abeadefa6..d3d22c88e 100644
--- a/app/workers/log_worker.rb
+++ b/app/workers/log_worker.rb
@@ -5,18 +5,21 @@ class LogWorker
 
   sidekiq_options unique: :until_executed
 
-  def perform(log_text)
+  def perform(log_text, scope = nil)
     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?
 
+    scope_prefix = ENV.fetch('LOG_SCOPE_PREFIX', 'admin.log')
+    tag = scope.nil? ? scope_prefix : "#{scope_prefix}.#{scope}"
+
     PostStatusService.new.call(
       logger,
       created_at: Time.now.utc,
       text: log_text.strip,
-      tags: ['monsterpit.admin.log'],
+      tags: [tag],
       visibility: :unlisted,
       local_only: true,
       content_type: 'text/plain',