getWhmcsParamByKey('status') != 'Active') { return; } $this->initVm(); (new AppParams())->initFromWhmcsParams(); $this->api(); if (!ProxmoxAddonValidator::isInstalled()) { ProxmoxAddonValidator::isInstalledOrFail(); } else { if (!$this->isVmCreated(\ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel())) { return $this->onVpsBuild(); } } $view = view(); $view->initCustomAssetFiles(); $view->addElement(ServiceDetails::class); $view->addElement(ServiceActions::class); $view->addElement(VmTabs::class); return $view; } public function create() { (new AppParams())->initFromWhmcsParams(); $view = view(); $view->initCustomAssetFiles(); return $view->addElement(VmCreateForm::class); } public function update() { $this->initVm(); (new AppParams())->initFromWhmcsParams(); $this->api(); return view()->addElement(VmUpdateForm::class); } public function download() { $this->initVm(); (new AppParams())->initFromWhmcsParams(); $this->api(); $response = new StreamedResponse(); $response->setStatusCode(200); $response->headers->set('Content-Type', 'application/json; charset=utf-8'); $response->headers->set('Content-Transfer-Encoding', 'Binary'); $filename = sprintf("%s-firewal-rules.json",\ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()->name); $response->headers->set('Content-Disposition', 'attachment; filename="'.$filename.'"'); $firewalRules = new FirewallRulesRepository(); $firewalRules->setApi($this->api()); $firewalRules->findByVmModel([\ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()]); $response->setCallback(function () use( $firewalRules) { echo \json_encode($firewalRules->fetchAsArray()); die(); }); $response->send(); } public function clone() { (new AppParams())->initFromWhmcsParams(); $view = view(); $view->initCustomAssetFiles(); return $view->addElement(VmCloneForm::class); } }