SshKey.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\App\Http\Client;
  3. use ModulesGarden\ProxmoxAddon\App\Models\KeyPair;
  4. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
  5. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\UserService;
  6. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Home\Pages\DetailsContainer;
  7. use ModulesGarden\Servers\ProxmoxCloudVps\Core\Http\AbstractClientController;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Traits\WhmcsParams;
  9. use Symfony\Component\HttpFoundation\StreamedResponse;
  10. class SshKey extends AbstractClientController
  11. {
  12. use WhmcsParams;
  13. use ProductService;
  14. use BaseClientController;
  15. use UserService;
  16. public function sshPublicKeyDownload()
  17. {
  18. $response = new StreamedResponse();
  19. $response->setStatusCode(200);
  20. $response->headers->set('Content-Type', 'application/x-pem-file; charset=utf-8');
  21. $response->headers->set('Content-Transfer-Encoding', 'Binary');
  22. $response->setCallback(function ()
  23. {
  24. /**
  25. * @var $keyPair KeyPair
  26. */
  27. $keyPair = KeyPair::ofHostingId($this->getWhmcsParamByKey("serviceid"))
  28. ->ofVmId($this->getRequestValue('vm'))
  29. ->firstOrFail();
  30. echo $keyPair->getPublic();
  31. });
  32. $response->headers->set(
  33. 'Content-Disposition', 'attachment; filename="id_rsa.pub"'
  34. );
  35. $response->send();
  36. }
  37. public function sshPrivateKeyDownload()
  38. {
  39. $response = new StreamedResponse();
  40. $response->setStatusCode(200);
  41. $response->headers->set('Content-Type', 'application/x-pem-file; charset=utf-8');
  42. $response->headers->set('Content-Transfer-Encoding', 'Binary');
  43. $response->setCallback(function ()
  44. {
  45. /**
  46. * @var $keyPair KeyPair
  47. */
  48. $keyPair = KeyPair::ofHostingId($this->getWhmcsParamByKey("serviceid"))
  49. ->ofVmId($this->getRequestValue('vm'))
  50. ->firstOrFail();
  51. echo $keyPair->getPrivate();
  52. //delete private key
  53. if ($this->configuration()->isSshDeletePrivateKey())
  54. {
  55. $keyPair->setPrivate(null);
  56. $keyPair->save();
  57. }
  58. });
  59. $response->headers->set(
  60. 'Content-Disposition', 'attachment; filename="id_rsa"'
  61. );
  62. $response->send();
  63. }
  64. }