add_web.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. <div class="l-center edit">
  2. <div class="l-sort clearfix">
  3. <div class="l-unit-toolbar__buttonstrip">
  4. <a class="ui-button cancel" id="btn-back" href="/list/web/"><i class="fas fa-arrow-left status-icon blue"></i> <?=_('Back')?></a>
  5. </div>
  6. <div class="l-unit-toolbar__buttonstrip float-right">
  7. <a href="#" class="ui-button" title="<?=_('Save')?>" data-action="submit" data-id="vstobjects"><i class="fas fa-save status-icon purple"></i> <?=_('Save')?></a>
  8. </div>
  9. </div>
  10. </div>
  11. <div class="l-separator"></div>
  12. <div class="l-center animated fadeIn">
  13. <?php
  14. $back = $_SESSION['back'];
  15. if (empty($back)) {
  16. $back = "location.href='/list/web/'";
  17. } else {
  18. $back = "location.href='".$back."'";
  19. }
  20. ?>
  21. <form id="vstobjects" name="v_add_web" method="post">
  22. <input type="hidden" name="token" value="<?=$_SESSION['token']?>" />
  23. <input type="hidden" name="ok" value="Add" />
  24. <table class="data mode-add">
  25. <tr class="data-add">
  26. <td class="data-dotted">
  27. <table class="data-col1">
  28. <tr>
  29. <td></td>
  30. </tr>
  31. </table>
  32. </td>
  33. <td class="data-dotted">
  34. <table class="data-col2">
  35. <tr>
  36. <td class="step-top">
  37. <span class="page-title"><?=_('Add Web Domain')?></span>
  38. <br>
  39. <span>
  40. <?php
  41. if (!empty($_SESSION['error_msg'])) {
  42. echo "<span class=\"vst-error\"> <i class=\"fas fa-exclamation-circle status-icon red\"></i> ".htmlentities($_SESSION['error_msg'])."</span>";
  43. } else {
  44. if (!empty($_SESSION['ok_msg'])) {
  45. echo "<span class=\"vst-ok\"> <i class=\"fas fa-check-circle status-icon green\"></i> ".$_SESSION['ok_msg']."</span>";
  46. }
  47. }
  48. ?>
  49. </span>
  50. <?php if ($user == 'admin') { ?>
  51. <span class="alert alert-danger alert-with-icon">
  52. <i class="fas fa-exclamation"></i>
  53. <?=_('Avoid adding web domains on admin account')?>
  54. </span>
  55. <?php } ?>
  56. </td>
  57. </tr>
  58. <tr>
  59. <td class="vst-text step-top">
  60. <?php print _('Domain');?>
  61. </td>
  62. </tr>
  63. <tr>
  64. <td>
  65. <input type="text" size="20" class="vst-input" name="v_domain" id="v_domain" value="<?=htmlentities(trim($v_domain, "'"))?>">
  66. </td>
  67. </tr>
  68. <tr>
  69. <td class="vst-text input-label">
  70. <?php print _('IP address');?>
  71. </td>
  72. </tr>
  73. <tr>
  74. <td>
  75. <select class="vst-list" name="v_ip">
  76. <?php
  77. foreach ($ips as $ip => $value) {
  78. $display_ip = htmlentities(empty($value['NAT']) ? $ip : "{$value['NAT']}");
  79. $ip_selected = (!empty($v_ip) && $ip == $_POST['v_ip']) ? 'selected' : '';
  80. echo "\t\t\t\t<option value=\"{$ip}\" {$ip_selected}>{$display_ip}</option>\n";
  81. }
  82. ?>
  83. </select>
  84. </td>
  85. </tr>
  86. <?php if ((isset($_SESSION['DNS_SYSTEM'])) && (!empty($_SESSION['DNS_SYSTEM']))) {?>
  87. <?php if($panel[$user]['DNS_DOMAINS'] != "0") { ?><tr>
  88. <td class="vst-text input-label">
  89. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_dns" <?php if (empty($v_dns)&&$panel[$user]['DNS_DOMAINS'] != "0") ?>> <?php print _('DNS Support');?></label>
  90. </td>
  91. </tr><?php } ?>
  92. <?php } ?>
  93. <?php if ((isset($_SESSION['IMAP_SYSTEM'])) && (!empty($_SESSION['IMAP_SYSTEM']))) {?>
  94. <?php if($panel[$user]['MAIL_DOMAINS'] != "0") { ?><tr>
  95. <td class="vst-text input-label">
  96. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_mail" <?php if (empty($v_mail)&&$panel[$user]['MAIL_DOMAINS'] != "0") ?>> <?php print _('Mail Support');?></label>
  97. </td>
  98. </tr><?php } ?>
  99. <?php } ?>
  100. <tr>
  101. <td class="step-top vst-text" style="/*padding: 32px 0 20px 0;*/">
  102. <a href="javascript:elementHideShow('advtable');" class="vst-advanced"><?php print _('Advanced options');?>&nbsp;<i class="fas fa-arrow-circle-right"></i></a>
  103. </td>
  104. </tr>
  105. </table>
  106. <table class="data-col2" width="600px" style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="advtable">
  107. <tr>
  108. <td class="vst-text input-label">
  109. <?php print _('Aliases');?>
  110. </td>
  111. </tr>
  112. <tr>
  113. <td>
  114. <textarea size="20" class="vst-textinput short" name="v_aliases" id="v_aliases" ><?=htmlentities(trim($v_aliases, "'"))?></textarea>
  115. </td>
  116. </tr>
  117. <?php if (!empty($_SESSION['PROXY_SYSTEM'])) { echo ""; ?>
  118. <tr>
  119. <td class="vst-text step-top" >
  120. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_proxy" <?php if ($v_proxy !== 'off') echo "checked=yes" ?> onclick="javascript:elementHideShow('proxytable');"> <?php print _('Proxy Support');?></label>
  121. </td>
  122. </tr>
  123. <tr>
  124. <td>
  125. <table style="display:<?php if ($v_proxy == 'off') { echo 'none';} else {echo 'block';}?>;" id="proxytable" >
  126. <tr>
  127. <td class="vst-text input-label step-left">
  128. <?php print _('Proxy Extensions');?>
  129. </td>
  130. </tr>
  131. <tr>
  132. <td class="step-left">
  133. <textarea size="20" class="vst-textinput short" name="v_proxy_ext"><?php if (!empty($v_proxy_ext)) { echo htmlentities(trim($v_proxy_ext, "'"));} else { echo 'jpeg, jpg, png, gif, bmp, ico, svg, tif, tiff, css, js, htm, html, ttf, otf, webp, woff, txt, csv, rtf, doc, docx, xls, xlsx, ppt, pptx, odf, odp, ods, odt, pdf, psd, ai, eot, eps, ps, zip, tar, tgz, gz, rar, bz2, 7z, aac, m4a, mp3, mp4, ogg, wav, wma, 3gp, avi, flv, m4v, mkv, mov, mp4, mpeg, mpg, wmv, exe, iso, dmg, swf'; } ?></textarea>
  134. </td>
  135. </tr>
  136. </table>
  137. </td>
  138. </tr>
  139. <?php echo ""; }?>
  140. <tr>
  141. <td class="vst-text step-top">
  142. <?php print _('Web Statistics');?>
  143. </td>
  144. </tr>
  145. <tr>
  146. <td>
  147. <select class="vst-list" name="v_stats">
  148. <?php
  149. foreach ($stats as $key => $value) {
  150. $svalue = "'".$value."'";
  151. echo "\t\t\t\t<option value=\"".htmlentities($value)."\"";
  152. if (empty($v_stats)) $v_stats = 'none';
  153. if (( $value == $v_stats ) || ($svalue == $v_stats )){
  154. echo ' selected' ;
  155. }
  156. echo ">" . htmlentities(_($value)) . "</option>\n";
  157. }
  158. ?>
  159. </select>
  160. </td>
  161. </tr>
  162. <tr class="stats-auth" style="<? if (trim($v_stats, "'") == 'none') { ?>display:none<? } ?>">
  163. <td class="step-left vst-text input-label">
  164. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_stats_auth" <?php if (!empty($v_stats_user)) echo "checked=yes" ?>
  165. onclick="javascript:elementHideShow('statstable');"> <?=_('Statistics Authorization')?></label>
  166. </td>
  167. </tr>
  168. <tr>
  169. <td class="step-left">
  170. <table style="display:<?php if (empty($v_stats_user)) { echo 'none';} else {echo 'block';}?> ;" id="statstable" name="v-add-web-domain-stats-user">
  171. <tr>
  172. <td class="vst-text input-label">
  173. <?php print _('Username');?>
  174. </td>
  175. </tr>
  176. <tr>
  177. <td>
  178. <input type="text" size="20" class="vst-input" name="v_stats_user" value="<?=htmlentities(trim($v_stats_user, "'"))?>">
  179. </td>
  180. </tr>
  181. <tr>
  182. <td class="vst-text input-label">
  183. <?php print _('Password');?> / <a href="javascript:WEBrandom();" class="generate"><?php print _('generate');?></a>
  184. </td>
  185. </tr>
  186. <tr>
  187. <td>
  188. <input type="text" size="20" class="vst-input password" name="v_stats_password" value="<?=htmlentities(trim($v_stats_password, "'"))?>" id="v_password">
  189. </td>
  190. </tr>
  191. </table>
  192. </td>
  193. </tr>
  194. <tr>
  195. <td class="vst-text step-top">
  196. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_custom_doc_root_check" <?php if (!empty($v_custom_doc_root)) echo "checked=yes" ?> onclick="javascript:elementHideShow('v_custom_doc_root');"><?php print _('Custom document root');?></label>
  197. </td>
  198. </tr>
  199. <tr>
  200. <td class="step-left">
  201. <table style="display:<?php if (empty($v_custom_doc_root)) { echo 'none';} else {echo 'block';}?> ;" id="v_custom_doc_root">
  202. <tr>
  203. <td class="vst-text input-label">
  204. <?php print _('Point to');?>
  205. </td>
  206. </tr>
  207. <tr>
  208. <td>
  209. <input type="hidden" name="v-custom-doc-root_prepath" value="<?php echo $v_custom_doc_root_prepath;?>">
  210. <select class="vst-list" name="v-custom-doc-domain">
  211. <option value="<?=htmlentities(trim($v_domain, "'"))?>" id="v-custom-doc-domain-main"><?=htmlentities(trim($v_domain, "'"))?></option>
  212. <?php
  213. foreach ($user_domains as $domain) {
  214. if($domain != $v_domain ){
  215. if($v_custom_doc_domain == $domain){
  216. ?>
  217. <option value="<?php echo $domain;?>" selected="selected"><?php echo $domain;?></option>
  218. <?php
  219. }else{
  220. ?>
  221. <option value="<?php echo $domain;?>"><?php echo $domain;?></option>
  222. <?php
  223. }
  224. }
  225. }
  226. ?>
  227. </select>
  228. </td>
  229. </tr>
  230. <tr>
  231. <td class="vst-text input-label">
  232. <?php print( _('Directory'));?> <span class="optional">(<?php print _('optional');?>)</span>
  233. </td>
  234. </tr>
  235. <tr>
  236. <td>
  237. <input type="text" size="20" class="vst-input"
  238. name="v-custom-doc-folder" value="<?=htmlentities(trim($v_custom_doc_folder, "'"))?>">
  239. </td>
  240. </tr>
  241. <tr>
  242. <td>
  243. <small class="custom_docroot_hint"></small>
  244. </td>
  245. </tr>
  246. </table>
  247. </td>
  248. </tr>
  249. <tr>
  250. <td class="step-top vst-text">
  251. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_ssl" <?php if($v_ssl == 'yes' || $v_ssl == 'on') echo "checked=yes" ?> onclick="javascript:elementHideShow('ssltable');"> <?php print _('SSL Support');?></label>
  252. </td>
  253. </tr>
  254. <tr>
  255. <td>
  256. <table style="display:<?php if (empty($v_ssl)) { echo 'none';} else {echo 'block';}?>;" id="ssltable">
  257. <tr>
  258. <td class="step-left input-label vst-text">
  259. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_letsencrypt" <?php if($v_letsencrypt == 'yes' || $v_letsencrypt == 'on') echo "checked=yes" ?> onclick="App.Actions.WEB.toggle_letsencrypt(this)"> <?php print _('Lets Encrypt Support');?></label>
  260. </td>
  261. </tr>
  262. <tr>
  263. <td class="vst-text input-label lets-encrypt-note step-left" >
  264. <?= _('Your certificate will be automatically issued in 5 minutes')?>
  265. </td>
  266. </tr>
  267. <tr>
  268. <td class="vst-text input-label step-left">
  269. <?php print _('SSL Certificate');?>
  270. <span id="generate-csr"> / <a class="generate" target="_blank" href="/generate/ssl/?domain=<?=htmlentities(trim($v_domain, "'")) ?>"><?php print _('Generate CSR') ?></a></span>
  271. </td>
  272. </tr>
  273. <tr>
  274. <td class="step-left">
  275. <textarea size="20" class="vst-textinput short" name="v_ssl_crt"><?=htmlentities(trim($v_ssl_crt, "'"))?></textarea>
  276. </td>
  277. </tr>
  278. <tr>
  279. <td class="vst-text input-label step-left">
  280. <?php print _('SSL Key');?>
  281. </td>
  282. </tr>
  283. <tr>
  284. <td class="step-left">
  285. <textarea size="20" class="vst-textinput short" name="v_ssl_key"><?=htmlentities(trim($v_ssl_key, "'"))?></textarea>
  286. </td>
  287. </tr>
  288. <tr>
  289. <td class="vst-text input-label step-left">
  290. <?php print _('SSL Certificate Authority / Intermediate');?> <span class="optional">(<?php print _('optional');?>)</span>
  291. </td>
  292. </tr>
  293. <tr>
  294. <td class="step-left">
  295. <textarea size="20" class="vst-textinput short" name="v_ssl_ca"><?=htmlentities(trim($v_ssl_ca, "'"))?></textarea>
  296. </td>
  297. </tr>
  298. </table>
  299. </td>
  300. </tr>
  301. <tr>
  302. <td class="vst-text step-top">
  303. <label><input type="checkbox" size="20" class="vst-checkbox" name="v_ftp" <?php if (!empty($v_ftp) && count($v_ftp_users)) echo "checked=yes" ?> onclick="App.Actions.WEB.toggle_additional_ftp_accounts(this)"> <?php print _('Additional FTP Account');?></label>
  304. </td>
  305. </tr>
  306. <tr>
  307. <td>
  308. <?php foreach ($v_ftp_users as $i => $ftp_user): ?>
  309. <?php
  310. $v_ftp_user = $ftp_user['v_ftp_user'];
  311. $v_ftp_password = $ftp_user['v_ftp_password'];
  312. $v_ftp_path = $ftp_user['v_ftp_path'];
  313. $v_ftp_email = $ftp_user['v_ftp_email'];
  314. $v_ftp_pre_path = $ftp_user['v_ftp_pre_path'];
  315. ?>
  316. <table <?php echo (!empty($v_ftp)) ? "style='display: block'" : "style='display:none;'" ?> class="ftptable ftptable-nrm" name="v_add_domain_ftp">
  317. <tr>
  318. <td class="vst-text input-label">
  319. <?php print _('FTP') ?> #<span class="ftp-user-number"><?php print $i + 1; ?></span> <a class="ftp-remove-user additional-control do_delete" onCLick="App.Actions.WEB.remove_ftp_user(this)">(<?php print _('delete') ?>)</a>
  320. <input type="hidden" class="v-ftp-user-deleted" name="v_ftp_user[<?php print $i ?>][delete]" value="0" />
  321. <input type="hidden" class="v-ftp-user-is-new" name="v_ftp_user[<?php print $i ?>][is_new]" value="<?php print htmlentities($ftp_user['is_new']) ?>" />
  322. </td>
  323. </tr>
  324. <tr>
  325. <td class="vst-text step-left input-label">
  326. <?php print _('Username');?><br>
  327. <span style="font-size: 10pt; color:#777;"><?php print sprintf(_('Prefix %s will be added to username automatically'),$user."_");?></span>
  328. </td>
  329. </tr>
  330. <tr>
  331. <td class="step-left">
  332. <input type="text" size="20" class="vst-input v-ftp-user" <?php print $ftp_user['is_new'] != 1 ? 'disabled="disabled"' : '' ?> name="v_ftp_user[<?php print $i ?>][v_ftp_user]" value="<?=htmlentities(trim($v_ftp_user, "'"))?>">
  333. <small class="hint"></small>
  334. </td>
  335. </tr>
  336. <tr>
  337. <td class="vst-text step-left input-label">
  338. <?php print _('Password');?> / <a href="javascript:void(0);" onClick="FTPrandom(this)"; class="generate" ><?php print _('generate');?></a>
  339. </td>
  340. </tr>
  341. <tr>
  342. <td class="step-left">
  343. <input type="text" class="vst-input v-ftp-user-psw password" name="v_ftp_user[<?php print $i ?>][v_ftp_password]" value="<?=htmlentities(trim($v_ftp_password, "'"))?>">
  344. </td>
  345. </tr>
  346. <tr>
  347. <td class="vst-text step-left input-label">
  348. <?php print _('Path');?>
  349. </td>
  350. </tr>
  351. <tr>
  352. <td class="step-left">
  353. <input type="hidden" class="vst-input v-ftp-pre-path" name="v_ftp_pre_path" value="<?php print !empty($v_ftp_pre_path) ? htmlentities(trim($v_ftp_pre_path, "'")) : '/'; ?>">
  354. <input type="text" class="vst-input v-ftp-path" name="v_ftp_user[<?php print $i ?>][v_ftp_path]" value=".htmlentities(trim($v_ftp_path, "'"))?>">
  355. <br /><span class="ftp-path-prefix"><?=htmlentities(trim($v_ftp_pre_path, "'"))?></span><span class="ftp-path-value v-ftp-path-hint"></span>
  356. </td>
  357. </tr>
  358. <tr>
  359. <td class="vst-text step-left input-label">
  360. <?php print _('Send FTP credentials to email');?>
  361. </td>
  362. </tr>
  363. <tr>
  364. <td class="step-left">
  365. <input type="text" class="vst-input" name="v_ftp_user[<?php print $i ?>][v_ftp_email]" value="<?=htmlentities(trim($v_ftp_email, "'"))?>">
  366. </td>
  367. </tr>
  368. </table>
  369. <?php endforeach; ?>
  370. </td>
  371. </tr>
  372. <tr>
  373. <td class="vst-text step-top v-add-new-user step-bottom" style="display: none;">
  374. <a class="additional-control" onClick="App.Actions.WEB.add_ftp_user_form()"><?=_('Add one more FTP Account')?></a>
  375. </td>
  376. </tr>
  377. </table>
  378. <table class="data-col2">
  379. </table>
  380. </td>
  381. </tr>
  382. </table>
  383. </form>
  384. <div id="templates" class="hidden">
  385. <table class="ftptable ftptable-nrm" name="v_add_domain_ftp">
  386. <tr>
  387. <td class="vst-text input-label">
  388. <?php print _('FTP') ?> #<span class="ftp-user-number"></span> <a class="ftp-remove-user additional-control do_delete" onCLick="App.Actions.WEB.remove_ftp_user(this)">(<?=_('delete')?>)</a>
  389. <input type="hidden" class="v-ftp-user-deleted" name="v_ftp_user[%INDEX%][delete]" value="0" />
  390. <input type="hidden" class="v-ftp-user-is-new" name="v_ftp_user[%INDEX%][is_new]" value="1" />
  391. </td>
  392. </tr>
  393. <tr>
  394. <td class="vst-text step-left input-label">
  395. <?php print _('Username');?><br>
  396. <span style="font-size: 10pt; color:#777;"><?php print sprintf(_('Prefix %s will be added to username automatically'),$user."_");?></span>
  397. </td>
  398. </tr>
  399. <tr>
  400. <td class="step-left">
  401. <input type="text" size="20" class="vst-input v-ftp-user" name="v_ftp_user[%INDEX%][v_ftp_user]" value="">
  402. <small class="hint"></small>
  403. </td>
  404. </tr>
  405. <tr>
  406. <td class="vst-text step-left input-label">
  407. <?php print _('Password');?> / <a href="javascript:void(0);" onClick="FTPrandom(this)"; class="generate" ><?php print _('generate');?></a>
  408. </td>
  409. </tr>
  410. <tr>
  411. <td class="step-left">
  412. <input type="text" class="vst-input v-ftp-user-psw password" name="v_ftp_user[%INDEX%][v_ftp_password]" value="">
  413. </td>
  414. </tr>
  415. <tr>
  416. <td class="vst-text step-left input-label">
  417. <?php print _('Path');?>
  418. </td>
  419. </tr>
  420. <tr>
  421. <td class="step-left">
  422. <input type="hidden" class="vst-input v-ftp-pre-path" name="v_ftp_pre_path" value="">
  423. <input type="text" class="vst-input v-ftp-path" name="v_ftp_user[%INDEX%][v_ftp_path]" value="">
  424. <br /><span class="ftp-path-prefix"><?=htmlentities(trim($v_ftp_pre_path_new_user, "'")) ?></span><span class="ftp-path-value v-ftp-path-hint"></span>
  425. </td>
  426. </tr>
  427. <tr>
  428. <td class="vst-text step-left input-label">
  429. <?php print _('Send FTP credentials to email');?>
  430. </td>
  431. </tr>
  432. <tr>
  433. <td class="step-left">
  434. <input type="text" class="vst-input" name="v_ftp_user[%INDEX%][v_ftp_email]" value="">
  435. </td>
  436. </tr>
  437. </table>
  438. </div>
  439. </div>
  440. <script>
  441. GLOBAL.FTP_USER_PREFIX = <?=json_encode($user.'_')?>;
  442. GLOBAL.FTP_USER_PREPATH = <?=json_encode($v_ftp_user_prepath)?>;
  443. </script>