Home.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxVps\App\Http\Client;
  3. use ModulesGarden\ProxmoxAddon\App\Models\KeyPair;
  4. use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
  5. use ModulesGarden\Servers\ProxmoxVps\App\Helpers\AppParams;
  6. use ModulesGarden\Servers\ProxmoxVps\App\Helpers\ProxmoxAddonValidator;
  7. use ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Pages\DetailsContainer;
  8. use ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Pages\ServiceActions;
  9. use ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Pages\ServiceManagement;
  10. use ModulesGarden\Servers\ProxmoxVps\App\UI\IpAddress\Pages\IpAddressDataTable;
  11. use ModulesGarden\Servers\ProxmoxVps\App\UI\ServiceInformation\Pages\ServiceInformation;
  12. use ModulesGarden\Servers\ProxmoxVps\Core\Helper;
  13. use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractClientController;
  14. use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
  15. use Symfony\Component\HttpFoundation\StreamedResponse;
  16. class Home extends AbstractClientController
  17. {
  18. use WhmcsParams;
  19. use ProductService;
  20. use BaseClientController;
  21. public function index()
  22. {
  23. if ($this->getWhmcsParamByKey('status') != 'Active')
  24. {
  25. return;
  26. }
  27. elseif(!ProxmoxAddonValidator::isInstalled()){
  28. ProxmoxAddonValidator::isInstalledOrFail();
  29. }
  30. else if (!$this->isVpsCreated())
  31. {
  32. return $this->onVpsBuild();
  33. }
  34. (new AppParams())->initFromWhmcsParams();
  35. return Helper\view()->addElement(ServiceActions::class)
  36. ->addElement(ServiceManagement::class)
  37. ->addElement(ServiceInformation::class)
  38. ->addElement(IpAddressDataTable::class);
  39. }
  40. public function sshPublicKeyDownload()
  41. {
  42. $response = new StreamedResponse();
  43. $response->setStatusCode(200);
  44. $response->headers->set('Content-Type', 'application/x-pem-file; charset=utf-8');
  45. $response->headers->set('Content-Transfer-Encoding', 'Binary');
  46. $response->setCallback(function ()
  47. {
  48. /**
  49. * @var $keyPair KeyPair
  50. */
  51. $keyPair = KeyPair::ofHostingId($this->getWhmcsParamByKey("serviceid"))->firstOrFail();
  52. echo $keyPair->getPublic();
  53. die();
  54. });
  55. $response->headers->set(
  56. 'Content-Disposition', 'attachment; filename="id_rsa.pub"'
  57. );
  58. $response->send();
  59. }
  60. public function sshPrivateKeyDownload()
  61. {
  62. $response = new StreamedResponse();
  63. $response->setStatusCode(200);
  64. $response->headers->set('Content-Type', 'application/x-pem-file; charset=utf-8');
  65. $response->headers->set('Content-Transfer-Encoding', 'Binary');
  66. $response->setCallback(function ()
  67. {
  68. /**
  69. * @var $keyPair KeyPair
  70. */
  71. $keyPair = KeyPair::ofHostingId($this->getWhmcsParamByKey("serviceid"))->firstOrFail();
  72. echo $keyPair->getPrivate();
  73. //delete private key
  74. if ($this->configuration()->isSshDeletePrivateKey())
  75. {
  76. $keyPair->setPrivate(null);
  77. $keyPair->save();
  78. }
  79. die();
  80. });
  81. $response->headers->set(
  82. 'Content-Disposition', 'attachment; filename="id_rsa"'
  83. );
  84. $response->send();
  85. }
  86. }