Firewall.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxVps\App\Http\Client;
  3. use MGProvision\Proxmox\v2\repository\FirewallRulesRepository;
  4. use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
  5. use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
  6. use ModulesGarden\Servers\ProxmoxVps\App\Helpers\AppParams;
  7. use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Pages\FirewallDataTable;
  8. use ModulesGarden\Servers\ProxmoxVps\Core\Helper;
  9. use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractClientController;
  10. use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
  11. use Symfony\Component\HttpFoundation\StreamedResponse;
  12. class Firewall extends AbstractClientController
  13. {
  14. use WhmcsParams;
  15. use ProductService;
  16. use ApiService;
  17. public function index()
  18. {
  19. (new AppParams())->initFromWhmcsParams();
  20. $this->acl()->firewall();
  21. Helper\sl("sidebar")->getSidebar("managementProxmoxVps")->getChild("firewall")->setActive(true);
  22. return Helper\view()->addElement(FirewallDataTable::class);
  23. }
  24. public function download()
  25. {
  26. $response = new StreamedResponse();
  27. $response->setStatusCode(200);
  28. $response->headers->set('Content-Type', 'application/json; charset=utf-8');
  29. $response->headers->set('Content-Transfer-Encoding', 'Binary');
  30. $filename = sprintf("%s-firewal-rules.json",$this->getWhmcsParamByKey("domain"));
  31. $response->headers->set('Content-Disposition', 'attachment; filename="'.$filename.'"');
  32. $firewalRules = new FirewallRulesRepository();
  33. $firewalRules->setApi($this->api());
  34. $firewalRules->findByVm($this->vm());
  35. $response->setCallback(function () use( $firewalRules)
  36. {
  37. echo \json_encode($firewalRules->fetchAsArray());
  38. die();
  39. });
  40. $response->send();
  41. }
  42. }