index.php 27 KB

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