From 43c366d2fb1860711bb08c1869a9749da600ea5f Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sat, 28 Sep 2019 17:02:27 +0200 Subject: [PATCH] Restrict blocked site addition when using mergerSiteAdd --- plugins/ContentFilter/ContentFilterPlugin.py | 7 +++++++ plugins/ContentFilter/ContentFilterStorage.py | 6 ++++++ plugins/MergerSite/MergerSitePlugin.py | 7 +++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/plugins/ContentFilter/ContentFilterPlugin.py b/plugins/ContentFilter/ContentFilterPlugin.py index f46321d4..da1054b1 100644 --- a/plugins/ContentFilter/ContentFilterPlugin.py +++ b/plugins/ContentFilter/ContentFilterPlugin.py @@ -25,6 +25,13 @@ class SiteManagerPlugin(object): super(SiteManagerPlugin, self).load(*args, **kwargs) filter_storage = ContentFilterStorage(site_manager=self) + def add(self, address, *args, **kwargs): + if filter_storage.isSiteblocked(address): + details = filter_storage.getSiteblockDetails(address) + raise Exception("Site blocked: %s" % html.escape(details.get("reason", "unknown reason"))) + else: + return super(SiteManagerPlugin, self).add(address, *args, **kwargs) + @PluginManager.registerTo("UiWebsocket") class UiWebsocketPlugin(object): diff --git a/plugins/ContentFilter/ContentFilterStorage.py b/plugins/ContentFilter/ContentFilterStorage.py index 3df0b435..2215ccca 100644 --- a/plugins/ContentFilter/ContentFilterStorage.py +++ b/plugins/ContentFilter/ContentFilterStorage.py @@ -120,6 +120,12 @@ class ContentFilterStorage(object): else: return False + def getSiteblockDetails(self, address): + details = self.file_content["siteblocks"].get(address) + if not details: + details = self.include_filters["siteblocks"].get(address) + return details + # Search and remove or readd files of an user def changeDbs(self, auth_address, action): self.log.debug("Mute action %s on user %s" % (action, auth_address)) diff --git a/plugins/MergerSite/MergerSitePlugin.py b/plugins/MergerSite/MergerSitePlugin.py index ae2b1484..ca2ba31e 100644 --- a/plugins/MergerSite/MergerSitePlugin.py +++ b/plugins/MergerSite/MergerSitePlugin.py @@ -79,8 +79,11 @@ class UiWebsocketPlugin(object): def cbMergerSiteAdd(self, to, addresses): added = 0 for address in addresses: - added += 1 - site_manager.need(address) + try: + site_manager.need(address) + added += 1 + except Exception as err: + self.cmd("notification", ["error", _["Adding %s failed: %s"] % (address, err)]) if added: self.cmd("notification", ["done", _["Added %s new site"] % added, 5000]) RateLimit.called(self.site.address + "-MergerSiteAdd")