index.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606
  1. <?php
  2. // Init
  3. error_reporting(NULL);
  4. ob_start();
  5. session_start();
  6. unset($_SESSION['error_msg']);
  7. $TAB = 'WEB';
  8. include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
  9. // Header
  10. include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
  11. // Panel
  12. top_panel($user,$TAB);
  13. // Check user argument?
  14. if (empty($_GET['domain'])) {
  15. header("Location: /list/web/");
  16. exit;
  17. }
  18. // Edit as someone else?
  19. if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
  20. $user=escapeshellarg($_GET['user']);
  21. }
  22. // Check domain
  23. $v_domain = escapeshellarg($_GET['domain']);
  24. exec (VESTA_CMD."v-list-web-domain ".$user." ".$v_domain." json", $output, $return_var);
  25. if ($return_var != 0) {
  26. $error = implode('<br>', $output);
  27. if (empty($error)) $error = __('Error code:',$return_var);
  28. $_SESSION['error_msg'] = $error;
  29. } else {
  30. $data = json_decode(implode('', $output), true);
  31. unset($output);
  32. $v_username = $user;
  33. $v_domain = $_GET['domain'];
  34. $v_ip = $data[$v_domain]['IP'];
  35. $v_template = $data[$v_domain]['TPL'];
  36. $v_aliases = str_replace(',', "\n", $data[$v_domain]['ALIAS']);
  37. $valiases = explode(",", $data[$v_domain]['ALIAS']);
  38. $v_tpl = $data[$v_domain]['IP'];
  39. $v_cgi = $data[$v_domain]['CGI'];
  40. $v_elog = $data[$v_domain]['ELOG'];
  41. $v_ssl = $data[$v_domain]['SSL'];
  42. if ( $v_ssl == 'yes' ) {
  43. exec (VESTA_CMD."v-list-web-domain-ssl ".$user." '".$v_domain."' json", $output, $return_var);
  44. $ssl_str = json_decode(implode('', $output), true);
  45. unset($output);
  46. $v_ssl_crt = $ssl_str[$v_domain]['CRT'];
  47. $v_ssl_key = $ssl_str[$v_domain]['KEY'];
  48. $v_ssl_ca = $ssl_str[$v_domain]['CA'];
  49. }
  50. $v_ssl_home = $data[$v_domain]['SSL_HOME'];
  51. $v_proxy = $data[$v_domain]['PROXY'];
  52. $v_proxy_template = $data[$v_domain]['PROXY'];
  53. $v_proxy_ext = str_replace(',', ', ', $data[$v_domain]['PROXY_EXT']);
  54. $v_stats = $data[$v_domain]['STATS'];
  55. $v_stats_user = $data[$v_domain]['STATS_USER'];
  56. if (!empty($v_stats_user)) $v_stats_password = "••••••••";
  57. $v_ftp_user = $data[$v_domain]['FTP_USER'];
  58. if (!empty($v_ftp_user)) $v_ftp_password = "••••••••";
  59. $v_suspended = $data[$v_domain]['SUSPENDED'];
  60. if ( $v_suspended == 'yes' ) {
  61. $v_status = 'suspended';
  62. } else {
  63. $v_status = 'active';
  64. }
  65. $v_time = $data[$v_domain]['TIME'];
  66. $v_date = $data[$v_domain]['DATE'];
  67. exec (VESTA_CMD."v-list-user-ips ".$user." json", $output, $return_var);
  68. $ips = json_decode(implode('', $output), true);
  69. unset($output);
  70. exec (VESTA_CMD."v-list-web-templates json", $output, $return_var);
  71. $templates = json_decode(implode('', $output), true);
  72. unset($output);
  73. exec (VESTA_CMD."v-list-web-templates-proxy json", $output, $return_var);
  74. $proxy_templates = json_decode(implode('', $output), true);
  75. unset($output);
  76. exec (VESTA_CMD."v-list-web-stats json", $output, $return_var);
  77. $stats = json_decode(implode('', $output), true);
  78. unset($output);
  79. }
  80. // Action
  81. $v_ftp_email = $panel[$user]['CONTACT'];
  82. if (!empty($_POST['save'])) {
  83. $v_domain = escapeshellarg($_POST['v_domain']);
  84. // IP
  85. if (($v_ip != $_POST['v_ip']) && (empty($_SESSION['error_msg']))) {
  86. $v_ip = escapeshellarg($_POST['v_ip']);
  87. exec (VESTA_CMD."v-change-web-domain-ip ".$v_username." ".$v_domain." ".$v_ip." 'no'", $output, $return_var);
  88. if ($return_var != 0) {
  89. $error = implode('<br>', $output);
  90. if (empty($error)) $error = __('Error code:',$return_var);
  91. $_SESSION['error_msg'] = $error;
  92. }
  93. $restart_web = 'yes';
  94. unset($output);
  95. exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain." json", $output, $return_var);
  96. if ((empty($_SESSION['error_msg'])) && ($return_var == 0 )) {
  97. unset($output);
  98. exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." ".$v_domain." ".$v_ip." 'no'", $output, $return_var);
  99. if ($return_var != 0) {
  100. $error = implode('<br>', $output);
  101. if (empty($error)) $error = __('Error code:',$return_var);
  102. $_SESSION['error_msg'] = $error;
  103. }
  104. $restart_dns = 'yes';
  105. }
  106. unset($output);
  107. foreach($valiases as $v_alias ){
  108. exec (VESTA_CMD."v-list-dns-domain ".$v_username." '".$v_alias."' json", $output, $return_var);
  109. if ((empty($_SESSION['error_msg'])) && ($return_var == 0 )) {
  110. exec (VESTA_CMD."v-change-dns-domain-ip ".$v_username." '".$v_alias."' ".$v_ip, $output, $return_var);
  111. if ($return_var != 0) {
  112. $error = implode('<br>', $output);
  113. if (empty($error)) $error = __('Error code:',$return_var);
  114. $_SESSION['error_msg'] = $error;
  115. }
  116. $restart_dns = 'yes';
  117. }
  118. unset($output);
  119. }
  120. }
  121. // Template
  122. if (( $_SESSION['user'] == 'admin') && ($v_template != $_POST['v_template']) && (empty($_SESSION['error_msg']))) {
  123. $v_template = escapeshellarg($_POST['v_template']);
  124. exec (VESTA_CMD."v-change-web-domain-tpl ".$v_username." ".$v_domain." ".$v_template." 'no'", $output, $return_var);
  125. if ($return_var != 0) {
  126. $error = implode('<br>', $output);
  127. if (empty($error)) $error = __('Error code:',$return_var);
  128. $_SESSION['error_msg'] = $error;
  129. }
  130. unset($output);
  131. $restart_web = 'yes';
  132. }
  133. // Aliases
  134. if (empty($_SESSION['error_msg'])) {
  135. $waliases = preg_replace("/\n/", " ", $_POST['v_aliases']);
  136. $waliases = preg_replace("/,/", " ", $waliases);
  137. $waliases = preg_replace('/\s+/', ' ',$waliases);
  138. $waliases = trim($waliases);
  139. $aliases = explode(" ", $waliases);
  140. $v_aliases = str_replace(' ', "\n", $waliases);
  141. $result = array_diff($valiases, $aliases);
  142. foreach ($result as $alias) {
  143. if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
  144. $restart_web = 'yes';
  145. $v_template = escapeshellarg($_POST['v_template']);
  146. exec (VESTA_CMD."v-delete-web-domain-alias ".$v_username." ".$v_domain." '".$alias."' 'no'", $output, $return_var);
  147. if ($return_var != 0) {
  148. $error = implode('<br>', $output);
  149. if (empty($error)) $error = __('Error code:',$return_var);
  150. $_SESSION['error_msg'] = $error;
  151. }
  152. unset($output);
  153. if (empty($_SESSION['error_msg'])) {
  154. exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain, $output, $return_var);
  155. unset($output);
  156. if ($return_var == 0) {
  157. exec (VESTA_CMD."v-delete-dns-on-web-alias ".$v_username." ".$v_domain." '".$alias."' 'no'", $output, $return_var);
  158. if ($return_var != 0) {
  159. $error = implode('<br>', $output);
  160. if (empty($error)) $error = __('Error code:',$return_var);
  161. $_SESSION['error_msg'] = $error;
  162. }
  163. $restart_dns = 'yes';
  164. }
  165. unset($output);
  166. }
  167. }
  168. }
  169. $result = array_diff($aliases, $valiases);
  170. foreach ($result as $alias) {
  171. if ((empty($_SESSION['error_msg'])) && (!empty($alias))) {
  172. $restart_web = 'yes';
  173. $v_template = escapeshellarg($_POST['v_template']);
  174. exec (VESTA_CMD."v-add-web-domain-alias ".$v_username." ".$v_domain." '".$alias."' 'no'", $output, $return_var);
  175. if ($return_var != 0) {
  176. $error = implode('<br>', $output);
  177. if (empty($error)) $error = __('Error code:',$return_var);
  178. $_SESSION['error_msg'] = $error;
  179. }
  180. unset($output);
  181. if (empty($_SESSION['error_msg'])) {
  182. exec (VESTA_CMD."v-list-dns-domain ".$v_username." ".$v_domain, $output, $return_var);
  183. unset($output);
  184. if ($return_var == 0) {
  185. exec (VESTA_CMD."v-add-dns-on-web-alias ".$v_username." ".$v_domain." '".$alias."' 'no'", $output, $return_var);
  186. if ($return_var != 0) {
  187. $error = implode('<br>', $output);
  188. if (empty($error)) $error = __('Error code:',$return_var);
  189. $_SESSION['error_msg'] = $error;
  190. }
  191. $restart_dns = 'yes';
  192. }
  193. }
  194. unset($output);
  195. }
  196. }
  197. }
  198. // Proxy
  199. if ((!empty($v_proxy)) && (empty($_POST['v_proxy'])) && (empty($_SESSION['error_msg']))) {
  200. exec (VESTA_CMD."v-delete-web-domain-proxy ".$v_username." ".$v_domain." 'no'", $output, $return_var);
  201. if ($return_var != 0) {
  202. $error = implode('<br>', $output);
  203. if (empty($error)) $error = __('Error code:',$return_var);
  204. $_SESSION['error_msg'] = $error;
  205. }
  206. unset($output);
  207. unset($v_proxy);
  208. $restart_proxy = 'yes';
  209. }
  210. if ((!empty($v_proxy)) && (!empty($_POST['v_proxy'])) && (empty($_SESSION['error_msg']))) {
  211. $ext = preg_replace("/\n/", " ", $_POST['v_proxy_ext']);
  212. $ext = preg_replace("/,/", " ", $ext);
  213. $ext = preg_replace('/\s+/', ' ',$ext);
  214. $ext = trim($ext);
  215. $ext = str_replace(' ', ", ", $ext);
  216. if (( $v_proxy_template != $_POST['v_proxy_template']) || ($v_proxy_ext != $ext)) {
  217. $ext = str_replace(', ', ",", $ext);
  218. exec (VESTA_CMD."v-change-web-domain-proxy-tpl ".$v_username." ".$v_domain." ".escapeshellarg($_POST['v_proxy_template'])." ".escapeshellarg($ext)." 'no'", $output, $return_var);
  219. if ($return_var != 0) {
  220. $error = implode('<br>', $output);
  221. if (empty($error)) $error = __('Error code:',$return_var);
  222. $_SESSION['error_msg'] = $error;
  223. }
  224. $v_proxy_template = $_POST['v_proxy_template'];
  225. $v_proxy_ext = str_replace(',', ', ', $ext);
  226. unset($output);
  227. $restart_proxy = 'yes';
  228. }
  229. }
  230. if ((empty($v_proxy)) && (!empty($_POST['v_proxy'])) && (empty($_SESSION['error_msg']))) {
  231. $v_proxy_template = $_POST['v_proxy_template'];
  232. if (!empty($_POST['v_proxy_ext'])) {
  233. $ext = preg_replace("/\n/", " ", $_POST['v_proxy_ext']);
  234. $ext = preg_replace("/,/", " ", $ext);
  235. $ext = preg_replace('/\s+/', ' ',$ext);
  236. $ext = trim($ext);
  237. $ext = str_replace(' ', ",", $ext);
  238. $v_proxy_ext = str_replace(',', ', ', $ext);
  239. }
  240. exec (VESTA_CMD."v-add-web-domain-proxy ".$v_username." ".$v_domain." ".escapeshellarg($v_proxy_template)." ".escapeshellarg($ext)." 'no'", $output, $return_var);
  241. if ($return_var != 0) {
  242. $error = implode('<br>', $output);
  243. if (empty($error)) $error = __('Error code:',$return_var);
  244. $_SESSION['error_msg'] = $error;
  245. }
  246. unset($output);
  247. $restart_proxy = 'yes';
  248. }
  249. // SSL
  250. if (( $v_ssl == 'yes' ) && (empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
  251. exec (VESTA_CMD."v-delete-web-domain-ssl ".$v_username." ".$v_domain." 'no'", $output, $return_var);
  252. if ($return_var != 0) {
  253. $error = implode('<br>', $output);
  254. if (empty($error)) $error = __('Error code:',$return_var);
  255. $_SESSION['error_msg'] = $error;
  256. }
  257. unset($output);
  258. $v_ssl = 'no';
  259. $restart_web = 'yes';
  260. }
  261. if (($v_ssl == 'yes') && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
  262. if (( $v_ssl_crt != str_replace("\r\n", "\n", $_POST['v_ssl_crt'])) || ( $v_ssl_key != str_replace("\r\n", "\n", $_POST['v_ssl_key'])) || ( $v_ssl_ca != str_replace("\r\n", "\n", $_POST['v_ssl_ca']))) {
  263. exec ('mktemp -d', $mktemp_output, $return_var);
  264. $tmpdir = $mktemp_output[0];
  265. // Certificate
  266. if (!empty($_POST['v_ssl_crt'])) {
  267. $fp = fopen($tmpdir."/".$_POST['v_domain'].".crt", 'w');
  268. fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_crt']));
  269. fwrite($fp, "\n");
  270. fclose($fp);
  271. }
  272. // Key
  273. if (!empty($_POST['v_ssl_key'])) {
  274. $fp = fopen($tmpdir."/".$_POST['v_domain'].".key", 'w');
  275. fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_key']));
  276. fwrite($fp, "\n");
  277. fclose($fp);
  278. }
  279. // CA
  280. if (!empty($_POST['v_ssl_ca'])) {
  281. $fp = fopen($tmpdir."/".$_POST['v_domain'].".ca", 'w');
  282. fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_ca']));
  283. fwrite($fp, "\n");
  284. fclose($fp);
  285. }
  286. exec (VESTA_CMD."v-change-web-domain-sslcert ".$user." ".$v_domain." ".$tmpdir." 'no'", $output, $return_var);
  287. if ($return_var != 0) {
  288. $error = implode('<br>', $output);
  289. if (empty($error)) $error = __('Error code:',$return_var);
  290. $_SESSION['error_msg'] = $error;
  291. }
  292. unset($output);
  293. $restart_web = 'yes';
  294. $v_ssl_crt = $_POST['v_ssl_crt'];
  295. $v_ssl_key = $_POST['v_ssl_key'];
  296. $v_ssl_ca = $_POST['v_ssl_ca'];
  297. }
  298. }
  299. if (( $v_ssl == 'yes') && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
  300. if ( $v_ssl_home != $_POST['v_ssl_home'] ) {
  301. $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
  302. exec (VESTA_CMD."v-change-web-domain-sslhome ".$user." ".$v_domain." ".$v_ssl_home." 'no'", $output, $return_var);
  303. if ($return_var != 0) {
  304. $error = implode('<br>', $output);
  305. if (empty($error)) $error = __('Error code:',$return_var);
  306. $_SESSION['error_msg'] = $error;
  307. }
  308. $v_ssl_home = $_POST['v_ssl_home'];
  309. unset($output);
  310. }
  311. }
  312. if (( $v_ssl == 'no') && (!empty($_POST['v_ssl'])) && (empty($_SESSION['error_msg']))) {
  313. if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_crt']))) $errors[] = 'ssl certificate';
  314. if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_key']))) $errors[] = 'ssl key';
  315. if ((!empty($_POST['v_ssl'])) && (empty($_POST['v_ssl_home']))) $errors[] = 'ssl home';
  316. $v_ssl_home = escapeshellarg($_POST['v_ssl_home']);
  317. if (!empty($errors[0])) {
  318. foreach ($errors as $i => $error) {
  319. if ( $i == 0 ) {
  320. $error_msg = $error;
  321. } else {
  322. $error_msg = $error_msg.", ".$error;
  323. }
  324. }
  325. $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
  326. } else {
  327. exec ('mktemp -d', $mktemp_output, $return_var);
  328. $tmpdir = $mktemp_output[0];
  329. // Certificate
  330. if (!empty($_POST['v_ssl_crt'])) {
  331. $fp = fopen($tmpdir."/".$_POST['v_domain'].".crt", 'w');
  332. fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_crt']));
  333. fclose($fp);
  334. }
  335. // Key
  336. if (!empty($_POST['v_ssl_key'])) {
  337. $fp = fopen($tmpdir."/".$_POST['v_domain'].".key", 'w');
  338. fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_key']));
  339. fclose($fp);
  340. }
  341. // CA
  342. if (!empty($_POST['v_ssl_ca'])) {
  343. $fp = fopen($tmpdir."/".$_POST['v_domain'].".ca", 'w');
  344. fwrite($fp, str_replace("\r\n", "\n", $_POST['v_ssl_ca']));
  345. fclose($fp);
  346. }
  347. exec (VESTA_CMD."v-add-web-domain-ssl ".$user." ".$v_domain." ".$tmpdir." ".$v_ssl_home." 'no'", $output, $return_var);
  348. if ($return_var != 0) {
  349. $error = implode('<br>', $output);
  350. if (empty($error)) $error = __('Error code:',$return_var);
  351. $_SESSION['error_msg'] = $error;
  352. }
  353. unset($output);
  354. $v_ssl = 'yes';
  355. $restart_web = 'yes';
  356. $v_ssl_crt = $_POST['v_ssl_crt'];
  357. $v_ssl_key = $_POST['v_ssl_key'];
  358. $v_ssl_ca = $_POST['v_ssl_ca'];
  359. $v_ssl_home = $_POST['v_ssl_home'];
  360. }
  361. }
  362. // Web Stats
  363. if ((!empty($v_stats)) && ($_POST['v_stats'] == 'none') && (empty($_SESSION['error_msg']))) {
  364. exec (VESTA_CMD."v-delete-web-domain-stats ".$v_username." ".$v_domain, $output, $return_var);
  365. if ($return_var != 0) {
  366. $error = implode('<br>', $output);
  367. if (empty($error)) $error = __('Error code:',$return_var);
  368. $_SESSION['error_msg'] = $error;
  369. }
  370. unset($output);
  371. $v_stats = '';
  372. }
  373. if ((!empty($v_stats)) && ($_POST['v_stats'] != $v_stats) && (empty($_SESSION['error_msg']))) {
  374. $v_stats = escapeshellarg($_POST['v_stats']);
  375. exec (VESTA_CMD."v-change-web-domain-stats ".$v_username." ".$v_domain." ".$v_stats, $output, $return_var);
  376. if ($return_var != 0) {
  377. $error = implode('<br>', $output);
  378. if (empty($error)) $error = __('Error code:',$return_var);
  379. $_SESSION['error_msg'] = $error;
  380. }
  381. unset($output);
  382. }
  383. if ((empty($v_stats)) && ($_POST['v_stats'] != 'none') && (empty($_SESSION['error_msg']))) {
  384. $v_stats = escapeshellarg($_POST['v_stats']);
  385. exec (VESTA_CMD."v-add-web-domain-stats ".$v_username." ".$v_domain." ".$v_stats, $output, $return_var);
  386. if ($return_var != 0) {
  387. $error = implode('<br>', $output);
  388. if (empty($error)) $error = __('Error code:',$return_var);
  389. $_SESSION['error_msg'] = $error;
  390. }
  391. unset($output);
  392. }
  393. // Web Stats Auth
  394. if ((!empty($v_stats_user)) && (empty($_POST['v_stats_auth'])) && (empty($_SESSION['error_msg']))) {
  395. exec (VESTA_CMD."v-delete-web-domain-stats-user ".$v_username." ".$v_domain, $output, $return_var);
  396. if ($return_var != 0) {
  397. $error = implode('<br>', $output);
  398. if (empty($error)) $error = __('Error code:',$return_var);
  399. $_SESSION['error_msg'] = $error;
  400. }
  401. unset($output);
  402. $v_stats_user = '';
  403. $v_stats_password = '';
  404. }
  405. if ((empty($v_stats_user)) && (!empty($_POST['v_stats_auth'])) && (empty($_SESSION['error_msg']))) {
  406. if (empty($_POST['v_stats_user'])) $errors[] = __('stats username');
  407. if (empty($_POST['v_stats_password'])) $errors[] = __('stats password');
  408. if (!empty($errors[0])) {
  409. foreach ($errors as $i => $error) {
  410. if ( $i == 0 ) {
  411. $error_msg = $error;
  412. } else {
  413. $error_msg = $error_msg.", ".$error;
  414. }
  415. }
  416. $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
  417. } else {
  418. $v_stats_user = escapeshellarg($_POST['v_stats_user']);
  419. $v_stats_password = escapeshellarg($_POST['v_stats_password']);
  420. exec (VESTA_CMD."v-add-web-domain-stats-user ".$v_username." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $output, $return_var);
  421. if ($return_var != 0) {
  422. $error = implode('<br>', $output);
  423. if (empty($error)) $error = __('Error code:',$return_var);
  424. $_SESSION['error_msg'] = $error;
  425. }
  426. unset($output);
  427. $v_stats_password = "••••••••";
  428. }
  429. }
  430. if ((!empty($v_stats_user)) && (!empty($_POST['v_stats_auth'])) && (empty($_SESSION['error_msg']))) {
  431. if (empty($_POST['v_stats_user'])) $errors[] = __('stats user');
  432. if (empty($_POST['v_stats_password'])) $errors[] = __('stats password');
  433. if (!empty($errors[0])) {
  434. foreach ($errors as $i => $error) {
  435. if ( $i == 0 ) {
  436. $error_msg = $error;
  437. } else {
  438. $error_msg = $error_msg.", ".$error;
  439. }
  440. }
  441. $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
  442. }
  443. if (($v_stats_user != $_POST['v_stats_user']) || ($_POST['v_stats_password'] != "••••••••" ) && (empty($_SESSION['error_msg']))) {
  444. $v_stats_user = escapeshellarg($_POST['v_stats_user']);
  445. $v_stats_password = escapeshellarg($_POST['v_stats_password']);
  446. exec (VESTA_CMD."v-add-web-domain-stats-user ".$v_username." ".$v_domain." ".$v_stats_user." ".$v_stats_password, $output, $return_var);
  447. if ($return_var != 0) {
  448. $error = implode('<br>', $output);
  449. if (empty($error)) $error = __('Error code:',$return_var);
  450. $_SESSION['error_msg'] = $error;
  451. }
  452. unset($output);
  453. $v_stats_password = "••••••••";
  454. }
  455. }
  456. // Delete FTP Account
  457. if ((!empty($v_ftp_user)) && (empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
  458. exec (VESTA_CMD."v-delete-web-domain-ftp ".$v_username." ".$v_domain, $output, $return_var);
  459. if ($return_var != 0) {
  460. $error = implode('<br>', $output);
  461. if (empty($error)) $error = __('Error code:',$return_var);
  462. $_SESSION['error_msg'] = $error;
  463. }
  464. unset($output);
  465. $v_ftp= '';
  466. $v_ftp_user = '';
  467. $v_ftp_password = '';
  468. }
  469. // Change FTP Account
  470. if ((!empty($v_ftp_user)) && (!empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
  471. if (empty($_POST['v_ftp_user'])) $errors[] = __('ftp user');
  472. if (empty($_POST['v_ftp_password'])) $errors[] = __('ftp user password');
  473. if (!empty($errors[0])) {
  474. foreach ($errors as $i => $error) {
  475. if ( $i == 0 ) {
  476. $error_msg = $error;
  477. } else {
  478. $error_msg = $error_msg.", ".$error;
  479. }
  480. }
  481. $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
  482. }
  483. if (($v_ftp_user != $_POST['v_ftp_user']) || ($_POST['v_ftp_password'] != "••••••••" ) && (empty($_SESSION['error_msg']))) {
  484. $v_ftp_user = preg_replace("/^".$user."_/", "", $_POST['v_ftp_user']);
  485. $v_ftp_user = escapeshellarg($v_ftp_user);
  486. $v_ftp_password = escapeshellarg($_POST['v_ftp_password']);
  487. exec (VESTA_CMD."v-add-web-domain-ftp ".$v_username." ".$v_domain." ".$v_ftp_user." ".$v_ftp_password, $output, $return_var);
  488. if ($return_var != 0) {
  489. $error = implode('<br>', $output);
  490. if (empty($error)) $error = __('Error code:',$return_var);
  491. $_SESSION['error_msg'] = $error;
  492. }
  493. unset($output);
  494. $v_ftp= '';
  495. $v_ftp_user = $user."_".preg_replace("/^".$user."_/", "", $_POST['v_ftp_user']);
  496. $v_ftp_password = "••••••••";
  497. }
  498. }
  499. // Add FTP Account
  500. if ((empty($v_ftp_user)) && (!empty($_POST['v_ftp'])) && (empty($_SESSION['error_msg']))) {
  501. if ((!empty($_POST['v_ftp_email'])) && (!filter_var($_POST['v_ftp_email'], FILTER_VALIDATE_EMAIL))) $_SESSION['error_msg'] = __('Please enter valid email address.');
  502. if (empty($_POST['v_ftp_user'])) $errors[] = 'ftp user';
  503. if (empty($_POST['v_ftp_password'])) $errors[] = 'ftp user password';
  504. if (!empty($errors[0])) {
  505. foreach ($errors as $i => $error) {
  506. if ( $i == 0 ) {
  507. $error_msg = $error;
  508. } else {
  509. $error_msg = $error_msg.", ".$error;
  510. }
  511. }
  512. $_SESSION['error_msg'] = __('Field "%s" can not be blank.',$error_msg);
  513. }
  514. if (empty($_SESSION['error_msg'])) {
  515. $v_ftp_user = escapeshellarg($_POST['v_ftp_user']);
  516. $v_ftp_password = escapeshellarg($_POST['v_ftp_password']);
  517. exec (VESTA_CMD."v-add-web-domain-ftp ".$v_username." ".$v_domain." ".$v_ftp_user." ".$v_ftp_password, $output, $return_var);
  518. if ($return_var != 0) {
  519. $error = implode('<br>', $output);
  520. if (empty($error)) $error = __('Error code:',$return_var);
  521. $_SESSION['error_msg'] = $error;
  522. } else {
  523. if (!empty($_POST['v_ftp_email'])) {
  524. $to = $_POST['v_ftp_email'];
  525. $subject = __("FTP login credentials");
  526. $hostname = exec('hostname');
  527. $from = __('MAIL_FROM',$hostname);
  528. $mailtext .= __('FTP_ACCOUNT_READY',$_GET['domain'],$user,$_POST['v_ftp_user'],$_POST['v_ftp_password']);
  529. send_email($to, $subject, $mailtext, $from);
  530. unset($v_ftp_email);
  531. }
  532. }
  533. unset($output);
  534. $v_ftp_user = $user."_".$_POST['v_ftp_user'];
  535. $v_ftp_password = "••••••••";
  536. }
  537. }
  538. // Restart web
  539. if (!empty($restart_web) && (empty($_SESSION['error_msg']))) {
  540. exec (VESTA_CMD."v-restart-web", $output, $return_var);
  541. if ($return_var != 0) {
  542. $error = implode('<br>', $output);
  543. if (empty($error)) $error = __('Error code:',$return_var);
  544. $_SESSION['error_msg'] = $error;
  545. }
  546. }
  547. // Restart dns
  548. if (!empty($restart_dns) && (empty($_SESSION['error_msg']))) {
  549. exec (VESTA_CMD."v-restart-dns", $output, $return_var);
  550. if ($return_var != 0) {
  551. $error = implode('<br>', $output);
  552. if (empty($error)) $error = __('Error code:',$return_var);
  553. $_SESSION['error_msg'] = $error;
  554. }
  555. }
  556. if (empty($_SESSION['error_msg'])) {
  557. $_SESSION['ok_msg'] = __('Changes has been saved.');
  558. }
  559. }
  560. if ($_SESSION['user'] == 'admin') {
  561. include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_web.html');
  562. } else {
  563. include($_SERVER['DOCUMENT_ROOT'].'/templates/user/edit_web.html');
  564. }
  565. unset($_SESSION['error_msg']);
  566. unset($_SESSION['ok_msg']);
  567. //}
  568. // Footer
  569. include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');