index.php 27 KB

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