def post(self, veid): if not _config.getboolean("varnish", "enabled"): return sql = models.VM.select(models.VM.q.veid == int(veid))[0] if sql.user != self.current_user or not sql.user: self.redirect(self.reverse_url("containers")+"?error=1") return host = self.get_argument("host", "") port = int(self.get_argument("port", 0)) if not host or not port: self.redirect(self.reverse_url("vminfo", veid)+"#webedit") return if not re.match(r"^[a-zA-Z0-9\.\-_]+$", host): self.redirect(self.reverse_url("vminfo", veid)+"?error=3") return if models.VarnishCond.select(models.VarnishCond.q.hostname==host).count(): self.redirect(self.reverse_url("vminfo", veid)+"?error=1") return backend = models.VarnishBackend.select(models.AND(models.VarnishBackend.q.port == port, models.VarnishBackend.q.vm==sql)) backendUpdate=False if backend.count(): backend = backend[0] else: backend = models.VarnishBackend(name=sql.vz.hostname+str(port), vm=sql, port=port) backendUpdate=True models.VarnishCond(hostname=host, subdomain=bool(self.get_argument("subdomain", False)), varnishBackend=backend) if backendUpdate: varnish.updateBackend(models.VarnishBackend.select()) varnish.updateRecv(models.VarnishCond.select()) if varnish.version()[0] > 1: varnish.restart() self.redirect(self.reverse_url("vminfo", veid)+"#webedit")
def post(self, veid): sql = models.VM.select(models.VM.q.veid == int(veid))[0] if sql.user != self.current_user and sql.user: self.redirect(self.reverse_url("containers")+"?error=1") return vm = sql.vz if vm.running: self.redirect(self.reverse_url("containers")+"?error=5") return proc = vm.destroy() for i in sql.varnishBackend: for i2 in i.cond: i2.destroySelf() i.destroySelf() for i in sql.portForward: i.destroySelf() if sql.munin: sql.munin.destroySelf() import munin, vmfw munin.update(models.Munin.select(), models.User.select()) vmfw.update(models.PortForward.select()) vmfw.restart() varnish.updateBackend(models.VarnishBackend.select()) varnish.updateRecv(models.VarnishCond.select()) varnish.restart() sql.destroySelf() time.sleep(1) # wait for dusts to settle self.redirect(self.get_argument("return", self.reverse_url("containers")+"?msg=3"))
def get(self): if not _config.getboolean("varnish", "enabled"): return if varnish.version()[0] < 2: if self.get_argument("state") == "0": cookie = self.get_secure_cookie("varnishrestart") if not cookie: cookie=1 if (int(cookie)+300) - time.time() > 0: #self.redirect("/vm/%s?error=2"%self.get_argument("veid")) self.write(_("Limit not reached. Please wait %s seconds") % (int(cookie)+300) - time.time()) return self.set_secure_cookie("varnishrestart", str(int(time.time()))) self.set_secure_cookie("varnishcookie", str(int(time.time()))) else: t = int(self.get_secure_cookie("varnishcookie")) if time.time()-t > 3: return varnish.restart() else: varnish.restart()