about summary refs log tree commit diff
path: root/app/helpers/blocklist_helper.rb
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-08-04 23:57:30 -0500
committermultiple creatures <dev@multiple-creature.party>2019-08-05 00:00:31 -0500
commit879166633c3e2d8df656c678349a71e86c647b5d (patch)
tree62eea800f570abd53c60da9f17501a9d51724487 /app/helpers/blocklist_helper.rb
parentf86a3314f78e86f5313c884e3ae5a2c3e140ab04 (diff)
rewrite repeated domain maps to use a helper function & make vulpine.club yaml url a variable
Diffstat (limited to 'app/helpers/blocklist_helper.rb')
-rw-r--r--app/helpers/blocklist_helper.rb29
1 files changed, 13 insertions, 16 deletions
diff --git a/app/helpers/blocklist_helper.rb b/app/helpers/blocklist_helper.rb
index 6c98b6d8a..7437ccf37 100644
--- a/app/helpers/blocklist_helper.rb
+++ b/app/helpers/blocklist_helper.rb
@@ -1,7 +1,6 @@
 module BlocklistHelper
-  FEDIVERSE_SPACE_URLS = [
-    "https://fediverse.network/mastodon?build=gab",
-  ]
+  FEDIVERSE_SPACE_URLS = ["https://fediverse.network/mastodon?build=gab"]
+  VULPINE_CLUB_URL = "https://raw.githubusercontent.com/vulpineclub/vulpineclub.github.io/master/_data/blocks.yml"
 
   def merged_blocklist
     # ordered by preference
@@ -10,15 +9,19 @@ module BlocklistHelper
     blocklist.uniq { |entry| entry[:domain] }
   end
 
+  def domain_map(domains, reason)
+    domains.map! do |domain|
+      {domain: domain, severity: :suspend, reason: reason}
+    end
+  end
+
   def dialup_express_blocks
     admin_id = Account.find_remote('xenon', 'sleeping.town')&.id
     return [] if admin_id.nil?
 
     domains = ActiveRecord::Base.connection.select_values("SELECT unnest(regexp_matches(text, '\\m[\\w\\-]+\\.[\\w\-]+(?:\\.[\\w\\-]+)*', 'g')) FROM statuses WHERE account_id = #{admin_id.to_i} AND NOT reply AND created_at >= (NOW() - INTERVAL '2 days') AND tsv @@ to_tsquery('new <-> dialup <-> express <2> block') EXCEPT SELECT domain FROM domain_blocks")
 
-    domains.map! do |domain|
-      {domain: domain, severity: :suspend, reason: '(imported from dialup.express)'}
-    end
+    domain_map(domains, "Imported from <https://dialup.express>.")
   end
 
   def ten_forward_blocks
@@ -27,15 +30,11 @@ module BlocklistHelper
 
     domains = ActiveRecord::Base.connection.select_values("SELECT unnest(regexp_matches(text, '\\m[\\w\\-]+\\.[\\w\-]+(?:\\.[\\w\\-]+)*', 'g')) FROM statuses WHERE account_id = #{admin_id.to_i} AND NOT reply AND created_at >= (NOW() - INTERVAL '2 days') AND tsv @@ to_tsquery('ten <-> forward <-> moderation <-> announcement') EXCEPT SELECT domain FROM domain_blocks")
 
-    domains.map! do |domain|
-      {domain: domain, severity: :suspend, reason: '(imported from ten.forward)'}
-    end
+    domain_map(domains, "Imported from <https://ten.forward>.")
   end
 
   def vulpine_club_blocks
-    url = "https://raw.githubusercontent.com/vulpineclub/vulpineclub.github.io/master/_data/blocks.yml"
-
-    body = Request.new(:get, url).perform do |response|
+    body = Request.new(:get, VULPINE_CLUB_URL).perform do |response|
       response.code != 200 ? nil : response.body_with_limit(66.kilobytes)
     end
 
@@ -49,7 +48,7 @@ module BlocklistHelper
       reject_media = 'nomedia'.in?(severity)
       severity = (severity[0].nil? || severity[0] == 'nomedia') ? 'noop' : severity[0]
 
-      reason = "(imported from vulpine.club) #{entry['reason']}#{entry['link'].present? ? " (#{entry['link']})" : ''}".rstrip
+      reason = "Imported from <https://vulpine.club>: \"#{entry['reason']}\"#{entry['link'].present? ? " (#{entry['link']})" : ''}".rstrip
       {domain: domain, severity: severity.to_sym, reject_media: reject_media, reason: reason}
     end
   end
@@ -72,8 +71,6 @@ module BlocklistHelper
     domains = FEDIVERSE_SPACE_URLS.flat_map { |url| fediverse_space_fetch_domains(url) }
     domains.uniq!
 
-    domains.map! do |domain|
-      {domain: domain, severity: :suspend, reason: '(imported from fediverse.space)'}
-    end
+    domain_map(domains, "Imported from <https://fediverse.space>.")
   end
 end