From 7f86a310ef666e557a798b0a76bc21c3bfcf4832 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Wed, 3 Feb 2021 21:45:22 +0530 Subject: [PATCH] FEATURE: check `blocked_onebox_domains` setting for inline oneboxes (#11944) --- lib/inline_oneboxer.rb | 8 +++++--- spec/components/inline_oneboxer_spec.rb | 6 ++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/inline_oneboxer.rb b/lib/inline_oneboxer.rb index 303a2c47d0b..019da0826d4 100644 --- a/lib/inline_oneboxer.rb +++ b/lib/inline_oneboxer.rb @@ -50,9 +50,10 @@ class InlineOneboxer end always_allow = SiteSetting.enable_inline_onebox_on_all_domains - domains = SiteSetting.allowed_inline_onebox_domains&.split('|') unless always_allow + allowed_domains = SiteSetting.allowed_inline_onebox_domains&.split('|') unless always_allow + blocked_domains = SiteSetting.blocked_onebox_domains&.split('|') - if always_allow || domains + if always_allow || allowed_domains uri = begin URI(url) rescue URI::Error @@ -60,7 +61,8 @@ class InlineOneboxer if uri.present? && uri.hostname.present? && - (always_allow || domains.include?(uri.hostname)) + (always_allow || allowed_domains.include?(uri.hostname)) && + !blocked_domains.include?(uri.hostname) title = RetrieveTitle.crawl(url) title = nil if title && title.length < MIN_TITLE_LENGTH return onebox_for(url, title, opts) diff --git a/spec/components/inline_oneboxer_spec.rb b/spec/components/inline_oneboxer_spec.rb index fc4c3288350..761e1c00d8f 100644 --- a/spec/components/inline_oneboxer_spec.rb +++ b/spec/components/inline_oneboxer_spec.rb @@ -153,6 +153,12 @@ describe InlineOneboxer do expect(onebox).to be_blank end + it "will not crawl domains that are blocked" do + SiteSetting.blocked_onebox_domains = "eviltrout.com" + onebox = InlineOneboxer.lookup("https://eviltrout.com", skip_cache: true) + expect(onebox).to be_blank + end + it "will crawl anything if allowed to" do SiteSetting.enable_inline_onebox_on_all_domains = true