def plugin_update(request, oid): host = get_base_url(request) jc = JailsConfiguration.objects.order_by("-id")[0] logfile = "%s/warden.log" % jc.jc_path if os.path.exists(logfile): os.unlink(logfile) if os.path.exists(WARDEN_EXTRACT_STATUS_FILE): os.unlink(WARDEN_EXTRACT_STATUS_FILE) if os.path.exists("/tmp/.plugin_upload_install"): os.unlink("/tmp/.plugin_upload_install") if os.path.exists("/tmp/.jailcreate"): os.unlink("/tmp/.jailcreate") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) iplugin = models.Plugins.objects.filter(id=oid) if not iplugin: raise MiddlewareError(_("Plugin not installed")) iplugin = iplugin[0] rplugin = None for rp in availablePlugins.get_remote(cache=True): if rp.name == iplugin.plugin_name: rplugin = rp break if not rplugin: raise MiddlewareError(_("Invalid plugin")) (p, js, jail_status) = get_plugin_status([iplugin, host, request]) if js and js["status"] == "RUNNING": (p, js, jail_status) = get_plugin_stop([iplugin, host, request]) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not rplugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin")) jail = Jails.objects.filter(jail_host=iplugin.plugin_jail) if not jail: raise MiddlewareError(_("Jail does not exist")) if notifier().update_pbi(plugin=iplugin): notifier()._start_plugins(jail=iplugin.plugin_jail, plugin=iplugin.plugin_name) else: raise MiddlewareError(_("Failed to update plugin")) return JsonResp(request, message=_("Plugin successfully updated"), events=["reloadHttpd()"]) return render(request, "plugins/plugin_update.html", {"plugin": rplugin})
def get_list(self, request, **kwargs): conf = PluginConf.objects.latest('id') if conf and conf.collectionurl: url = conf.collectionurl else: url = PLUGINS_INDEX try: results = availablePlugins.get_remote(url=url) except Exception, e: log.debug("Failed to fetch remote: %s", e) results = []
def plugin_update(request, oid): host = get_base_url(request) reset_plugin_progress() iplugin = models.Plugins.objects.filter(id=oid) if not iplugin: raise MiddlewareError(_("Plugin not installed")) iplugin = iplugin[0] rplugin = None for rp in availablePlugins.get_remote(cache=True): if rp.name.lower() == iplugin.plugin_name.lower(): rplugin = rp break if not rplugin: raise MiddlewareError(_("Invalid plugin")) (p, js, jail_status) = get_plugin_status([iplugin, host, request]) if js and js['status'] == 'RUNNING': (p, js, jail_status) = get_plugin_stop([iplugin, host, request]) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not rplugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin")) jail = Jails.objects.filter(jail_host=iplugin.plugin_jail) if not jail: raise MiddlewareError(_("Jail does not exist")) if notifier().update_pbi(plugin=iplugin): notifier()._start_plugins( jail=iplugin.plugin_jail, plugin=iplugin.plugin_name, ) else: raise MiddlewareError(_("Failed to update plugin")) return JsonResp( request, message=_("Plugin successfully updated"), events=['reloadHttpd()'], ) return render(request, "plugins/plugin_update.html", { 'plugin': rplugin, })
def plugin_update(request, oid): host = get_base_url(request) jc = JailsConfiguration.objects.order_by("-id")[0] logfile = '%s/warden.log' % jc.jc_path if os.path.exists(logfile): os.unlink(logfile) if os.path.exists(WARDEN_EXTRACT_STATUS_FILE): os.unlink(WARDEN_EXTRACT_STATUS_FILE) if os.path.exists("/tmp/.plugin_upload_install"): os.unlink("/tmp/.plugin_upload_install") if os.path.exists("/tmp/.jailcreate"): os.unlink("/tmp/.jailcreate") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) iplugin = models.Plugins.objects.filter(id=oid) if not iplugin: raise MiddlewareError(_("Plugin not installed")) iplugin = iplugin[0] rplugin = None for rp in availablePlugins.get_remote(cache=True): if rp.name.lower() == iplugin.plugin_name.lower(): rplugin = rp break if not rplugin: raise MiddlewareError(_("Invalid plugin")) (p, js, jail_status) = get_plugin_status([iplugin, host, request]) if js and js['status'] == 'RUNNING': (p, js, jail_status) = get_plugin_stop([iplugin, host, request]) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not rplugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin")) jail = Jails.objects.filter(jail_host=iplugin.plugin_jail) if not jail: raise MiddlewareError(_("Jail does not exist")) if notifier().update_pbi(plugin=iplugin): notifier()._start_plugins( jail=iplugin.plugin_jail, plugin=iplugin.plugin_name, ) else: raise MiddlewareError(_("Failed to update plugin")) return JsonResp( request, message=_("Plugin successfully updated"), events=['reloadHttpd()'], ) return render(request, "plugins/plugin_update.html", { 'plugin': rplugin, })
addrs = guess_addresses() if not addrs['high_ipv4']: raise MiddlewareError(_("No available IP addresses")) except MiddlewareError, e: return render(request, "plugins/install_error.html", { 'error': e.value, }) if os.path.exists("/tmp/.plugin_upload_update"): os.unlink("/tmp/.plugin_upload_update") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) plugin = None for p in availablePlugins.get_remote(cache=True): if p.id == oid: plugin = p break if not plugin: raise MiddlewareError(_("Invalid plugin")) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not plugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin"))
if os.path.exists(WARDEN_EXTRACT_STATUS_FILE): os.unlink(WARDEN_EXTRACT_STATUS_FILE) if os.path.exists("/tmp/.plugin_upload_install"): os.unlink("/tmp/.plugin_upload_install") if os.path.exists("/tmp/.jailcreate"): os.unlink("/tmp/.jailcreate") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) plugin = None conf = models.Configuration.objects.latest('id') if conf and conf.collectionurl: url = conf.collectionurl else: url = models.PLUGINS_INDEX for p in availablePlugins.get_remote(url=url, cache=True): if p.id == int(oid): plugin = p break if not plugin: raise MiddlewareError(_("Invalid plugin")) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not plugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin"))
def install_available(request, oid): try: jc = JailsConfiguration.objects.all()[0] except IndexError: jc = JailsConfiguration.objects.create() try: if not jail_path_configured(): jail_auto_configure() if not jc.jc_ipv4_dhcp: addrs = guess_addresses() if not addrs['high_ipv4']: raise MiddlewareError(_("No available IP addresses")) except MiddlewareError as e: return render(request, "plugins/install_error.html", { 'error': e.value, }) if os.path.exists("/tmp/.plugin_upload_update"): os.unlink("/tmp/.plugin_upload_update") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) plugin = None for p in availablePlugins.get_remote(cache=True): if p.id == oid: plugin = p break if not plugin: raise MiddlewareError(_("Invalid plugin")) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not plugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin")) try: jail = new_default_plugin_jail(plugin.unixname) except IOError as e: raise MiddlewareError(str(e)) except MiddlewareError as e: raise e except Exception as e: raise MiddlewareError(str(e)) newplugin = [] if notifier().install_pbi(jail.jail_host, newplugin): newplugin = newplugin[0] notifier()._restart_plugins( jail=newplugin.plugin_jail, plugin=newplugin.plugin_name, ) else: jail.delete() return JsonResp( request, message=_("Plugin successfully installed"), events=['reloadHttpd()'], ) return render(request, "plugins/available_install.html", { 'plugin': plugin, })
if os.path.exists(logfile): os.unlink(logfile) if os.path.exists("/tmp/.plugin_upload_install"): os.unlink("/tmp/.plugin_upload_install") if os.path.exists("/tmp/.jailcreate"): os.unlink("/tmp/.jailcreate") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) plugin = None conf = models.Configuration.objects.latest("id") if conf and conf.collectionurl: url = conf.collectionurl else: url = models.PLUGINS_INDEX for p in availablePlugins.get_remote(url=url): if p.id == int(oid): plugin = p break if not plugin: raise MiddlewareError(_("Invalid plugin")) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not plugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin"))
if not addrs['high_ipv4']: raise MiddlewareError(_( "You must configure your network interface and a default " "gateway")) except MiddlewareError, e: return render(request, "plugins/install_error.html", { 'error': e.value, }) if os.path.exists("/tmp/.plugin_upload_update"): os.unlink("/tmp/.plugin_upload_update") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) plugin = None for p in availablePlugins.get_remote(cache=True): if p.id == oid: plugin = p break if not plugin: raise MiddlewareError(_("Invalid plugin")) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not plugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin"))
if os.path.exists(logfile): os.unlink(logfile) if os.path.exists("/tmp/.plugin_upload_install"): os.unlink("/tmp/.plugin_upload_install") if os.path.exists("/tmp/.jailcreate"): os.unlink("/tmp/.jailcreate") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) plugin = None conf = models.Configuration.objects.latest('id') if conf and conf.collectionurl: url = conf.collectionurl else: url = models.PLUGINS_INDEX for p in availablePlugins.get_remote(url=url, cache=True): if p.id == int(oid): plugin = p break if not plugin: raise MiddlewareError(_("Invalid plugin")) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not plugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin"))
if os.path.exists(logfile): os.unlink(logfile) if os.path.exists("/tmp/.plugin_upload_install"): os.unlink("/tmp/.plugin_upload_install") if os.path.exists("/tmp/.jailcreate"): os.unlink("/tmp/.jailcreate") if os.path.exists(PROGRESS_FILE): os.unlink(PROGRESS_FILE) plugin = None conf = models.Configuration.objects.latest('id') if conf and conf.collectionurl: url = conf.collectionurl else: url = models.PLUGINS_INDEX for p in availablePlugins.get_remote(url=url): if p.id == int(oid): plugin = p break if not plugin: raise MiddlewareError(_("Invalid plugin")) if request.method == "POST": plugin_upload_path = notifier().get_plugin_upload_path() notifier().change_upload_location(plugin_upload_path) if not plugin.download("/var/tmp/firmware/pbifile.pbi"): raise MiddlewareError(_("Failed to download plugin"))