index.php 3.1 KB

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