index.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. // Init
  3. error_reporting(NULL);
  4. ob_start();
  5. session_start();
  6. $TAB = 'DNS';
  7. include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
  8. // Header
  9. include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
  10. // Panel
  11. top_panel($user,$TAB);
  12. $lang = 'ru_RU.utf8';
  13. setlocale(LC_ALL, $lang);
  14. // Check user argument?
  15. if (empty($_GET['domain'])) {
  16. header("Location: /list/dns/");
  17. exit;
  18. }
  19. // Edit as someone else?
  20. if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
  21. $user=escapeshellarg($_GET['user']);
  22. }
  23. // Check domain
  24. if ((!empty($_GET['domain'])) && (empty($_GET['record_id']))) {
  25. $v_domain = escapeshellarg($_GET['domain']);
  26. exec (VESTA_CMD."v-list-dns-domain ".$user." ".$v_domain." json", $output, $return_var);
  27. if ($return_var != 0) {
  28. $error = implode('<br>', $output);
  29. if (empty($error)) $error = _('Error: vesta did not return any output.');
  30. $_SESSION['error_msg'] = $error;
  31. } else {
  32. $data = json_decode(implode('', $output), true);
  33. unset($output);
  34. $v_username = $user;
  35. $v_domain = $_GET['domain'];
  36. $v_ip = $data[$v_domain]['IP'];
  37. $v_template = $data[$v_domain]['TPL'];
  38. $v_ttl = $data[$v_domain]['TTL'];
  39. $v_exp = $data[$v_domain]['EXP'];
  40. $v_soa = $data[$v_domain]['SOA'];
  41. $v_date = $data[$v_domain]['DATE'];
  42. $v_time = $data[$v_domain]['TIME'];
  43. $v_suspended = $data[$v_domain]['SUSPENDED'];
  44. if ( $v_suspended == 'yes' ) {
  45. $v_status = 'suspended';
  46. } else {
  47. $v_status = 'active';
  48. }
  49. exec (VESTA_CMD."v-list-dns-templates json", $output, $return_var);
  50. $templates = json_decode(implode('', $output), true);
  51. unset($output);
  52. }
  53. // Action
  54. if (!empty($_POST['save'])) {
  55. $v_domain = escapeshellarg($_POST['v_domain']);
  56. // IP
  57. if (($v_ip != $_POST['v_ip']) && (empty($_SESSION['error_msg']))) {
  58. $v_ip = escapeshellarg($_POST['v_ip']);
  59. exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." ".$v_domain." ".$v_ip." 'no'", $output, $return_var);
  60. if ($return_var != 0) {
  61. $error = implode('<br>', $output);
  62. if (empty($error)) $error = _('Error: vesta did not return any output.');
  63. $_SESSION['error_msg'] = $error;
  64. }
  65. $restart_dns = 'yes';
  66. unset($output);
  67. }
  68. // Template
  69. if (( $_SESSION['user'] == 'admin') && ($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) {
  70. $v_template = escapeshellarg($_POST['v_template']);
  71. exec (VESTA_CMD."v-change-dns-domain-tpl ".$v_username." ".$v_domain." ".$v_template." 'no'", $output, $return_var);
  72. if ($return_var != 0) {
  73. $error = implode('<br>', $output);
  74. if (empty($error)) $error = _('Error: vesta did not return any output.');
  75. $_SESSION['error_msg'] = $error;
  76. }
  77. unset($output);
  78. $restart_dns = 'yes';
  79. }
  80. // SOA
  81. if (($v_soa != $_POST['v_soa']) && (empty($_SESSION['error_msg']))) {
  82. $v_soa = escapeshellarg($_POST['v_soa']);
  83. exec (VESTA_CMD."v-change-dns-domain-soa ".$v_username." ".$v_domain." ".$v_soa." 'no'", $output, $return_var);
  84. if ($return_var != 0) {
  85. $error = implode('<br>', $output);
  86. if (empty($error)) $error = _('Error: vesta did not return any output.');
  87. $_SESSION['error_msg'] = $error;
  88. }
  89. unset($output);
  90. $restart_dns = 'yes';
  91. }
  92. // EXP
  93. if (($v_exp != $_POST['v_exp']) && (empty($_SESSION['error_msg']))) {
  94. $v_exp = escapeshellarg($_POST['v_exp']);
  95. exec (VESTA_CMD."v-change-dns-domain-exp ".$v_username." ".$v_domain." ".$v_exp." 'no'", $output, $return_var);
  96. if ($return_var != 0) {
  97. $error = implode('<br>', $output);
  98. if (empty($error)) $error = _('Error: vesta did not return any output.');
  99. $_SESSION['error_msg'] = $error;
  100. }
  101. unset($output);
  102. $restart_dns = 'yes';
  103. }
  104. // TTL
  105. if (($v_ttl != $_POST['v_ttl']) && (empty($_SESSION['error_msg']))) {
  106. $v_ttl = escapeshellarg($_POST['v_ttl']);
  107. exec (VESTA_CMD."v-change-dns-domain-ttl ".$v_username." ".$v_domain." ".$v_ttl." 'no'", $output, $return_var);
  108. if ($return_var != 0) {
  109. $error = implode('<br>', $output);
  110. if (empty($error)) $error = _('Error: vesta did not return any output.');
  111. $_SESSION['error_msg'] = $error;
  112. }
  113. unset($output);
  114. $restart_dns = 'yes';
  115. }
  116. // Restart dns
  117. if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) {
  118. exec (VESTA_CMD."v-restart-dns", $output, $return_var);
  119. if ($return_var != 0) {
  120. $error = implode('<br>', $output);
  121. if (empty($error)) $error = _('Error: vesta did not return any output.');
  122. $_SESSION['error_msg'] = $error;
  123. }
  124. }
  125. if (empty($_SESSION['error_msg'])) {
  126. $_SESSION['ok_msg'] = _('OK: changes has been saved.');
  127. }
  128. }
  129. if ($_SESSION['user'] == 'admin') {
  130. include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns.html');
  131. } else {
  132. include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_dns.html');
  133. }
  134. unset($_SESSION['error_msg']);
  135. unset($_SESSION['ok_msg']);
  136. } else {
  137. $v_domain = escapeshellarg($_GET['domain']);
  138. $v_record_id = escapeshellarg($_GET['record_id']);
  139. exec (VESTA_CMD."v-list-dns-domain-records ".$user." ".$v_domain." 'json'", $output, $return_var);
  140. if ($return_var != 0) {
  141. $error = implode('<br>', $output);
  142. if (empty($error)) $error = _('Error: vesta did not return any output.');
  143. $_SESSION['error_msg'] = $error;
  144. } else {
  145. $data = json_decode(implode('', $output), true);
  146. unset($output);
  147. $v_username = $user;
  148. $v_domain = $_GET['domain'];
  149. $v_record_id = $_GET['record_id'];
  150. $v_rec = $data[$v_record_id]['RECORD'];
  151. $v_type = $data[$v_record_id]['TYPE'];
  152. $v_val = $data[$v_record_id]['VALUE'];
  153. $v_priority = $data[$v_record_id]['PRIORITY'];
  154. $v_suspended = $data[$v_record_id]['SUSPENDED'];
  155. if ( $v_suspended == 'yes' ) {
  156. $v_status = 'suspended';
  157. } else {
  158. $v_status = 'active';
  159. }
  160. $v_date = $data[$v_record_id]['DATE'];
  161. $v_time = $data[$v_record_id]['TIME'];
  162. }
  163. // Action
  164. if (!empty($_POST['save'])) {
  165. $v_domain = escapeshellarg($_POST['v_domain']);
  166. $v_record_id = escapeshellarg($_POST['v_record_id']);
  167. if (($v_val != $_POST['v_val']) || ($v_priority != $_POST['v_priority']) && (empty($_SESSION['error_msg']))) {
  168. $v_val = escapeshellarg($_POST['v_val']);
  169. $v_priority = escapeshellarg($_POST['v_priority']);
  170. exec (VESTA_CMD."v-change-dns-domain-record ".$v_username." ".$v_domain." ".$v_record_id." ".$v_val." ".$v_priority, $output, $return_var);
  171. if ($return_var != 0) {
  172. $error = implode('<br>', $output);
  173. if (empty($error)) $error = _('Error: vesta did not return any output.');
  174. $_SESSION['error_msg'] = $error;
  175. }
  176. $v_val = $_POST['v_val'];
  177. $restart_dns = 'yes';
  178. unset($output);
  179. }
  180. if (empty($_SESSION['error_msg'])) {
  181. $_SESSION['ok_msg'] = _('OK: changes has been saved.');
  182. }
  183. }
  184. include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_dns_rec.html');
  185. unset($_SESSION['error_msg']);
  186. unset($_SESSION['ok_msg']);
  187. }
  188. // Footer
  189. include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');