diff --git a/plugins/Mute/MutePlugin.py b/plugins/Mute/MutePlugin.py
deleted file mode 100644
index dfae5dfa..00000000
--- a/plugins/Mute/MutePlugin.py
+++ /dev/null
@@ -1,160 +0,0 @@
-import time
-import json
-import os
-import re
-
-from Plugin import PluginManager
-from Translate import Translate
-from Config import config
-from util import helper
-
-
-if os.path.isfile("%s/mutes.json" % config.data_dir):
- try:
- data = json.load(open("%s/mutes.json" % config.data_dir))
- mutes = data.get("mutes", {})
- site_blacklist = data.get("site_blacklist", {})
- except Exception as err:
- mutes = {}
- site_blacklist = {}
-else:
- open("%s/mutes.json" % config.data_dir, "w").write('{"mutes": {}, "site_blacklist": {}}')
- mutes = {}
- site_blacklist = {}
-
-if "_" not in locals():
- _ = Translate("plugins/Mute/languages/")
-
-
-@PluginManager.registerTo("UiWebsocket")
-class UiWebsocketPlugin(object):
- # Search and remove or readd files of an user
- def changeDb(self, auth_address, action):
- self.log.debug("Mute action %s on user %s" % (action, auth_address))
- res = self.site.content_manager.contents.db.execute(
- "SELECT * FROM content LEFT JOIN site USING (site_id) WHERE inner_path LIKE :inner_path",
- {"inner_path": "%%/%s/%%" % auth_address}
- )
- for row in res:
- site = self.server.sites.get(row["address"])
- if not site:
- continue
- dir_inner_path = helper.getDirname(row["inner_path"])
- for file_name in site.storage.walk(dir_inner_path):
- if action == "remove":
- site.storage.onUpdated(dir_inner_path + file_name, False)
- else:
- site.storage.onUpdated(dir_inner_path + file_name)
- site.onFileDone(dir_inner_path + file_name)
-
- def cbMuteAdd(self, to, auth_address, cert_user_id, reason):
- mutes[auth_address] = {"cert_user_id": cert_user_id, "reason": reason, "source": self.site.address, "date_added": time.time()}
- self.saveMutes()
- self.changeDb(auth_address, "remove")
- self.response(to, "ok")
-
- def actionMuteAdd(self, to, auth_address, cert_user_id, reason):
- if "ADMIN" in self.getPermissions(to):
- self.cbMuteAdd(to, auth_address, cert_user_id, reason)
- else:
- self.cmd(
- "confirm",
- [_["Hide all content from %s?"] % cert_user_id, _["Mute"]],
- lambda (res): self.cbMuteAdd(to, auth_address, cert_user_id, reason)
- )
-
- def cbMuteRemove(self, to, auth_address):
- del mutes[auth_address]
- self.saveMutes()
- self.changeDb(auth_address, "load")
- self.response(to, "ok")
-
- def actionMuteRemove(self, to, auth_address):
- if "ADMIN" in self.getPermissions(to):
- self.cbMuteRemove(to, auth_address)
- else:
- self.cmd(
- "confirm",
- [_["Unmute %s?"] % mutes[auth_address]["cert_user_id"], _["Unmute"]],
- lambda (res): self.cbMuteRemove(to, auth_address)
- )
-
- def actionMuteList(self, to):
- if "ADMIN" in self.getPermissions(to):
- self.response(to, mutes)
- else:
- return self.response(to, {"error": "Only ADMIN sites can list mutes"})
-
- # Blacklist
- def actionBlacklistAdd(self, to, site_address, reason=None):
- if "ADMIN" not in self.getPermissions(to):
- return self.response(to, {"error": "Forbidden, only admin sites can add to blacklist"})
- site_blacklist[site_address] = {"date_added": time.time(), "reason": reason}
- self.saveMutes()
- self.response(to, "ok")
-
- def actionBlacklistRemove(self, to, site_address):
- if "ADMIN" not in self.getPermissions(to):
- return self.response(to, {"error": "Forbidden, only admin sites can remove from blacklist"})
- del site_blacklist[site_address]
- self.saveMutes()
- self.response(to, "ok")
-
- def actionBlacklistList(self, to):
- if "ADMIN" in self.getPermissions(to):
- self.response(to, site_blacklist)
- else:
- return self.response(to, {"error": "Only ADMIN sites can list blacklists"})
-
- # Write mutes and blacklist to json file
- def saveMutes(self):
- helper.atomicWrite("%s/mutes.json" % config.data_dir, json.dumps({"mutes": mutes, "site_blacklist": site_blacklist}, indent=2, sort_keys=True))
-
-
-@PluginManager.registerTo("SiteStorage")
-class SiteStoragePlugin(object):
- def updateDbFile(self, inner_path, file=None, cur=None):
- if file is not False: # File deletion always allowed
- # Find for bitcoin addresses in file path
- matches = re.findall("/(1[A-Za-z0-9]{26,35})/", inner_path)
- # Check if any of the adresses are in the mute list
- for auth_address in matches:
- if auth_address in mutes:
- self.log.debug("Mute match: %s, ignoring %s" % (auth_address, inner_path))
- return False
-
- return super(SiteStoragePlugin, self).updateDbFile(inner_path, file=file, cur=cur)
-
-
-@PluginManager.registerTo("UiRequest")
-class UiRequestPlugin(object):
- def actionWrapper(self, path, extra_headers=None):
- match = re.match("/(?P
[A-Za-z0-9\._-]+)(?P/.*|$)", path)
- if not match:
- return False
- address = match.group("address")
-
- if self.server.site_manager.get(address): # Site already exists
- return super(UiRequestPlugin, self).actionWrapper(path, extra_headers)
-
- if self.server.site_manager.isDomain(address):
- address = self.server.site_manager.resolveDomain(address)
-
- if address in site_blacklist:
- site = self.server.site_manager.get(config.homepage)
- if not extra_headers:
- extra_headers = {}
- self.sendHeader(extra_headers=extra_headers)
- return iter([super(UiRequestPlugin, self).renderWrapper(
- site, path, "uimedia/plugins/mute/blacklisted.html?address=" + address,
- "Blacklisted site", extra_headers, show_loadingscreen=False
- )])
- else:
- return super(UiRequestPlugin, self).actionWrapper(path, extra_headers)
-
- def actionUiMedia(self, path, *args, **kwargs):
- if path.startswith("/uimedia/plugins/mute/"):
- file_path = path.replace("/uimedia/plugins/mute/", "plugins/Mute/media/")
- return self.actionFile(file_path)
- else:
- return super(UiRequestPlugin, self).actionUiMedia(path)
diff --git a/plugins/Mute/__init__.py b/plugins/Mute/__init__.py
deleted file mode 100644
index f9d1081c..00000000
--- a/plugins/Mute/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-import MutePlugin
\ No newline at end of file
diff --git a/plugins/Mute/languages/es.json b/plugins/Mute/languages/es.json
deleted file mode 100644
index 732ccfd8..00000000
--- a/plugins/Mute/languages/es.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Hide all content from %s?": "Esconder todo el contenido de %s?",
- "Mute": "Silenciar",
- "Unmute %s?": "Mostrar todo el contenido de %s?",
- "Unmute": "Reactivar"
-}
diff --git a/plugins/Mute/languages/hu.json b/plugins/Mute/languages/hu.json
deleted file mode 100644
index e3332db8..00000000
--- a/plugins/Mute/languages/hu.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Hide all content from %s?": "%s tartalmaniak elrejtése?",
- "Mute": "Elnémítás",
- "Unmute %s?": "%s tartalmaniak megjelenítése?",
- "Unmute": "Némítás visszavonása"
-}
diff --git a/plugins/Mute/languages/it.json b/plugins/Mute/languages/it.json
deleted file mode 100644
index b0246918..00000000
--- a/plugins/Mute/languages/it.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Hide all content from %s?": "%s Vuoi nascondere i contenuti di questo utente ?",
- "Mute": "Attiva Silenzia",
- "Unmute %s?": "%s Vuoi mostrare i contenuti di questo utente ?",
- "Unmute": "Disattiva Silenzia"
-}
diff --git a/plugins/Mute/languages/pt-br.json b/plugins/Mute/languages/pt-br.json
deleted file mode 100644
index fd858678..00000000
--- a/plugins/Mute/languages/pt-br.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Hide all content from %s?": "Esconder todo conteúdo de %s?",
- "Mute": "Ativar mudo",
- "Unmute %s?": "Mostrar o contéudo de %s?",
- "Unmute": "Desativar mudo"
-}
diff --git a/plugins/Mute/languages/zh-tw.json b/plugins/Mute/languages/zh-tw.json
deleted file mode 100644
index 3bdb5fc0..00000000
--- a/plugins/Mute/languages/zh-tw.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Hide all content from %s?": "屏蔽 %s 的所有內容?",
- "Mute": "屏蔽",
- "Unmute %s?": "對 %s 解除屏蔽?",
- "Unmute": "解除屏蔽"
-}
diff --git a/plugins/Mute/languages/zh.json b/plugins/Mute/languages/zh.json
deleted file mode 100644
index beea7e77..00000000
--- a/plugins/Mute/languages/zh.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "Hide all content from %s?": "屏蔽 %s 的所有内容?",
- "Mute": "屏蔽",
- "Unmute %s?": "对 %s 解除屏蔽?",
- "Unmute": "解除屏蔽"
-}
diff --git a/plugins/Mute/media/blacklisted.html b/plugins/Mute/media/blacklisted.html
deleted file mode 100644
index 5d2bf80c..00000000
--- a/plugins/Mute/media/blacklisted.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
Site blocked
-
This site is on your blacklist:
-
-
Too much image
-
on 2015-01-25 12:32:11
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/plugins/Mute/media/js/ZeroFrame.js b/plugins/Mute/media/js/ZeroFrame.js
deleted file mode 100644
index f3e2214b..00000000
--- a/plugins/Mute/media/js/ZeroFrame.js
+++ /dev/null
@@ -1,93 +0,0 @@
-const CMD_INNER_READY = 'innerReady'
-const CMD_RESPONSE = 'response'
-const CMD_WRAPPER_READY = 'wrapperReady'
-const CMD_PING = 'ping'
-const CMD_PONG = 'pong'
-const CMD_WRAPPER_OPENED_WEBSOCKET = 'wrapperOpenedWebsocket'
-const CMD_WRAPPER_CLOSE_WEBSOCKET = 'wrapperClosedWebsocket'
-
-class ZeroFrame {
- constructor(url) {
- this.url = url
- this.waiting_cb = {}
- this.wrapper_nonce = document.location.href.replace(/.*wrapper_nonce=([A-Za-z0-9]+).*/, "$1")
- this.connect()
- this.next_message_id = 1
- this.init()
- }
-
- init() {
- return this
- }
-
- connect() {
- this.target = window.parent
- window.addEventListener('message', e => this.onMessage(e), false)
- this.cmd(CMD_INNER_READY)
- }
-
- onMessage(e) {
- let message = e.data
- let cmd = message.cmd
- if (cmd === CMD_RESPONSE) {
- if (this.waiting_cb[message.to] !== undefined) {
- this.waiting_cb[message.to](message.result)
- }
- else {
- this.log("Websocket callback not found:", message)
- }
- } else if (cmd === CMD_WRAPPER_READY) {
- this.cmd(CMD_INNER_READY)
- } else if (cmd === CMD_PING) {
- this.response(message.id, CMD_PONG)
- } else if (cmd === CMD_WRAPPER_OPENED_WEBSOCKET) {
- this.onOpenWebsocket()
- } else if (cmd === CMD_WRAPPER_CLOSE_WEBSOCKET) {
- this.onCloseWebsocket()
- } else {
- this.onRequest(cmd, message)
- }
- }
-
- onRequest(cmd, message) {
- this.log("Unknown request", message)
- }
-
- response(to, result) {
- this.send({
- cmd: CMD_RESPONSE,
- to: to,
- result: result
- })
- }
-
- cmd(cmd, params={}, cb=null) {
- this.send({
- cmd: cmd,
- params: params
- }, cb)
- }
-
- send(message, cb=null) {
- message.wrapper_nonce = this.wrapper_nonce
- message.id = this.next_message_id
- this.next_message_id++
- this.target.postMessage(message, '*')
- if (cb) {
- this.waiting_cb[message.id] = cb
- }
- }
-
- log(...args) {
- console.log.apply(console, ['[ZeroFrame]'].concat(args))
- }
-
- onOpenWebsocket() {
- this.log('Websocket open')
- }
-
- onCloseWebsocket() {
- this.log('Websocket close')
- }
-}
-