about summary refs log tree commit diff
path: root/app/workers/scheduler
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-08-08 09:37:34 -0500
committermultiple creatures <dev@multiple-creature.party>2019-08-08 09:37:34 -0500
commitd019e55b7bc496d3c4d942fb4ffe65bb7e149249 (patch)
treeecf13a088a767f712a0b7149cd39e14353f3dc34 /app/workers/scheduler
parentd8a1e472c2218fa2e71eef890ce89336d315c2ae (diff)
janitor - option to export `activityrelay` config
Diffstat (limited to 'app/workers/scheduler')
-rw-r--r--app/workers/scheduler/janitor_scheduler.rb29
1 files changed, 28 insertions, 1 deletions
diff --git a/app/workers/scheduler/janitor_scheduler.rb b/app/workers/scheduler/janitor_scheduler.rb
index eb4192dd5..25a67a9a3 100644
--- a/app/workers/scheduler/janitor_scheduler.rb
+++ b/app/workers/scheduler/janitor_scheduler.rb
@@ -23,6 +23,7 @@ class Scheduler::JanitorScheduler
     silence_markov!
     import_blocklists!
     export_suspensions!
+    export_activityrelay_config!
   end
 
   private
@@ -72,6 +73,28 @@ class Scheduler::JanitorScheduler
     end
   end
 
+  def export_activityrelay_config!
+    outfile = ENV.fetch('ACTIVITYRELAY_OUTPUT', '')
+    return if outfile.blank?
+    return unless File.file?(outfile)
+    File.open(outfile, 'w:UTF-8') do |file|
+      formatted_allowlist = allowed_domains.uniq.map { |d| "  - '#{d}'" }
+      formatted_blocklist = DomainBlock.suspend.pluck(:domain).map { |d| "  - '#{d}'" }
+
+      file.puts('db: relay.jsonld')
+      file.puts("listen: #{ENV.fetch('ACTIVITYRELAY_LISTEN', '127.0.0.1')}")
+      file.puts("port: #{ENV.fetch('ACTIVITYRELAY_PORT', '9001')}")
+      file.puts("note: \"#{ENV.fetch('ACTIVITYRELAY_NOTE', "#{Setting.site_title} relay")}\"")
+      file.puts('ap:')
+      file.puts("  host: '#{ENV.fetch('ACTIVITYRELAY_HOST', "relay.#{Rails.configuration.x.local_domain}")}'")
+      file.puts('  blocked_instances:')
+      file.puts(formatted_blocklist)
+      file.puts("  whitelist_enabled: #{ENV.fetch('ACTIVITYRELAY_ALLOWLIST', 'true')}")
+      file.puts('  whitelist:')
+      file.puts(formatted_allowlist)
+    end
+  end
+
 
   def spammer_accounts
     spammer_ids = spammer_account_ids
@@ -93,7 +116,11 @@ class Scheduler::JanitorScheduler
   end
 
   def excluded_domains
-    existing_policy_domains | domains_from_account_ids | excluded_from_env('DOMAINS')
+    existing_policy_domains | allowed_domains
+  end
+
+  def allowed_domains
+    domains_from_account_ids | excluded_from_env('DOMAINS')
   end