log.error("Failed in OS operations:%s "%e.strerror) return ERROR_DIRECTORY_NOT_FOUND, "", self.__plugin_path + queryString(102) try: if src.startswith('file://'): filename, headers = urllib.urlretrieve(src, plugin_file, callback) else: wget = utils.which("wget", True) if wget: cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,src) log.debug(cmd) status, output = utils.run(cmd) log.debug("wget returned: %d" % status) #Check whether plugin is accessible in Openprinting.org website otherwise dowload plugin from alternate location. if status != 0 or os_utils.getFileSize(plugin_file) <= 0: src = os.path.join(PLUGIN_FALLBACK_LOCATION, self.__plugin_name) log.info("Plugin is not accessible. Trying to download it from fallback location: [%s]" % src) cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,src) log.debug(cmd) status, output = utils.run(cmd) if status != 0 or os_utils.getFileSize(plugin_file) <= 0: log.error("Plug-in download is failed from both URL and fallback location.") return ERROR_FILE_NOT_FOUND, "", queryString(ERROR_FILE_NOT_FOUND, 0, plugin_file) except IOError, e: log.error("Plug-in download failed: %s" % e.strerror) return ERROR_FILE_NOT_FOUND, "", queryString(ERROR_FILE_NOT_FOUND, 0, plugin_file) if core.isErrorPage(file(plugin_file, 'r').read(1024)):
def download(self, pluginPath='',callback = None): core = core_install.CoreInstall() if pluginPath:# and os.path.exists(pluginPath): src = pluginPath checksum = "" # TBD: Local copy may have different checksum. So ignoring checksum else: sts, url, checksum = self.__getPluginInformation(callback) src = url if sts != ERROR_SUCCESS: return sts, "", queryString(ERROR_CHECKSUM_ERROR, 0, src) log.debug("Downloading %s plug-in file from '%s' to '%s'..." % (self.__required_version, src, self.__plugin_path)) plugin_file = os.path.join(self.__plugin_path, self.__plugin_name) try: os.umask(0) if not os.path.exists(self.__plugin_path): os.makedirs(self.__plugin_path, 0o755) if os.path.exists(plugin_file): os.remove(plugin_file) if os.path.exists(plugin_file+'.asc'): os.remove(plugin_file+'.asc') except (OSError, IOError) as e: log.error("Failed in OS operations:%s "%e.strerror) return ERROR_DIRECTORY_NOT_FOUND, "", self.__plugin_path + queryString(102) try: if src.startswith('file://'): status, filename = utils.download_from_network(src, plugin_file, True) else: wget = utils.which("wget", True) if wget: cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,src) log.debug(cmd) status, output = utils.run(cmd) log.debug("wget returned: %d" % status) #Check whether plugin is accessible in Openprinting.org website otherwise dowload plugin from alternate location. if status != 0 or os_utils.getFileSize(plugin_file) <= 0: src = os.path.join(PLUGIN_FALLBACK_LOCATION, self.__plugin_name) log.info("Plugin is not accessible. Trying to download it from fallback location: [%s]" % src) cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,src) log.debug(cmd) status, output = utils.run(cmd) except IOError as e: log.error("Plug-in download failed: %s" % e.strerror) return ERROR_FILE_NOT_FOUND, "", queryString(ERROR_FILE_NOT_FOUND, 0, plugin_file) if status !=0 or os_utils.getFileSize(plugin_file) <= 0: log.error("Plug-in download failed." ) return ERROR_FILE_NOT_FOUND, "", queryString(ERROR_FILE_NOT_FOUND, 0, plugin_file) if core.isErrorPage(open(plugin_file, 'r').read(1024)): log.debug("open(plugin_file, 'r').read(1024)") os.remove(plugin_file) return ERROR_FILE_NOT_FOUND, "", queryString(ERROR_FILE_NOT_FOUND, 0, plugin_file) # Try to download and check the GPG digital signature digsig_url = src + '.asc' digsig_file = plugin_file + '.asc' log.debug("Downloading %s plug-in digital signature file from '%s' to '%s'..." % (self.__required_version, digsig_url, digsig_file)) try: if digsig_url.startswith('file://'): status, filename = utils.download_from_network(digsig_url, digsig_file, True) else: cmd = "%s --cache=off -P %s %s" % (wget,self.__plugin_path,digsig_url) log.debug(cmd) status, output = utils.run(cmd) except IOError as e: log.error("Plug-in GPG file [%s] download failed: %s" % (digsig_url,e.strerror)) return ERROR_DIGITAL_SIGN_NOT_FOUND, plugin_file, queryString(ERROR_DIGITAL_SIGN_NOT_FOUND, 0, digsig_file) if status !=0: log.error("Plug-in GPG file [%s] download failed." % (digsig_url)) return ERROR_DIGITAL_SIGN_NOT_FOUND, plugin_file, queryString(ERROR_DIGITAL_SIGN_NOT_FOUND, 0, digsig_file) if core.isErrorPage(open(digsig_file, 'r').read(1024)): log.debug(open(digsig_file, 'r').read()) os.remove(digsig_file) return ERROR_DIGITAL_SIGN_NOT_FOUND, plugin_file, queryString(ERROR_DIGITAL_SIGN_NOT_FOUND, 0, digsig_file) sts, error_str = self.__validatePlugin(plugin_file, digsig_file, checksum) return sts, plugin_file, error_str
def download(self, pluginPath='', callback=None): core = core_install.CoreInstall() if pluginPath: # and os.path.exists(pluginPath): src = pluginPath checksum = "" # TBD: Local copy may have different checksum. So ignoring checksum else: sts, url, checksum = self.__getPluginInformation(callback) src = url if sts != ERROR_SUCCESS: return sts, "", queryString(ERROR_CHECKSUM_ERROR, 0, src) log.debug("Downloading %s plug-in file from '%s' to '%s'..." % (self.__required_version, src, self.__plugin_path)) plugin_file = os.path.join(self.__plugin_path, self.__plugin_name) try: os.umask(0) if not os.path.exists(self.__plugin_path): os.makedirs(self.__plugin_path, 0o755) if os.path.exists(plugin_file): os.remove(plugin_file) if os.path.exists(plugin_file + '.asc'): os.remove(plugin_file + '.asc') except (OSError, IOError) as e: log.error("Failed in OS operations:%s " % e.strerror) return ERROR_DIRECTORY_NOT_FOUND, "", self.__plugin_path + queryString( 102) try: if src.startswith('file://'): status, filename = utils.download_from_network( src, plugin_file, True) else: wget = utils.which("wget", True) if wget: cmd = "%s --cache=off -P %s %s" % (wget, self.__plugin_path, src) log.debug(cmd) status, output = utils.run(cmd) log.debug("wget returned: %d" % status) #Check whether plugin is accessible in Openprinting.org website otherwise dowload plugin from alternate location. if status != 0 or os_utils.getFileSize(plugin_file) <= 0: src = os.path.join(PLUGIN_FALLBACK_LOCATION, self.__plugin_name) log.info( "Plugin is not accessible. Trying to download it from fallback location: [%s]" % src) cmd = "%s --cache=off -P %s %s" % (wget, self.__plugin_path, src) log.debug(cmd) status, output = utils.run(cmd) except IOError as e: log.error("Plug-in download failed: %s" % e.strerror) return ERROR_FILE_NOT_FOUND, "", queryString( ERROR_FILE_NOT_FOUND, 0, plugin_file) if status != 0 or os_utils.getFileSize(plugin_file) <= 0: log.error("Plug-in download failed.") return ERROR_FILE_NOT_FOUND, "", queryString( ERROR_FILE_NOT_FOUND, 0, plugin_file) if core.isErrorPage(open(plugin_file, 'r').read(1024)): log.debug("open(plugin_file, 'r').read(1024)") os.remove(plugin_file) return ERROR_FILE_NOT_FOUND, "", queryString( ERROR_FILE_NOT_FOUND, 0, plugin_file) # Try to download and check the GPG digital signature digsig_url = src + '.asc' digsig_file = plugin_file + '.asc' log.debug( "Downloading %s plug-in digital signature file from '%s' to '%s'..." % (self.__required_version, digsig_url, digsig_file)) try: if digsig_url.startswith('file://'): status, filename = utils.download_from_network( digsig_url, digsig_file, True) else: cmd = "%s --cache=off -P %s %s" % (wget, self.__plugin_path, digsig_url) log.debug(cmd) status, output = utils.run(cmd) except IOError as e: log.error("Plug-in GPG file [%s] download failed: %s" % (digsig_url, e.strerror)) return ERROR_DIGITAL_SIGN_NOT_FOUND, plugin_file, queryString( ERROR_DIGITAL_SIGN_NOT_FOUND, 0, digsig_file) if status != 0: log.error("Plug-in GPG file [%s] download failed." % (digsig_url)) return ERROR_DIGITAL_SIGN_NOT_FOUND, plugin_file, queryString( ERROR_DIGITAL_SIGN_NOT_FOUND, 0, digsig_file) if core.isErrorPage(open(digsig_file, 'r').read(1024)): log.debug(open(digsig_file, 'r').read()) os.remove(digsig_file) return ERROR_DIGITAL_SIGN_NOT_FOUND, plugin_file, queryString( ERROR_DIGITAL_SIGN_NOT_FOUND, 0, digsig_file) sts, error_str = self.__validatePlugin(plugin_file, digsig_file, checksum) return sts, plugin_file, error_str
try: if src.startswith('file://'): filename, headers = urllib.urlretrieve(src, plugin_file, callback) else: wget = utils.which("wget", True) if wget: cmd = "%s --cache=off -P %s %s" % (wget, self.__plugin_path, src) log.debug(cmd) status, output = utils.run(cmd) log.debug("wget returned: %d" % status) #Check whether plugin is accessible in Openprinting.org website otherwise dowload plugin from alternate location. if status != 0 or os_utils.getFileSize(plugin_file) <= 0: src = os.path.join(PLUGIN_FALLBACK_LOCATION, self.__plugin_name) log.info( "Plugin is not accessible. Trying to download it from fallback location: [%s]" % src) cmd = "%s --cache=off -P %s %s" % (wget, self.__plugin_path, src) log.debug(cmd) status, output = utils.run(cmd) if status != 0 or os_utils.getFileSize(plugin_file) <= 0: log.error( "Plug-in download is failed from both URL and fallback location." ) return ERROR_FILE_NOT_FOUND, "", queryString(