From 66e87e5b316b0fa813c8446402944dde770e556e Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sat, 28 Aug 2010 16:42:00 +0200 Subject: preparation for plugin updates --- module/plugins/hooks/UpdateManager.py | 62 ++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 12 deletions(-) (limited to 'module/plugins/hooks') 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 -- cgit v1.2.3