index.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. <?php
  2. // Init
  3. error_reporting(NULL);
  4. ob_start();
  5. session_start();
  6. $TAB = 'SERVER';
  7. include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
  8. // Check user
  9. if ($_SESSION['user'] != 'admin') {
  10. header("Location: /list/user");
  11. exit;
  12. }
  13. // Get server hostname
  14. $v_hostname = exec('hostname');
  15. // List available timezones and get current one
  16. $v_timezones = list_timezones();
  17. exec (VESTA_CMD."v-get-sys-timezone", $output, $return_var);
  18. $v_timezone = $output[0];
  19. unset($output);
  20. if ($v_timezone == 'Etc/UTC' ) $v_timezone = 'UTC';
  21. if ($v_timezone == 'Pacific/Honolulu' ) $v_timezone = 'HAST';
  22. if ($v_timezone == 'US/Aleutian' ) $v_timezone = 'HADT';
  23. if ($v_timezone == 'Etc/GMT+9' ) $v_timezone = 'AKST';
  24. if ($v_timezone == 'America/Anchorage' ) $v_timezone = 'AKDT';
  25. if ($v_timezone == 'America/Dawson_Creek' ) $v_timezone = 'PST';
  26. if ($v_timezone == 'PST8PDT' ) $v_timezone = 'PDT';
  27. if ($v_timezone == 'MST7MDT' ) $v_timezone = 'MDT';
  28. if ($v_timezone == 'Canada/Saskatchewan' ) $v_timezone = 'CST';
  29. if ($v_timezone == 'CST6CDT' ) $v_timezone = 'CDT';
  30. if ($v_timezone == 'EST5EDT' ) $v_timezone = 'EDT';
  31. if ($v_timezone == 'America/Puerto_Rico' ) $v_timezone = 'AST';
  32. if ($v_timezone == 'America/Halifax' ) $v_timezone = 'ADT';
  33. // List supported languages
  34. exec (VESTA_CMD."v-list-sys-languages json", $output, $return_var);
  35. $languages = json_decode(implode('', $output), true);
  36. unset($output);
  37. // List dns cluster hosts
  38. exec (VESTA_CMD."v-list-remote-dns-hosts json", $output, $return_var);
  39. $dns_cluster = json_decode(implode('', $output), true);
  40. unset($output);
  41. foreach ($dns_cluster as $key => $value) {
  42. $v_dns_cluster='yes';
  43. }
  44. // List backup settings
  45. $v_backup_dir = "/backup";
  46. if (!empty($_SESSION['BACKUP'])) $v_backup_dir = $_SESSION['BACKUP'];
  47. $v_backup_gzip = '5';
  48. if (!empty($_SESSION['BACKUP_GZIP'])) $v_backup_gzip = $_SESSION['BACKUP_GZIP'];
  49. $backup_types = split(",",$_SESSION['BACKUP_SYSTEM']);
  50. foreach ($backup_types as $backup_type) {
  51. if ($backup_type == 'local') {
  52. $v_backup = 'yes';
  53. } else {
  54. exec (VESTA_CMD."v-list-backup-host ".$backup_type. " json", $output, $return_var);
  55. $v_remote_backup = json_decode(implode('', $output), true);
  56. unset($output);
  57. $v_backup_host = $v_remote_backup[$backup_type]['HOST'];
  58. $v_backup_type = $v_remote_backup[$backup_type]['TYPE'];
  59. $v_backup_username = $v_remote_backup[$backup_type]['USERNAME'];
  60. $v_backup_password = "";
  61. $v_backup_port = $v_remote_backup[$backup_type]['PORT'];
  62. $v_backup_bpath = $v_remote_backup[$backup_type]['BPATH'];
  63. }
  64. }
  65. // Check POST request
  66. if (!empty($_POST['save'])) {
  67. // Check token
  68. if ((!isset($_POST['token'])) || ($_SESSION['token'] != $_POST['token'])) {
  69. header('location: /login/');
  70. exit();
  71. }
  72. // Change hostname
  73. if ((!empty($_POST['v_hostname'])) && ($v_hostname != $_POST['v_hostname'])) {
  74. exec (VESTA_CMD."v-change-sys-hostname ".escapeshellarg($_POST['v_hostname']), $output, $return_var);
  75. check_return_code($return_var,$output);
  76. unset($output);
  77. $v_hostname = $_POST['v_hostname'];
  78. }
  79. // Change timezone
  80. if (empty($_SESSION['error_msg'])) {
  81. if (!empty($_POST['v_timezone'])) {
  82. $v_tz = $_POST['v_timezone'];
  83. if ($v_tz == 'UTC' ) $v_tz = 'Etc/UTC';
  84. if ($v_tz == 'HAST' ) $v_tz = 'Pacific/Honolulu';
  85. if ($v_tz == 'HADT' ) $v_tz = 'US/Aleutian';
  86. if ($v_tz == 'AKST' ) $v_tz = 'Etc/GMT+9';
  87. if ($v_tz == 'AKDT' ) $v_tz = 'America/Anchorage';
  88. if ($v_tz == 'PST' ) $v_tz = 'America/Dawson_Creek';
  89. if ($v_tz == 'PDT' ) $v_tz = 'PST8PDT';
  90. if ($v_tz == 'MDT' ) $v_tz = 'MST7MDT';
  91. if ($v_tz == 'CST' ) $v_tz = 'Canada/Saskatchewan';
  92. if ($v_tz == 'CDT' ) $v_tz = 'CST6CDT';
  93. if ($v_tz == 'EDT' ) $v_tz = 'EST5EDT';
  94. if ($v_tz == 'AST' ) $v_tz = 'America/Puerto_Rico';
  95. if ($v_tz == 'ADT' ) $v_tz = 'America/Halifax';
  96. if ($v_timezone != $v_tz) {
  97. exec (VESTA_CMD."v-change-sys-timezone ".escapeshellarg($v_tz), $output, $return_var);
  98. check_return_code($return_var,$output);
  99. $v_timezone = $v_tz;
  100. unset($output);
  101. }
  102. }
  103. }
  104. // Change default language
  105. if (empty($_SESSION['error_msg'])) {
  106. if ((!empty($_POST['v_language'])) && ($_SESSION['LANGUAGE'] != $_POST['v_language'])) {
  107. exec (VESTA_CMD."v-change-sys-language ".escapeshellarg($_POST['v_language']), $output, $return_var);
  108. check_return_code($return_var,$output);
  109. unset($output);
  110. if (empty($_SESSION['error_msg'])) $_SESSION['LANGUAGE'] = $_POST['v_language'];
  111. }
  112. }
  113. // Set disk_quota support
  114. if (empty($_SESSION['error_msg'])) {
  115. if ((!empty($_POST['v_quota'])) && ($_SESSION['DISK_QUOTA'] != $_POST['v_quota'])) {
  116. if($_POST['v_quota'] == 'yes') {
  117. exec (VESTA_CMD."v-add-sys-quota", $output, $return_var);
  118. check_return_code($return_var,$output);
  119. unset($output);
  120. if (empty($_SESSION['error_msg'])) $_SESSION['DISK_QUOTA'] = 'yes';
  121. } else {
  122. exec (VESTA_CMD."v-delete-sys-quota", $output, $return_var);
  123. check_return_code($return_var,$output);
  124. unset($output);
  125. if (empty($_SESSION['error_msg'])) $_SESSION['DISK_QUOTA'] = 'no';
  126. }
  127. }
  128. }
  129. // Disable local backup
  130. if (empty($_SESSION['error_msg'])) {
  131. if (($_POST['v_backup'] == 'no') && ($v_backup == 'yes' )) {
  132. exec (VESTA_CMD."v-delete-backup-host local", $output, $return_var);
  133. check_return_code($return_var,$output);
  134. unset($output);
  135. if (empty($_SESSION['error_msg'])) $v_backup = 'no';
  136. $v_backup_adv = 'yes';
  137. }
  138. }
  139. // Enable local backups
  140. if (empty($_SESSION['error_msg'])) {
  141. if (($_POST['v_backup'] == 'yes') && ($v_backup != 'yes' )) {
  142. exec (VESTA_CMD."v-add-backup-host local", $output, $return_var);
  143. check_return_code($return_var,$output);
  144. unset($output);
  145. if (empty($_SESSION['error_msg'])) $v_backup = 'yes';
  146. $v_backup_adv = 'yes';
  147. }
  148. }
  149. // Change backup gzip level
  150. if (empty($_SESSION['error_msg'])) {
  151. if ($_POST['v_backup_gzip'] != $v_backup_gzip ) {
  152. exec (VESTA_CMD."v-change-sys-config-value BACKUP_GZIP ".escapeshellarg($_POST['v_backup_gzip']), $output, $return_var);
  153. check_return_code($return_var,$output);
  154. unset($output);
  155. if (empty($_SESSION['error_msg'])) $v_backup_gzip = $_POST['v_backup_gzip'];
  156. $v_backup_adv = 'yes';
  157. }
  158. }
  159. // Change backup path
  160. if (empty($_SESSION['error_msg'])) {
  161. if ($_POST['v_backup_dir'] != $v_backup_dir ) {
  162. exec (VESTA_CMD."v-change-sys-config-value BACKUP ".escapeshellarg($_POST['v_backup_dir']), $output, $return_var);
  163. check_return_code($return_var,$output);
  164. unset($output);
  165. if (empty($_SESSION['error_msg'])) $v_backup_dir = $_POST['v_backup_dir'];
  166. $v_backup_adv = 'yes';
  167. }
  168. }
  169. // Add remote backup host
  170. if (empty($_SESSION['error_msg'])) {
  171. if ((!empty($_POST['v_backup_host'])) && (empty($v_backup_host))) {
  172. $v_backup_host = escapeshellarg($_POST['v_backup_host']);
  173. $v_backup_type = escapeshellarg($_POST['v_backup_type']);
  174. $v_backup_username = escapeshellarg($_POST['v_backup_username']);
  175. $v_backup_password = escapeshellarg($_POST['v_backup_password']);
  176. $v_backup_bpath = escapeshellarg($_POST['v_backup_bpath']);
  177. exec (VESTA_CMD."v-add-backup-host '". $v_backup_type ."' '". $v_backup_host ."' '". $v_backup_username ."' '". $v_backup_password ."' '". $v_backup_bpath ."'", $output, $return_var);
  178. check_return_code($return_var,$output);
  179. unset($output);
  180. if (empty($_SESSION['error_msg'])) $v_backup_host = $_POST['v_backup_host'];
  181. if (empty($_SESSION['error_msg'])) $v_backup_type = $_POST['v_backup_type'];
  182. if (empty($_SESSION['error_msg'])) $v_backup_username = $_POST['v_backup_username'];
  183. if (empty($_SESSION['error_msg'])) $v_backup_password = $_POST['v_backup_password'];
  184. if (empty($_SESSION['error_msg'])) $v_backup_bpath = $_POST['v_backup_bpath'];
  185. $v_backup_new = 'yes';
  186. $v_backup_adv = 'yes';
  187. $v_backup_remote_adv = 'yes';
  188. }
  189. }
  190. // Change remote backup host type
  191. if (empty($_SESSION['error_msg'])) {
  192. if ((!empty($_POST['v_backup_host'])) && ($_POST['v_backup_type'] != $v_backup_type)) {
  193. exec (VESTA_CMD."v-delete-backup-host '". $v_backup_type ."'", $output, $return_var);
  194. unset($output);
  195. $v_backup_host = escapeshellarg($_POST['v_backup_host']);
  196. $v_backup_type = escapeshellarg($_POST['v_backup_type']);
  197. $v_backup_username = escapeshellarg($_POST['v_backup_username']);
  198. $v_backup_password = escapeshellarg($_POST['v_backup_password']);
  199. $v_backup_bpath = escapeshellarg($_POST['v_backup_bpath']);
  200. exec (VESTA_CMD."v-add-backup-host '". $v_backup_type ."' '". $v_backup_host ."' '". $v_backup_username ."' '". $v_backup_password ."' '". $v_backup_bpath ."'", $output, $return_var);
  201. check_return_code($return_var,$output);
  202. unset($output);
  203. if (empty($_SESSION['error_msg'])) $v_backup_host = $_POST['v_backup_host'];
  204. if (empty($_SESSION['error_msg'])) $v_backup_type = $_POST['v_backup_type'];
  205. if (empty($_SESSION['error_msg'])) $v_backup_username = $_POST['v_backup_username'];
  206. if (empty($_SESSION['error_msg'])) $v_backup_password = $_POST['v_backup_password'];
  207. if (empty($_SESSION['error_msg'])) $v_backup_bpath = $_POST['v_backup_bpath'];
  208. $v_backup_adv = 'yes';
  209. $v_backup_remote_adv = 'yes';
  210. }
  211. }
  212. // Change remote backup host
  213. if (empty($_SESSION['error_msg'])) {
  214. if ((!empty($_POST['v_backup_host'])) && ($_POST['v_backup_type'] == $v_backup_type) && (!isset($v_backup_new))) {
  215. if (($_POST['v_backup_host'] != $v_backup_host) || ($_POST['v_backup_username'] != $v_backup_username) || ($_POST['v_backup_password'] || $v_backup_password) || ($_POST['v_backup_bpath'] == $v_backup_bpath)){
  216. $v_backup_host = escapeshellarg($_POST['v_backup_host']);
  217. $v_backup_type = escapeshellarg($_POST['v_backup_type']);
  218. $v_backup_username = escapeshellarg($_POST['v_backup_username']);
  219. $v_backup_password = escapeshellarg($_POST['v_backup_password']);
  220. $v_backup_bpath = escapeshellarg($_POST['v_backup_bpath']);
  221. exec (VESTA_CMD."v-add-backup-host '". $v_backup_type ."' '". $v_backup_host ."' '". $v_backup_username ."' '". $v_backup_password ."' '". $v_backup_bpath ."'", $output, $return_var);
  222. check_return_code($return_var,$output);
  223. unset($output);
  224. if (empty($_SESSION['error_msg'])) $v_backup_host = $_POST['v_backup_host'];
  225. if (empty($_SESSION['error_msg'])) $v_backup_type = $_POST['v_backup_type'];
  226. if (empty($_SESSION['error_msg'])) $v_backup_username = $_POST['v_backup_username'];
  227. if (empty($_SESSION['error_msg'])) $v_backup_password = $_POST['v_backup_password'];
  228. if (empty($_SESSION['error_msg'])) $v_backup_bpath = $_POST['v_backup_bpath'];
  229. $v_backup_adv = 'yes';
  230. $v_backup_remote_adv = 'yes';
  231. }
  232. }
  233. }
  234. // Delete remote backup host
  235. if (empty($_SESSION['error_msg'])) {
  236. if ((empty($_POST['v_backup_host'])) && (!empty($v_backup_host))) {
  237. exec (VESTA_CMD."v-delete-backup-host '". $v_backup_type ."'", $output, $return_var);
  238. check_return_code($return_var,$output);
  239. unset($output);
  240. if (empty($_SESSION['error_msg'])) $v_backup_host = '';
  241. if (empty($_SESSION['error_msg'])) $v_backup_type = '';
  242. if (empty($_SESSION['error_msg'])) $v_backup_username = '';
  243. if (empty($_SESSION['error_msg'])) $v_backup_password = '';
  244. if (empty($_SESSION['error_msg'])) $v_backup_bpath = '';
  245. $v_backup_adv = '';
  246. $v_backup_remote_adv = '';
  247. }
  248. }
  249. // Flush field values on success
  250. if (empty($_SESSION['error_msg'])) {
  251. $_SESSION['ok_msg'] = __('Changes has been saved.');
  252. }
  253. }
  254. // Check system configuration
  255. exec (VESTA_CMD . "v-list-sys-config json", $output, $return_var);
  256. $data = json_decode(implode('', $output), true);
  257. $sys_arr = $data['config'];
  258. foreach ($sys_arr as $key => $value) {
  259. $_SESSION[$key] = $value;
  260. }
  261. // Header
  262. include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
  263. // Panel
  264. top_panel($user,$TAB);
  265. // Display body
  266. include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_server.html');
  267. // Flush session messages
  268. unset($_SESSION['error_msg']);
  269. unset($_SESSION['ok_msg']);
  270. // Footer
  271. include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');