index.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. use function Hestiacp\quoteshellarg\quoteshellarg;
  3. $TAB = "WEB";
  4. // Main include
  5. include $_SERVER["DOCUMENT_ROOT"] . "/inc/main.php";
  6. // Prepare values
  7. if (!empty($_GET["domain"])) {
  8. $v_domain = $_GET["domain"];
  9. } else {
  10. $v_domain = "example.tld";
  11. }
  12. $v_aliases = "";
  13. $v_email = "";
  14. $v_country = "US";
  15. $v_state = "California";
  16. $v_locality = "San Francisco";
  17. $v_org = "MyCompany Inc.";
  18. $v_org_unit = "IT";
  19. // Back uri
  20. $_SESSION["back"] = "";
  21. // Check POST
  22. if (!isset($_POST["generate"])) {
  23. render_page($user, $TAB, "generate_ssl");
  24. exit();
  25. }
  26. // Check token
  27. verify_csrf($_POST);
  28. // Check input
  29. if (empty($_POST["v_domain"])) {
  30. $errors[] = _("Domain");
  31. }
  32. if (empty($_POST["v_country"])) {
  33. $errors[] = _("Country");
  34. }
  35. if (empty($_POST["v_state"])) {
  36. $errors[] = _("State");
  37. }
  38. if (empty($_POST["v_locality"])) {
  39. $errors[] = _("City");
  40. }
  41. if (empty($_POST["v_org"])) {
  42. $errors[] = _("Organization");
  43. }
  44. $v_domain = $_POST["v_domain"];
  45. $v_aliases = $_POST["v_aliases"];
  46. $v_email = $_POST["v_email"];
  47. $v_country = $_POST["v_country"];
  48. $v_state = $_POST["v_state"];
  49. $v_locality = $_POST["v_locality"];
  50. $v_org = $_POST["v_org"];
  51. // Check for errors
  52. if (!empty($errors[0])) {
  53. foreach ($errors as $i => $error) {
  54. if ($i == 0) {
  55. $error_msg = $error;
  56. } else {
  57. $error_msg = $error_msg . ", " . $error;
  58. }
  59. }
  60. $_SESSION["error_msg"] = sprintf(_('Field "%s" can not be blank.'), $error_msg);
  61. render_page($user, $TAB, "generate_ssl");
  62. unset($_SESSION["error_msg"]);
  63. exit();
  64. }
  65. // Protect input
  66. $v_domain = quoteshellarg($_POST["v_domain"]);
  67. $waliases = preg_replace("/\n/", " ", $_POST["v_aliases"]);
  68. $waliases = preg_replace("/,/", " ", $waliases);
  69. $waliases = preg_replace("/\s+/", " ", $waliases);
  70. $waliases = trim($waliases);
  71. $aliases = explode(" ", $waliases);
  72. $v_aliases = quoteshellarg(str_replace(" ", "\n", $waliases));
  73. $v_email = quoteshellarg($_POST["v_email"]);
  74. $v_country = quoteshellarg($_POST["v_country"]);
  75. $v_state = quoteshellarg($_POST["v_state"]);
  76. $v_locality = quoteshellarg($_POST["v_locality"]);
  77. $v_org = quoteshellarg($_POST["v_org"]);
  78. exec(
  79. HESTIA_CMD .
  80. "v-generate-ssl-cert " .
  81. $v_domain .
  82. " " .
  83. $v_email .
  84. " " .
  85. $v_country .
  86. " " .
  87. $v_state .
  88. " " .
  89. $v_locality .
  90. " " .
  91. $v_org .
  92. " IT " .
  93. $v_aliases .
  94. " json",
  95. $output,
  96. $return_var,
  97. );
  98. // Revert to raw values
  99. $v_domain = $_POST["v_domain"];
  100. $v_email = $_POST["v_email"];
  101. $v_country = $_POST["v_country"];
  102. $v_state = $_POST["v_state"];
  103. $v_locality = $_POST["v_locality"];
  104. $v_org = $_POST["v_org"];
  105. // Check return code
  106. if ($return_var != 0) {
  107. $error = implode("<br>", $output);
  108. if (empty($error)) {
  109. $error = sprintf(_("Error code: %s"), $return_var);
  110. }
  111. $_SESSION["error_msg"] = $error;
  112. render_page($user, $TAB, "generate_ssl");
  113. unset($_SESSION["error_msg"]);
  114. exit();
  115. }
  116. // OK message
  117. $_SESSION["ok_msg"] = _("Certificate has been generated successfully.");
  118. // Parse output
  119. $data = json_decode(implode("", $output), true);
  120. unset($output);
  121. $v_crt = $data[$v_domain]["CRT"];
  122. $v_key = $data[$v_domain]["KEY"];
  123. $v_csr = $data[$v_domain]["CSR"];
  124. // Back uri
  125. $_SESSION["back"] = $_SERVER["REQUEST_URI"];
  126. // Render page
  127. render_page($user, $TAB, "list_ssl");
  128. unset($_SESSION["ok_msg"]);