summaryrefslogtreecommitdiffstats
path: root/module/plugins/hooks
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2010-08-28 16:42:00 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2010-08-28 16:42:00 +0200
commit66e87e5b316b0fa813c8446402944dde770e556e (patch)
treed99fcfdba0f924360b319594f31d7ff98560561d /module/plugins/hooks
parentso.biz fix (diff)
downloadpyload-66e87e5b316b0fa813c8446402944dde770e556e.tar.xz
preparation for plugin updates
Diffstat (limited to 'module/plugins/hooks')
-rw-r--r--module/plugins/hooks/UpdateManager.py62
1 files changed, 50 insertions, 12 deletions
diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py
index 2981df9a0..8e2c4368b 100644
--- a/module/plugins/hooks/UpdateManager.py
+++ b/module/plugins/hooks/UpdateManager.py
@@ -25,35 +25,73 @@ class UpdateManager(Hook):
__name__ = "UpdateManager"
__version__ = "0.1"
__description__ = """checks for updates"""
- __config__ = [ ("activated", "bool", "Activated" , "True"),
- ("interval", "int", "Check interval in minutes" , "180")]
+ __config__ = [("activated", "bool", "Activated", "True"),
+ ("interval", "int", "Check interval in minutes", "180")]
__author_name__ = ("RaNaN")
__author_mail__ = ("ranan@pyload.org")
def setup(self):
self.interval = self.getConfig("interval") * 60
-
+ self.updated = False
+
def coreReady(self):
- #@TODO check plugins, restart, and other stuff
+ #@TODO check plugins, restart, and other stuff
pass
-
+
def periodical(self):
- self.checkForUpdate()
-
-
+ update = self.checkForUpdate()
+ if self.updated:
+ self.log.info(_("*** Plugins were updated, please restart pyLoad ***"))
+ if not update:
+ self.checkPlugins()
+
+
def checkForUpdate(self):
""" checks if an update is available"""
-
+
try:
- version_check = getURL("http://get.pyload.org/check/%s/" % self.core.server_methods.get_server_version() )
+ version_check = getURL("http://get.pyload.org/check/%s/" % self.core.server_methods.get_server_version())
if version_check == "":
self.log.info(_("No Updates for pyLoad"))
return False
else:
self.log.info(_("*** New pyLoad Version %s available ***") % version_check)
- self.log.info(_("*** Get it here: http://get.pyload.org/get/ ***"))
+ self.log.info(_("*** Get it here: http://pyload.org/download ***"))
return True
except:
self.log.error(_("Not able to connect server"))
+ return False
+
+
+ def checkPlugins(self):
+ """ checks for plugins updates"""
+
+ string = ""
+
+ string += self.createUpdateList(self.core.pluginManager.crypterPlugins, "crypter")
+ string += self.createUpdateList(self.core.pluginManager.hosterPlugins, "hoster")
+ string += self.createUpdateList(self.core.pluginManager.containerPlugins, "container")
+ string += self.createUpdateList(self.core.pluginManager.accountPlugins, "account")
+ string += self.createUpdateList(self.core.pluginManager.hookPlugins, "hook")
+ string += self.createUpdateList(self.core.pluginManager.captchaPlugins, "captcha")
+
+ try:
+ updates = getURL("updateurl", post={"plugins": string})
+ except:
+ self.log.warning(_("Plugins could not be updated"))
+ updates = ""
+
+ updates = updates.splitlines()
+
+ for plugin in updates:
+ type, name, url = plugin.split("|")
+ print type, name, url
+ #@TODO save url content to disk
+
+ def createUpdateList(self, plugins, type):
+ """ create string list for update check """
+ string = ""
+ for name,plugin in plugins.iteritems():
+ string += "%s|%s|%s\n" % (type, name, plugin["v"])
- \ No newline at end of file
+ return string \ No newline at end of file