| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- namespace ModulesGarden\Servers\ProxmoxCloudVps\App\Http\Client;
- use MGProvision\Proxmox\v2\repository\FirewallRulesRepository;
- use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
- use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\Helpers\AppParams;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\Helpers\ProxmoxAddonValidator;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Graph\Pages\ServiceCpuGraph;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Graph\Pages\VmSmallGraphs;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Home\Pages\AccountSummary;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Home\Pages\AccountSummaryBars;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Home\Pages\ServiceActions;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Home\Pages\ServiceDetails;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vm\Pages\VmTabs;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Forms\VmCreateForm;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmUpdate\Forms\VmUpdateForm;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\Http\AbstractClientController;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Traits\WhmcsParams;
- use function ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\sl;
- use function ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\view;
- use Symfony\Component\HttpFoundation\StreamedResponse;
- class Vm extends AbstractClientController
- {
- use WhmcsParams;
- use ProductService;
- use BaseClientController;
- use ApiService;
- /**
- * details
- */
- public function index()
- {
- if ($this->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()
- {
- sl("sidebar")->getSidebar("virtualMachinesProxmoxCloudVps")->getChild("vmcreate")->setActive(true);
- (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();
- }
- }
|