summaryrefslogtreecommitdiffstats
path: root/module/plugins/hooks/UpdateManager.py
diff options
context:
space:
mode:
authorGravatar Stefano <l.stickell@yahoo.it> 2014-05-07 15:22:19 +0200
committerGravatar Stefano <l.stickell@yahoo.it> 2014-05-07 15:22:19 +0200
commit0eb54572e9c600d1ec88b41de8f901899533b4e6 (patch)
treea6e0181af99195ed531e3e7ae8b23738843734d9 /module/plugins/hooks/UpdateManager.py
parentFixed MegaDebridEu file names (diff)
downloadpyload-0eb54572e9c600d1ec88b41de8f901899533b4e6.tar.xz
Update Manager updated to use the new platform
+ blacklist support
Diffstat (limited to 'module/plugins/hooks/UpdateManager.py')
-rw-r--r--module/plugins/hooks/UpdateManager.py58
1 files changed, 28 insertions, 30 deletions
diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py
index 11e93c04d..afac7aa3a 100644
--- a/module/plugins/hooks/UpdateManager.py
+++ b/module/plugins/hooks/UpdateManager.py
@@ -1,26 +1,9 @@
# -*- coding: utf-8 -*-
-"""
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License,
- or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, see <http://www.gnu.org/licenses/>.
-
- @author: RaNaN
-"""
-
import sys
import re
-from os import stat
-from os.path import join, exists
+from os import remove, stat
+from os.path import join, isfile
from time import time
from module.ConfigParser import IGNORE
@@ -30,15 +13,15 @@ from module.plugins.Hook import threaded, Expose, Hook
class UpdateManager(Hook):
__name__ = "UpdateManager"
- __version__ = "0.15"
+ __version__ = "0.16"
__description__ = """Checks for updates"""
__config__ = [("activated", "bool", "Activated", True),
("interval", "int", "Check interval in minutes", 480),
("debug", "bool", "Check for plugin changes when in debug mode", False)]
- __author_name__ = "RaNaN"
- __author_mail__ = "ranan@pyload.org"
+ __author_name__ = ("RaNaN", "stickell")
+ __author_mail__ = ("ranan@pyload.org", "l.stickell@yahoo.it")
- URL = "http://get.pyload.org/check2/%s/"
+ URL = "http://updatemanager-spyload.rhcloud.com"
MIN_TIME = 3 * 60 * 60 # 3h minimum check interval
@property
@@ -64,7 +47,6 @@ class UpdateManager(Hook):
@threaded
def periodical(self):
-
updates = self.checkForUpdate()
if updates:
self.checkPlugins(updates)
@@ -85,10 +67,9 @@ class UpdateManager(Hook):
def checkForUpdate(self):
"""checks if an update is available, return result"""
-
try:
if self.version == "None": # No updated known
- version_check = getURL(self.URL % self.core.api.getServerVersion()).splitlines()
+ version_check = getURL(self.URL, get={'v': self.core.api.getServerVersion()}).splitlines()
self.version = version_check[0]
# Still no updates, plugins will be checked
@@ -99,7 +80,6 @@ class UpdateManager(Hook):
self.info["pyload"] = True
self.logInfo(_("*** New pyLoad Version %s available ***") % self.version)
self.logInfo(_("*** Get it here: http://pyload.org/download ***"))
-
except:
self.logWarning(_("Not able to connect server for updates"))
@@ -117,7 +97,12 @@ class UpdateManager(Hook):
vre = re.compile(r'__version__.*=.*("|\')([0-9.]+)')
url = updates[0]
schema = updates[1].split("|")
- updates = updates[2:]
+ if 'BLACKLIST' in updates:
+ blacklist = updates[updates.index('BLACKLIST') + 1:]
+ updates = updates[2:updates.index('BLACKLIST')]
+ else:
+ blacklist = None
+ updates = updates[2:]
for plugin in updates:
info = dict(zip(schema, plugin.split("|")))
@@ -169,10 +154,23 @@ class UpdateManager(Hook):
reloads.append((prefix, name))
+ self.executeBlacklist(blacklist)
+
self.reloaded = self.core.pluginManager.reloadPlugins(reloads)
- def checkChanges(self):
+ def executeBlacklist(self, blacklist):
+ for b in blacklist:
+ type, name = b.split('|')
+ if isfile(join("userplugins", type, name)):
+ self.logInfo(_("Removing blacklisted plugin %(type)s|%(name)s") % {
+ "type": type,
+ "name": name
+ })
+ remove(join("userplugins", type, name))
+ if isfile(join("userplugins", type, name.replace('.py', '.pyc'))):
+ remove(join("userplugins", type, name.replace('.py', '.pyc')))
+ def checkChanges(self):
if self.last_check + max(self.getConfig("interval") * 60, self.MIN_TIME) < time():
self.old_periodical()
self.last_check = time()
@@ -188,7 +186,7 @@ class UpdateManager(Hook):
id = (type, name)
if type in self.core.pluginManager.plugins:
f = m.__file__.replace(".pyc", ".py")
- if not exists(f):
+ if not isfile(f):
continue
mtime = stat(f).st_mtime