index.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. ob_start();
  3. $TAB = 'BACKUP';
  4. include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
  5. // Edit as someone else?
  6. if (($_SESSION['userContext'] === 'admin') && (!empty($_GET['user']))) {
  7. $user=escapeshellarg($_GET['user']);
  8. }
  9. // List backup exclustions
  10. exec(HESTIA_CMD."v-list-user-backup-exclusions ".$user." 'json'", $output, $return_var);
  11. check_return_code($return_var, $output);
  12. $data = json_decode(implode('', $output), true);
  13. unset($output);
  14. // Parse web
  15. $v_username = $user;
  16. foreach ($data['WEB'] as $key => $value) {
  17. if (!empty($value)) {
  18. $v_web .= $key . ":" . str_replace(",", ":", $value) . "\n";
  19. } else {
  20. $v_web .= $key . "\n";
  21. }
  22. }
  23. // Parse dns
  24. foreach ($data['DNS'] as $key => $value) {
  25. if (!empty($value)) {
  26. $v_dns .= $key . ":" . $value. "\n";
  27. } else {
  28. $v_dns .= $key . "\n";
  29. }
  30. }
  31. // Parse mail
  32. foreach ($data['MAIL'] as $key => $value) {
  33. if (!empty($value)) {
  34. $v_mail .= $key . ":" . $value. "\n";
  35. } else {
  36. $v_mail .= $key . "\n";
  37. }
  38. }
  39. // Parse databases
  40. foreach ($data['DB'] as $key => $value) {
  41. if (!empty($value)) {
  42. $v_db .= $key . ":" . $value. "\n";
  43. } else {
  44. $v_db .= $key . "\n";
  45. }
  46. }
  47. // Parse user directories
  48. foreach ($data['USER'] as $key => $value) {
  49. if (!empty($value)) {
  50. $v_userdir .= $key . ":" . $value. "\n";
  51. } else {
  52. $v_userdir .= $key . "\n";
  53. }
  54. }
  55. // Check POST request
  56. if (!empty($_POST['save'])) {
  57. // Check token
  58. verify_csrf($_POST);
  59. $v_web = $_POST['v_web'];
  60. $v_web_tmp = str_replace("\r\n", ",", $_POST['v_web']);
  61. $v_web_tmp = rtrim($v_web_tmp, ",");
  62. $v_web_tmp = "WEB=" . escapeshellarg($v_web_tmp);
  63. $v_dns = $_POST['v_dns'];
  64. $v_dns_tmp = str_replace("\r\n", ",", $_POST['v_dns']);
  65. $v_dns_tmp = rtrim($v_dns_tmp, ",");
  66. $v_dns_tmp = "DNS=" . escapeshellarg($v_dns_tmp);
  67. $v_mail = $_POST['v_mail'];
  68. $v_mail_tmp = str_replace("\r\n", ",", $_POST['v_mail']);
  69. $v_mail_tmp = rtrim($v_mail_tmp, ",");
  70. $v_mail_tmp = "MAIL=" . escapeshellarg($v_mail_tmp);
  71. $v_db = $_POST['v_db'];
  72. $v_db_tmp = str_replace("\r\n", ",", $_POST['v_db']);
  73. $v_db_tmp = rtrim($v_db_tmp, ",");
  74. $v_db_tmp = "DB=" . escapeshellarg($v_db_tmp);
  75. $v_cron = $_POST['v_cron'];
  76. $v_cron_tmp = str_replace("\r\n", ",", $_POST['v_cron']);
  77. $v_cron_tmp = rtrim($v_cron_tmp, ",");
  78. $v_cron_tmp = "CRON=" . escapeshellarg($v_cron_tmp);
  79. $v_userdir = $_POST['v_userdir'];
  80. $v_userdir_tmp = str_replace("\r\n", ",", $_POST['v_userdir']);
  81. $v_userdir_tmp = rtrim($v_userdir_tmp, ",");
  82. $v_userdir_tmp = "USER=" . escapeshellarg($v_userdir_tmp);
  83. // Create temporary exeption list on a filesystem
  84. exec('mktemp', $mktemp_output, $return_var);
  85. $tmp = $mktemp_output[0];
  86. $fp = fopen($tmp, 'w');
  87. fwrite($fp, $v_web_tmp . "\n" . $v_dns_tmp . "\n" . $v_mail_tmp . "\n" . $v_db_tmp . "\n" . $v_userdir_tmp . "\n");
  88. fclose($fp);
  89. unset($mktemp_output);
  90. // Save changes
  91. exec(HESTIA_CMD."v-update-user-backup-exclusions ".$user." ".$tmp, $output, $return_var);
  92. check_return_code($return_var, $output);
  93. unset($output);
  94. // Set success message
  95. if (empty($_SESSION['error_msg'])) {
  96. $_SESSION['ok_msg'] = _("Changes has been saved.");
  97. }
  98. }
  99. // Render page
  100. render_page($user, $TAB, 'edit_backup_exclusions');
  101. // Flush session messages
  102. unset($_SESSION['error_msg']);
  103. unset($_SESSION['ok_msg']);