edit_server.html 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140
  1. <!-- Begin toolbar -->
  2. <div class="l-center edit">
  3. <div class="l-sort clearfix">
  4. <div class="l-unit-toolbar__buttonstrip">
  5. <a class="ui-button cancel" dir="ltr" id="btn-back" href="/list/server/"><i class="fas fa-arrow-left status-icon blue"></i><?=_('Back');?></a>
  6. <a href="/list/ip/" class="ui-button cancel" dir="ltr"><i class="fas fa-ethernet status-icon blue"></i><?=_('IP');?></a>
  7. <?php if ((isset($_SESSION['FIREWALL_SYSTEM'])) && (!empty($_SESSION['FIREWALL_SYSTEM']))) {?>
  8. <a href="/list/firewall/" class="ui-button cancel" dir="ltr"><i class="fas fa-shield-alt status-icon red"></i><?=_('Firewall');?></a>
  9. <?php }?>
  10. </div>
  11. <div class="l-unit-toolbar__buttonstrip float-right">
  12. <a href="#" class="ui-button" data-action="submit" data-id="vstobjects"><i class="fas fa-save status-icon purple"></i><?=_('Save');?></a>
  13. </div>
  14. </div>
  15. </div>
  16. <!-- End toolbar -->
  17. <div class="l-separator"></div>
  18. <div class="l-center animated fadeIn">
  19. <form id="vstobjects" name="v_configure_server" method="post">
  20. <input type="hidden" name="token" value="<?=$_SESSION['token']?>">
  21. <input type="hidden" name="save" value="save">
  22. <table class="data">
  23. <tr class="data-add">
  24. <td class="data-dotted">
  25. <table class="data-col1">
  26. <tr>
  27. <td></td>
  28. </tr>
  29. </table>
  30. </td>
  31. <td class="data-dotted">
  32. <table class="data-col2" width="600px">
  33. <tr>
  34. <td class="u-pt18">
  35. <span class="page-title"><?=_('Configuring Server');?></span>
  36. </td>
  37. </tr>
  38. <tr>
  39. <td>
  40. <?php show_error_panel($_SESSION);?>
  41. </td>
  42. </tr>
  43. <!-- Basic options tab -->
  44. <tr>
  45. <td class="advanced-options">
  46. <a href="javascript:elementHideShow('basic');" class="vst-text">
  47. <i class="fas fa-cog"></i><b><?=_('Basic options');?> <img src="/images/arrow.png"></b>
  48. </a>
  49. </td>
  50. </tr>
  51. <tr>
  52. <td class="u-pl50 u-pt6">
  53. <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="basic">
  54. <tr>
  55. <td class="u-pt18">
  56. <label for="v_hostname" class="form-label"><?=_('Hostname');?></label>
  57. <input type="text" class="form-control" name="v_hostname" id="v_hostname" value="<?=htmlentities(trim($v_hostname, "'"))?>">
  58. </td>
  59. </tr>
  60. <tr>
  61. <td class="u-pt6">
  62. <label for="v_timezone" class="form-label"><?=_('Time Zone');?></label>
  63. <select class="form-select" name="v_timezone" id="v_timezone">
  64. <?php
  65. foreach ($v_timezones as $key => $value) {
  66. echo "\t\t\t\t<option value=\"".$key."\"";
  67. if ((!empty($v_timezone)) && ( $key == $v_timezone)){
  68. echo ' selected' ;
  69. }
  70. if($key == "UTC" && $v_timezone == "Etc/UTC"){
  71. echo ' selected' ;
  72. }
  73. echo ">".$value."</option>\n";
  74. }
  75. ?>
  76. </select>
  77. </td>
  78. </tr>
  79. <tr>
  80. <td class="u-pt6">
  81. <label for="v_theme" class="form-label"><?=_('Theme');?></label>
  82. <select class="form-select" name="v_theme" id="v_theme">
  83. <?php
  84. foreach ($theme as $key => $value) {
  85. echo "\t\t\t\t<option value=\"".$value."\"";
  86. if (($value == $_SESSION['THEME'])){
  87. echo ' selected' ;
  88. }
  89. echo ">".$value."</option>\n";
  90. }
  91. ?>
  92. </select>
  93. </td>
  94. </tr>
  95. <tr>
  96. <td class="u-pt6">
  97. <div class="form-check">
  98. <input class="form-check-input" type="checkbox" name="v_policy_user_change_theme" id="v_policy_user_change_theme" <?php if ((isset($_SESSION['POLICY_USER_CHANGE_THEME'])) && (!empty($_SESSION['POLICY_USER_CHANGE_THEME'])) && ($_SESSION['POLICY_USER_CHANGE_THEME'] == "no")) echo 'checked' ?>>
  99. <label for="v_policy_user_change_theme">
  100. <?=_('Set as selected theme for all users');?>
  101. </label>
  102. </div>
  103. </td>
  104. </tr>
  105. <tr>
  106. <td class="u-pt18">
  107. <label for="v_language" class="form-label"><?=_('Default Language');?></label>
  108. <select class="form-select" name="v_language" id="v_language">
  109. <?php
  110. foreach ($languages as $key => $value) {
  111. echo "\n\t\t\t\t\t\t\t\t\t<option value=\"".$key."\"";
  112. if (( $key == $_SESSION['LANGUAGE'] && (empty($v_language)) )) {
  113. echo 'selected' ;
  114. }
  115. echo ">".htmlentities($value)."</option>\n";
  116. }
  117. ?>
  118. </select>
  119. </td>
  120. </tr>
  121. <tr>
  122. <td class="u-pt6">
  123. <div class="form-check u-mb20">
  124. <input class="form-check-input" type="checkbox" name="v_language_update" id="v_language_update">
  125. <label for="v_language_update">
  126. <?=_('Set as default language for all users');?>
  127. </label>
  128. </div>
  129. </td>
  130. </tr>
  131. </table>
  132. </td>
  133. </tr>
  134. <!-- Updates tab -->
  135. <tr>
  136. <td class="advanced-options">
  137. <a href="javascript:elementHideShow('version');" class="vst-text">
  138. <i class="fas fa-code-branch"></i><b><?=_('Updates');?> <img src="/images/arrow.png"></b>
  139. </a>
  140. </td>
  141. </tr>
  142. <tr>
  143. <td class="u-pl50 u-pt6">
  144. <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="version">
  145. <tr>
  146. <td class="u-pt18">
  147. <?=_('Version'); ?>: <span class="optional"><?=$_SESSION['VERSION'];?></span>
  148. </td>
  149. </tr>
  150. <?php if ($_SESSION['RELEASE_BRANCH'] !== 'release') {?>
  151. <tr>
  152. <td>
  153. <?=_('Release'); ?>: <span class="optional"><?=$_SESSION['RELEASE_BRANCH'];?></span>
  154. </td>
  155. </tr>
  156. <?php } ?>
  157. <tr>
  158. <td class="u-pt6">
  159. <?=_('Options'); ?>
  160. </td>
  161. </tr>
  162. <tr>
  163. <td>
  164. <div class="form-check">
  165. <input class="form-check-input" type="checkbox" name="v_debug_mode" id="v_debug_mode" <?php if ((isset($_SESSION['DEBUG_MODE'])) && (!empty($_SESSION['DEBUG_MODE'])) && ($_SESSION['DEBUG_MODE'] == "true")) echo 'checked' ?>>
  166. <label for="v_debug_mode">
  167. <?=_('Enable debug mode');?>
  168. </label>
  169. </div>
  170. </td>
  171. </tr>
  172. <tr>
  173. <td>
  174. <div class="form-check">
  175. <input class="form-check-input" type="checkbox" name="v_experimental_features" id="v_experimental_features" <?php if ((isset($_SESSION['POLICY_SYSTEM_ENABLE_BACON'])) && (!empty($_SESSION['POLICY_SYSTEM_ENABLE_BACON'])) && ($_SESSION['POLICY_SYSTEM_ENABLE_BACON'] == "true")) echo 'checked' ?>>
  176. <label for="v_experimental_features">
  177. <?=_('Enable preview features');?>
  178. </label>
  179. <span class="hint">(<a href="/list/server/preview/"><?=_('View');?></a>)</span>
  180. </div>
  181. </td>
  182. </tr>
  183. <tr>
  184. <td>
  185. <div class="form-check">
  186. <input class="form-check-input" type="checkbox" name="v_upgrade_send_notification_email" id="v_upgrade_send_notification_email" <?php if ((isset($_SESSION['UPGRADE_SEND_EMAIL'])) && (!empty($_SESSION['UPGRADE_SEND_EMAIL'])) && ($_SESSION['UPGRADE_SEND_EMAIL'] == "true")) echo 'checked' ?>>
  187. <label for="v_upgrade_send_notification_email">
  188. <?=_('SYSTEM_UPGRADE_SEND_NOTIFICATION_EMAIL');?>
  189. </label>
  190. </div>
  191. </td>
  192. </tr>
  193. <tr>
  194. <td>
  195. <div class="form-check">
  196. <input class="form-check-input" type="checkbox" name="v_upgrade_send_email_log" id="v_upgrade_send_email_log" <?php if ((isset($_SESSION['UPGRADE_SEND_EMAIL_LOG'])) && (!empty($_SESSION['UPGRADE_SEND_EMAIL_LOG'])) && ($_SESSION['UPGRADE_SEND_EMAIL_LOG'] == "true")) echo 'checked' ?>>
  197. <label for="v_upgrade_send_email_log">
  198. <?=_('SYSTEM_UPGRADE_SEND_EMAIL_LOG');?>
  199. </label>
  200. </div>
  201. </td>
  202. </tr>
  203. <tr>
  204. <td>
  205. <br>
  206. </td>
  207. </tr>
  208. </table>
  209. </td>
  210. </tr>
  211. <!-- Web Server tab -->
  212. <tr>
  213. <td class="advanced-options">
  214. <a href="javascript:elementHideShow('web');" class="vst-text">
  215. <i class="fas fa-globe-americas"></i><b><?=_('Web Server');?> <img src="/images/arrow.png"></b>
  216. </a>
  217. </td>
  218. </tr>
  219. <tr>
  220. <td class="u-pl50 u-pt6">
  221. <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="web" class="u-pt18">
  222. <?php if (!empty($_SESSION['PROXY_SYSTEM'])) { ?>
  223. <tr>
  224. <td>
  225. <?=_('Proxy Server');?>: <span class="optional"><?=$_SESSION['PROXY_SYSTEM']; ?> <a href="/edit/server/<? echo $_SESSION['PROXY_SYSTEM'] ?>/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a></span>
  226. </td>
  227. </tr>
  228. <?php } ?>
  229. <?php if (!empty($_SESSION['WEB_SYSTEM'])) { ?>
  230. <tr>
  231. <td>
  232. <?=_('Web Server');?>: <span class="optional"><?=$_SESSION['WEB_SYSTEM']; ?> <a href="/edit/server/<? echo $_SESSION['WEB_SYSTEM'] ?>/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a></span>
  233. </td>
  234. </tr>
  235. <?php } ?>
  236. <?php if (!empty($_SESSION['WEB_BACKEND'])) { ?>
  237. <tr>
  238. <td>
  239. <?=_('Backend Server');?>: <span class="optional"><?=$_SESSION['WEB_BACKEND']; ?> <a href="/edit/server/<? echo $_SESSION['WEB_BACKEND'] ?>/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a></span>
  240. </td>
  241. </tr>
  242. <?php } ?>
  243. <?php if (!empty($_SESSION['WEB_BACKEND_POOL'])) { ?>
  244. <tr>
  245. <td>
  246. <?=_('Backend Pool Mode');?>: <span class="optional"><?=$_SESSION['WEB_BACKEND_POOL']; ?></span>
  247. </td>
  248. </tr>
  249. <?php } ?>
  250. <?php if(count($v_php_versions)): ?>
  251. <tr>
  252. <td class="u-pt18">
  253. <?=_('Enabled multi PHP versions');?>
  254. <div class="alert alert-info alert-with-icon u-input-width" role="alert">
  255. <i class="fas fa-info"></i>
  256. <p><?=_('Please wait while php is installed or removed');?></p>
  257. </div>
  258. </td>
  259. </tr>
  260. <?php foreach($v_php_versions as $php_version): ?>
  261. <tr>
  262. <td class="u-pt6">
  263. <div class="form-check">
  264. <input class="form-check-input" type="checkbox"
  265. <?=$php_version->installed?'checked':''; ?>
  266. <?=$php_version->protected?'disabled':''; ?>
  267. id="<?=$php_version->name?>"
  268. name="v_php_versions[<?=$php_version->tpl?>]">
  269. <label for="<?=$php_version->name?>">
  270. <?=$php_version->name?>
  271. </label>
  272. </div>
  273. </td>
  274. </tr>
  275. <?php foreach($php_version->usedby as $wd_user => $wd_domains ): ?>
  276. <?php foreach($wd_domains as $wd_domain ): ?>
  277. <tr>
  278. <td style="border: 1px lightgrey; padding:0 10px;">
  279. <span>
  280. <i class="fas fa-user"></i>
  281. <?=$wd_user;?>
  282. </span>
  283. <span class="optional" style="float:right"><?=$wd_domain;?></span>
  284. </td>
  285. </tr>
  286. <?php endforeach; ?>
  287. <?php endforeach; ?>
  288. <?php endforeach; ?>
  289. <?php endif; ?>
  290. <?php if(!empty($_SESSION['WEB_BACKEND'])){
  291. ?>
  292. <tr>
  293. <td class="u-pt18">
  294. <label for="v_php_default_version" class="form-label"><?=_('System PHP version');?></label>
  295. <select class="form-select" name="v_php_default_version" id="v_php_default_version">
  296. <?php
  297. foreach ($v_php_versions as $php_version) {
  298. if ($php_version -> installed) {
  299. ?>
  300. <option value="<?=$php_version->version; ?>" <?php if($php_version->name == DEFAULT_PHP_VERSION){ echo "selected" ;}?> ><?=$php_version->name; ?></option>
  301. <?php
  302. }
  303. }
  304. ?>
  305. </select>
  306. </td>
  307. </tr>
  308. <?php
  309. }
  310. ?>
  311. <tr>
  312. <td>
  313. <br>
  314. </td>
  315. </tr>
  316. </table>
  317. </td>
  318. </tr>
  319. <!-- DNS Server tab -->
  320. <?php if (!empty($_SESSION['DNS_SYSTEM'])) { ?>
  321. <tr>
  322. <td class="advanced-options">
  323. <a href="javascript:elementHideShow('dns');" class="vst-text">
  324. <i class="fas fa-atlas"></i><b><?=_('DNS Server');?> <img src="/images/arrow.png"></b>
  325. </a>
  326. </td>
  327. </tr>
  328. <tr>
  329. <td class="u-pl50 u-pt6">
  330. <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" class="u-mb20" id="dns">
  331. <tr>
  332. <td class="u-pt18">
  333. <?=_('DNS Server');?>: <span class="optional"><?=$_SESSION['DNS_SYSTEM']; ?> <a href="/edit/server/<? echo $_SESSION['DNS_SYSTEM'] ?>/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a></span>
  334. </td>
  335. </tr>
  336. <tr>
  337. <td>
  338. <?=_('DNS Cluster');?>: <span class="optional"><?php if ($v_dns_cluster == 'yes') { echo _('Yes'); } else { echo _('No'); } ?></span>
  339. </td>
  340. </tr>
  341. <?php if ($v_dns_cluster == 'yes') {
  342. $i = 0;
  343. foreach ($dns_cluster as $key => $value) {
  344. $i++;
  345. ?>
  346. <tr>
  347. <td>
  348. <label for="v_dns_remote_host" class="form-label"><?=_('Host'). ' #'.$i ?></label>
  349. <input type="text" class="form-control" name="v_dns_remote_host" id="v_dns_remote_host" value="<?=$key; ?>" disabled>
  350. </td>
  351. </tr>
  352. <?php } } ?>
  353. </table>
  354. </td>
  355. </tr>
  356. <?php } ?>
  357. <!-- Mail Server tab -->
  358. <?php if ((!empty($_SESSION['MAIL_SYSTEM']))) { ?>
  359. <tr>
  360. <td class="advanced-options">
  361. <a href="javascript:elementHideShow('mail');" class="vst-text">
  362. <i class="fas fa-mail-bulk"></i><b><?=_('Mail Server');?> <img src="/images/arrow.png"></b>
  363. </a>
  364. </td>
  365. </tr>
  366. <tr>
  367. <td class="u-pl50 u-pt6">
  368. <table style="display:<?php if (empty($v_mail_adv)) echo 'none';?> ;" id="mail">
  369. <tr>
  370. <td class="u-pt18">
  371. <?=_('Mail Server');?>: <span class="optional"><?=$_SESSION['MAIL_SYSTEM']; ?> <a href="/edit/server/<? echo $_SESSION['MAIL_SYSTEM'] ?>/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a></span>
  372. </td>
  373. </tr>
  374. <?php if (!empty($_SESSION['ANTIVIRUS_SYSTEM'])) { ?>
  375. <tr>
  376. <td>
  377. <?=_('Antivirus');?>: <span class="optional"><?=$_SESSION['ANTIVIRUS_SYSTEM']; ?> <a href="/edit/server/<? echo $_SESSION['ANTIVIRUS_SYSTEM'] ?>/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a></span>
  378. </td>
  379. </tr>
  380. <?php } ?>
  381. <?php if (!empty($_SESSION['ANTISPAM_SYSTEM'])) { ?>
  382. <tr>
  383. <td>
  384. <?=_('AntiSpam');?>: <span class="optional"><?=$_SESSION['ANTISPAM_SYSTEM']; ?> <a href="/edit/server/<? echo $_SESSION['ANTISPAM_SYSTEM'] ?>/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a></span>
  385. </td>
  386. </tr>
  387. <?php } ?>
  388. <?php if($_SESSION['WEBMAIL_SYSTEM']){?>
  389. <tr>
  390. <td class="u-pt18">
  391. <label for="v_webmail_alias" class="form-label">
  392. <?=_('Webmail URL');?> <span class="hint">(<?=$_SESSION['WEBMAIL_ALIAS'];?>.example.com)</span>
  393. </label>
  394. <input type="text" class="form-control u-input-width u-mb20" name="v_webmail_alias" id="v_webmail_alias" value="<?=$_SESSION['WEBMAIL_ALIAS']; ?>">
  395. </td>
  396. </tr>
  397. <?php } ?>
  398. <tr>
  399. <td class="u-pt6">
  400. <div class="form-check">
  401. <input class="form-check-input" type="checkbox" name="v_smtp_relay" id="v_smtp_relay" <?php if ($v_smtp_relay == 'true') echo 'checked'; ?> onclick="javascript:elementHideShow('smtp_relay_table');">
  402. <label for="v_smtp_relay">
  403. <?=_('Global SMTP Relay');?>
  404. </label>
  405. </div>
  406. </td>
  407. </tr>
  408. <tr>
  409. <td class="u-pl50">
  410. <table style="display:<?php if ($v_smtp_relay == 'true') {echo 'block';} else {echo 'none';} ?>;" id="smtp_relay_table">
  411. <tr>
  412. <td class="u-pt6">
  413. <label for="v_smtp_relay_host" class="form-label"><?=_('Host');?></label>
  414. <input type="text" class="form-control u-input-width" name="v_smtp_relay_host" id="v_smtp_relay_host" value="<?=htmlentities(trim($v_smtp_relay_host, "'"))?>">
  415. </td>
  416. </tr>
  417. <tr>
  418. <td class="u-pt6">
  419. <label for="v_smtp_relay_port" class="form-label"><?=_('Port');?></label>
  420. <input type="text" class="form-control" name="v_smtp_relay_port" id="v_smtp_relay_port" value="<?=htmlentities(trim($v_smtp_relay_port, "'"))?>">
  421. </td>
  422. </tr>
  423. <tr>
  424. <td class="u-pt6">
  425. <label for="v_smtp_relay_user" class="form-label"><?=_('Username');?></label>
  426. <input type="text" class="form-control" name="v_smtp_relay_user" id="v_smtp_relay_user" value="<?=htmlentities(trim($v_smtp_relay_user, "'"))?>">
  427. </td>
  428. </tr>
  429. <tr>
  430. <td class="u-pt6">
  431. <label for="v_smtp_relay_pass" class="form-label"><?=_('Password');?></label>
  432. <div class="u-pos-relative">
  433. <input type="text" class="form-control js-password-input" name="v_smtp_relay_pass" id="v_smtp_relay_pass">
  434. </div>
  435. </td>
  436. </tr>
  437. </table>
  438. </td>
  439. </tr>
  440. <tr>
  441. <td>
  442. <br>
  443. </td>
  444. </tr>
  445. </table>
  446. </td>
  447. </tr>
  448. <?php } ?>
  449. <!-- Databases tab -->
  450. <?php if (!empty($_SESSION['DB_SYSTEM'])) { ?>
  451. <tr>
  452. <td class="advanced-options">
  453. <a href="javascript:elementHideShow('db');" class="vst-text">
  454. <i class="fas fa-database"></i><b><?=_('Databases');?> <img src="/images/arrow.png"></b>
  455. </a>
  456. </td>
  457. </tr>
  458. <tr>
  459. <td class="u-pl50 u-pt6">
  460. <table style="display:<?php if (empty($v_db_adv)) echo 'none';?> ;" id="db">
  461. <tr>
  462. <td class="u-pt18">
  463. <label for="v_mysql" class="form-label">
  464. <?=_('MySQL Support');?> <a href="/edit/server/mysql/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a>
  465. </label>
  466. <select class="form-select" name="v_mysql" id="v_mysql" disabled>
  467. <option value="no"><?=_('No'); ?></option>
  468. <option value="yes" <?php if($v_mysql == 'yes') echo 'selected' ?>><?=_('Yes'); ?></option>
  469. </select>
  470. </td>
  471. </tr>
  472. <!-- MySQL / MariaDB Options-->
  473. <?php if ($v_mysql == 'yes') { ?>
  474. <tr>
  475. <td class="u-pt6">
  476. <label for="v_mysql_url" class="form-label"><?=_('phpMyAdmin URL');?></label>
  477. <input type="text" class="form-control u-mb20" name="v_mysql_url" id="v_mysql_url" value="<?=$_SESSION['DB_PMA_ALIAS']; ?>">
  478. </td>
  479. </tr>
  480. <tr>
  481. <td class="u-pt6">
  482. <label for="v_phpmyadmin_key" class="form-label">
  483. <?=_('phpMyAdmin Single Sign On');?><span class="hint">(<a href="https://docs.hestiacp.com/admin_docs/database/phpmyadmin-sso.html" target="_blank"><?=_('More info');?></a>)</span>
  484. </label>
  485. <select class="form-select" name="v_phpmyadmin_key" id="v_phpmyadmin_key" <?php if ($_SESSION['API'] != 'yes'){ echo "disabled"; }?>>
  486. <option value="no"><?=_('Disabled'); ?></option>
  487. <option value='yes' <?php if($_SESSION['PHPMYADMIN_KEY'] != ''){ echo 'selected="selected"'; }; ?>><?=_('Enabled'); ?></option>
  488. </select>
  489. </td>
  490. </tr>
  491. <?php } ?>
  492. <?php if ($v_mysql == 'yes') {
  493. $i = 0;
  494. foreach ($v_mysql_hosts as $value) {
  495. $i++;
  496. ?>
  497. <tr>
  498. <td class="u-pl50 u-pt6">
  499. <label for="v_mysql_host" class="form-label"><?=_('Host'). ' #'.$i ?></label>
  500. <input type="text" class="form-control u-input-width" name="v_mysql_host" id="v_mysql_host" value="<?=$value['HOST']?>" disabled>
  501. </td>
  502. </tr>
  503. <tr>
  504. <td class="u-pl50 u-pt6">
  505. <label for="v_mysql_password" class="form-label"><?=_('Password');?></label>
  506. <div class="u-pos-relative">
  507. <input type="text" class="form-control js-password-input" name="v_mysql_password" id="v_mysql_password">
  508. </div>
  509. </td>
  510. </tr>
  511. <tr>
  512. <td class="u-pl50 u-pt6">
  513. <label for="v_mysql_max" class="form-label">
  514. <?=_('Maximum Number Of Databases');?>
  515. </label>
  516. <input type="text" class="form-control" name="v_mysql_max" id="v_mysql_max" value="<?=$value['MAX_DB']; ?>" disabled>
  517. </td>
  518. </tr>
  519. <tr>
  520. <td class="u-pl50 u-pt6">
  521. <label for="v_mysql_current" class="form-label">
  522. <?=_('Current Number Of Databases');?>
  523. </label>
  524. <input type="text" class="form-control u-mb20" name="v_mysql_current" id="v_mysql_current" value="<?=$value['U_DB_BASES']; ?>" disabled>
  525. </td>
  526. </tr>
  527. <?php }} ?>
  528. <!-- PostgreSQL Options-->
  529. <?php if ($v_pgsql == 'yes') { ?>
  530. <tr>
  531. <td class="u-pt6">
  532. <label for="v_pgsql" class="form-label">
  533. <?=_('PostgreSQL Support');?> <a href="/edit/server/postgresql/"><i class="fas fa-pencil-alt status-icon orange icon-pad-right"></i></a>
  534. </label>
  535. <select class="form-select" name="v_pgsql" id="v_pgsql" disabled>
  536. <option value="no"><?=_('No'); ?></option>
  537. <option value='yes' <?php if($v_pgsql == 'yes') echo 'selected' ?>><?=_('Yes'); ?></option>
  538. </select>
  539. </td>
  540. </tr>
  541. <tr>
  542. <td>
  543. <label for="v_pgsql_url" class="form-label">
  544. <?=_('phpPgAdmin URL');?>
  545. </label>
  546. <input type="text" class="form-control u-mb20" name="v_pgsql_url" id="v_pgsql_url" value="<?=$_SESSION['DB_PGA_ALIAS']; ?>">
  547. </td>
  548. </tr>
  549. <?php } ?>
  550. <?php if ($v_pgsql == 'yes') {
  551. $i = 0;
  552. foreach ($v_pgsql_hosts as $value) {
  553. $i++;
  554. ?>
  555. <tr>
  556. <td class="u-pl50 u-pt6">
  557. <label for="v_pgsql_host" class="form-label"><?=_('Host'). ' #'.$i ?></label>
  558. <input type="text" class="form-control" name="v_pgsql_host" id="v_pgsql_host" value="<?=$value['HOST']?>" disabled>
  559. </td>
  560. </tr>
  561. <tr>
  562. <td class="u-pl50 u-pt6">
  563. <label for="v_psql_max" class="form-label">
  564. <?=_('Maximum Number Of Databases');?>
  565. </label>
  566. <input type="text" class="form-control" name="v_psql_max" id="v_psql_max" value="<?=$value['MAX_DB']; ?>" disabled>
  567. </td>
  568. </tr>
  569. <tr>
  570. <td class="u-pl50 u-pt6">
  571. <label for="v_pgsql_max" class="form-label">
  572. <?=_('Current Number Of Databases');?>
  573. </label>
  574. <input type="text" class="form-control u-mb20" name="v_pgsql_max" id="v_pgsql_max" value="<?=$value['U_DB_BASES']; ?>" disabled>
  575. </td>
  576. </tr>
  577. <?php }} ?>
  578. </table>
  579. </td>
  580. </tr>
  581. <?php } ?>
  582. <tr>
  583. <td class="advanced-options">
  584. <a href="javascript:elementHideShow('backup');" class="vst-text">
  585. <i class="fas fa-undo"></i><b><?=_('Backups');?> <img src="/images/arrow.png"></b>
  586. </a>
  587. </td>
  588. </tr>
  589. <tr>
  590. <td class="u-pl50 u-pt6">
  591. <table style="<?php if (empty($v_backup_adv)) echo 'display:none';?> ;" id="backup">
  592. <tr>
  593. <td class="u-pt18">
  594. <label for="v_backup" class="form-label"><?=_('Local backup');?></label>
  595. <select class="form-select u-input-width" name="v_backup" id="v_backup">
  596. <option value="no"><?=_('No'); ?></option>
  597. <option value="yes" <?php if($v_backup == 'yes') echo 'selected' ?>><?=_('Yes'); ?></option>
  598. </select>
  599. </td>
  600. </tr>
  601. <tr>
  602. <td class="u-pt6">
  603. <label for="v_backup_mode" class="form-label">
  604. <?=_('Compression');?> <a target="_blank" href="http://docs.hestiacp.com/admin_docs/backups.html#what-is-the-difference-between-zstd-and-gzip"><i class="fas fa-question-circle"></i></a>
  605. </label>
  606. <select class="form-select u-input-width" name="v_backup_mode" id="v_backup_mode">
  607. <option value="gzip" <?php if($v_backup_mode != 'zstd') echo 'selected' ?>>gzip</option>
  608. <option value="zstd" <?php if($v_backup_mode == 'zstd') echo 'selected' ?>>zstd</option>
  609. </select>
  610. </td>
  611. </tr>
  612. <tr>
  613. <td class="u-pt6">
  614. <label for="v_backup_gzip" class="form-label">
  615. <?=_('Compression level');?> <a target="_blank" href="http://docs.hestiacp.com/admin_docs/backups.html#what-is-the-optimal-compression-ratio"><i class="fas fa-question-circle"></i></a>
  616. </label>
  617. <select class="form-select u-input-width" name="v_backup_gzip" id="v_backup_gzip">
  618. <?php for ($level = 1; $level < 20; $level++) { ?>
  619. <option value='<?=$level;?>' <?php if($v_backup_gzip == $level) echo 'selected' ?>><?=$level;?><?php if($level > 9){ echo sprintf(' (%s)', _('zstd only')); } ?></option>
  620. <?php } ?>
  621. </select>
  622. </td>
  623. </tr>
  624. <tr>
  625. <td class="u-pt6">
  626. <label for="v_backup_dir" class="form-label">
  627. <?=_('Directory');?> <a target="_blank" href="https://docs.hestiacp.com/admin_docs/backups.html#how-to-change-default-backup-folder"><i class="fas fa-question-circle"></i></a>
  628. </label>
  629. <input type="text" class="form-control u-input-width u-mb20" name="v_backup_dir" id="v_backup_dir" value="<?=trim($v_backup_dir, "'")?>" disabled="disabled">
  630. </td>
  631. </tr>
  632. <tr>
  633. <td class="u-pt6">
  634. <div class="form-check">
  635. <input class="form-check-input" type="checkbox" name="v_backup_remote_adv" id="v_backup_remote_adv" <?php if (!empty($v_backup_remote_adv)) echo 'checked' ?> onclick="javascript:elementHideShow('remote_backup');">
  636. <label for="v_backup_remote_adv">
  637. <?=_('Remote backup');?>
  638. </label>
  639. </div>
  640. </td>
  641. </tr>
  642. <tr>
  643. <td class="u-pl50 u-pt6">
  644. <table style="display:<?php if (empty($v_backup_remote_adv)) echo 'none';?> ;" id="remote_backup">
  645. <tr>
  646. <td class="u-pt6">
  647. <label for="backup_type" class="form-label">
  648. <?=_('Protocol');?> <a target="_blank" href="http://docs.hestiacp.com/admin_docs/backups.html#what-kind-of-protocols-are-currently-supported"><i class="fas fa-question-circle"></i></a>
  649. </label>
  650. <select class="form-select u-input-width" name="v_backup_type" id="backup_type">
  651. <option value='ftp'><?=_('ftp'); ?></option>
  652. <option value='sftp' <?php if((!empty($v_backup_type)) && (trim($v_backup_type,"'") == 'sftp' )) echo 'selected="selected"'; ?>><?=_('sftp'); ?></option>
  653. <option value="b2" <?php if((!empty($v_backup_type)) && (trim($v_backup_type,"'") == 'b2' )) echo 'selected="selected"'; ?>><?=_('Backblaze'); ?>
  654. <option value="rclone" <?php if((!empty($v_backup_type)) && (trim($v_backup_type,"'") == 'rclone' )) echo 'selected="selected"'; ?>><?=_('Rclone'); ?>
  655. </select>
  656. </td>
  657. </tr>
  658. <tr style="display: <?php if ((!empty($v_backup_type)) && !in_array(trim($v_backup_type, "'"),array('ftp','sftp'))){ echo 'none';} else {echo 'block';} ?>" id="backup_sftp">
  659. <td>
  660. <table>
  661. <tr>
  662. <td class="u-pt6">
  663. <label for="v_backup_host" class="form-label"><?=_('Host');?></label>
  664. <input type="text" class="form-control u-input-width" name="v_backup_host" id="v_backup_host" value="<?=trim($v_backup_host, "'")?>">
  665. </td>
  666. </tr>
  667. <tr>
  668. <td class="u-pt6">
  669. <label for="v_backup_port" class="form-label"><?=_('Port');?></label>
  670. <input type="text" class="form-control u-mb20" name="v_backup_port" id="v_backup_port" value="<?=trim($v_backup_port, "'")?>">
  671. </td>
  672. </tr>
  673. <tr>
  674. <td class="u-pt6">
  675. <label for="v_backup_username" class="form-label"><?=_('Username');?></label>
  676. <input type="text" class="form-control" name="v_backup_username" id="v_backup_username" value="<?=trim($v_backup_username, "'")?>">
  677. </td>
  678. </tr>
  679. <tr>
  680. <td class="u-pt6">
  681. <label for="v_backup_password" class="form-label"><?=_('Password');?></label>
  682. <div class="u-pos-relative">
  683. <input type="text" class="form-control js-password-input" name="v_backup_password" id="v_backup_password" value="<?=trim($v_backup_password, "'")?>">
  684. </div>
  685. </td>
  686. </tr>
  687. <tr>
  688. <td class="u-pt18">
  689. <label for="v_backup_bpath" class="form-label"><?=_('Directory');?></label>
  690. <input type="text" class="form-control u-mb20" name="v_backup_bpath" id="v_backup_bpath" value="<?=trim($v_backup_bpath, "'")?>">
  691. </td>
  692. </tr>
  693. </table>
  694. </td>
  695. </tr>
  696. <tr style="display: <?php if ((empty($v_backup_type)) || !in_array(trim($v_backup_type, "'"),array('b2'))){ echo 'none';} else {echo 'block';} ?>" id="backup_bucket">
  697. <td>
  698. <table>
  699. <tr>
  700. <td class="u-pt6">
  701. <label for="v_backup_bucket" class="form-label"><?=_('Bucket');?></label>
  702. <input type="text" class="form-control u-input-width" name="v_backup_bucket" id="v_backup_bucket" value="<?=trim($v_backup_bucket, "'")?>">
  703. </td>
  704. </tr>
  705. <tr>
  706. <td class="u-pt6">
  707. <label for="v_backup_application_id" class="form-label"><?=_('Key ID');?></label>
  708. <input type="text" class="form-control" name="v_backup_application_id" id="v_backup_application_id" value="<?=trim($v_backup_application_id, "'")?>">
  709. </td>
  710. </tr>
  711. <tr>
  712. <td class="u-pt6">
  713. <label for="v_backup_application_key" class="form-label"><?=_('Application Key');?></label>
  714. <input type="text" class="form-control u-mb20" name="v_backup_application_key" id="v_backup_application_key" value="<?=trim($v_backup_application_key, "'")?>">
  715. </td>
  716. </tr>
  717. </table>
  718. </td>
  719. </tr>
  720. <tr style="display: <?php if ((empty($v_backup_type)) || !in_array(trim($v_backup_type, "'"),array('rclone'))){ echo 'none';} else {echo 'block';} ?>" id="backup_rclone">
  721. <td>
  722. <table>
  723. <tr>
  724. <td class="u-pt6">
  725. <label for="v_rclone_host" class="form-label"><?=_('Host');?></label>
  726. <input type="text" class="form-control u-input-width" name="v_rclone_host" id="v_rclone_host" value="<?=trim($v_rclone_host, "'")?>">
  727. </td>
  728. </tr>
  729. <tr>
  730. <td class="u-pt6">
  731. <label for="v_rclone_path" class="form-label"><?=_('Directory');?></label>
  732. <input type="text" class="form-control u-input-width u-mb20" name="v_rclone_path" id="v_rclone_path" value="<?=trim($v_rclone_path, "'")?>">
  733. </td>
  734. </tr>
  735. </table>
  736. </td>
  737. </tr>
  738. </table>
  739. </td>
  740. </tr>
  741. </table>
  742. </td>
  743. </tr>
  744. <tr>
  745. <td class="advanced-options">
  746. <a href="javascript:elementHideShow('ssl');" class="vst-text">
  747. <i class="fas fa-lock"></i><b><?=_('SSL');?><img src="/images/arrow.png"></b>
  748. </a>
  749. </td>
  750. </tr>
  751. <tr>
  752. <td class="u-pl50 u-pt6">
  753. <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="ssl">
  754. <tr>
  755. <td class="u-pt18">
  756. <label for="v_ssl_crt" class="form-label">
  757. <?=_('SSL Certificate');?>
  758. <span id="generate-csr"> / <a class="generate" target="_blank" href="/generate/ssl/?domain=<?=htmlentities(trim($v_hostname,'"'));?>"><?=_('Generate CSR');?></a></span>
  759. </label>
  760. <textarea class="form-control u-min-height100 u-console" name="v_ssl_crt" id="v_ssl_crt"><?=htmlentities(trim($v_ssl_crt, "'"))?></textarea>
  761. </td>
  762. </tr>
  763. <tr>
  764. <td class="u-pt6">
  765. <label for="v_ssl_key" class="form-label"><?=_('SSL Key');?></label>
  766. <textarea class="form-control u-min-height100 u-console" name="v_ssl_key" id="v_ssl_key"><?=htmlentities(trim($v_ssl_key, "'"))?></textarea>
  767. </td>
  768. </tr>
  769. <tr>
  770. <td>
  771. <table class="additional-info">
  772. <tr>
  773. <td>
  774. <b><?=_('SUBJECT');?>:</b>
  775. </td>
  776. <td class="details">
  777. <?=$v_ssl_subject?>
  778. </td>
  779. </tr>
  780. <?php if ($v_ssl_aliases){?>
  781. <tr>
  782. <td>
  783. <b><?=_('Aliases');?>:</b>
  784. </td>
  785. <td class="details">
  786. <?=$v_ssl_aliases?>
  787. </td>
  788. </tr>
  789. <?php } ?>
  790. <tr>
  791. <td>
  792. <b><?=_('NOT_BEFORE');?>:</b>
  793. </td>
  794. <td class="details">
  795. <?=$v_ssl_not_before?>
  796. </td>
  797. </tr>
  798. <tr>
  799. <td>
  800. <b><?=_('NOT_AFTER');?>:</b>
  801. </td>
  802. <td class="details">
  803. <?=$v_ssl_not_after?>
  804. </td>
  805. </tr>
  806. <tr>
  807. <td>
  808. <b><?=_('SIGNATURE');?>:</b>
  809. </td>
  810. <td class="details">
  811. <?=$v_ssl_signature?>
  812. </td>
  813. </tr>
  814. <tr>
  815. <td>
  816. <b><?=_('PUB_KEY');?>:</b>
  817. </td>
  818. <td class="details">
  819. <?=$v_ssl_pub_key?>
  820. </td>
  821. </tr>
  822. <tr>
  823. <td>
  824. <b><?=_('ISSUER');?>:</b>
  825. </td>
  826. <td class="details">
  827. <?=$v_ssl_issuer?>
  828. </td>
  829. </tr>
  830. </table>
  831. </td>
  832. </tr>
  833. </table>
  834. </td>
  835. </tr>
  836. <tr>
  837. <td class="advanced-options">
  838. <a href="javascript:elementHideShow('security');" class="vst-text">
  839. <i class="fas fa-key"></i><b><?=_('Security');?> <img src="/images/arrow.png"></b>
  840. </a>
  841. </td>
  842. </tr>
  843. <tr>
  844. <td class="u-pl50 u-pt6">
  845. <table style="<?php if (empty($v_security_adv)) echo 'display:none;';?>" id="security">
  846. <tr>
  847. <td class="section-title" onclick="javascript:elementHideShow('security-system-table',this);">
  848. <?=_('System');?>
  849. <i class="fas fa-plus-square status-icon dim maroon section-hide-button"></i>
  850. </td>
  851. </tr>
  852. <tr>
  853. <td>
  854. <table id="security-system-table" style="display: none;">
  855. <td class="u-pt18" style="font-size:1rem;padding-bottom:12px;">
  856. <?=_('API');?>
  857. </td>
  858. <tr>
  859. <td class="u-pt6">
  860. <label for="api" class="form-label"><?=_('Enable legacy API access');?></label>
  861. <select class="form-select" name="v_api" id="api">
  862. <option value="yes"><?=_('Yes'); ?></option>
  863. <option value="no" <?php if($_SESSION['API'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  864. </select>
  865. </td>
  866. </tr>
  867. <tr>
  868. <td class="u-pt6">
  869. <label for="api-system" class="form-label"><?=_('Enable API access');?></label>
  870. <select class="form-select" name="v_api_system" id="api-system">
  871. <option value='0' <?php if(empty($_SESSION['API_SYSTEM']) || $_SESSION['API_SYSTEM'] == '0') echo 'selected' ?>><?=_('Disabled'); ?></option>
  872. <option value='1' <?php if($_SESSION['API_SYSTEM'] == '1') echo 'selected' ?>><?=_('Enabled for admin'); ?></option>
  873. <option value='2' <?php if($_SESSION['API_SYSTEM'] == '2') echo 'selected' ?>><?=_('Enabled for all users'); ?></option>
  874. </select>
  875. </td>
  876. </tr>
  877. <tr>
  878. <td>
  879. <table id="security_ip" style="<?php if ($_SESSION['API'] == "no" && $_SESSION['API_SYSTEM'] == '0') echo 'display:none;';?>">
  880. <tr>
  881. <td class="u-pt6">
  882. <label for="v_api_allowed_ip" class="form-label" style="display: block">
  883. <?=_('Allowed IP addresses for API');?> <span class="optional" style="float: right">1 IP address per line</span>
  884. </label>
  885. <textarea class="form-control u-input-width" name="v_api_allowed_ip" id="v_api_allowed_ip"><?php
  886. foreach(explode(',',$_SESSION['API_ALLOWED_IP']) as $ip ){
  887. echo trim($ip)."\n";
  888. }
  889. ?></textarea>
  890. </td>
  891. </tr>
  892. </table>
  893. </td>
  894. </tr>
  895. <td class="u-pt18" style="font-size:1rem;padding-bottom:12px;">
  896. <?=_('Login');?>
  897. </td>
  898. <tr>
  899. <td class="u-pt6">
  900. <label for="v_login_style" class="form-label"><?=_('Login screen style');?></label>
  901. <select class="form-select" name="v_login_style" id="v_login_style">
  902. <option value="default"><?=_('Default'); ?></option>
  903. <option value="old" <?php if($_SESSION['LOGIN_STYLE'] == 'old') echo 'selected' ?>><?=_('Old Style'); ?></option>
  904. </select>
  905. </td>
  906. </tr>
  907. <tr>
  908. <td class="u-pt6">
  909. <label for="v_policy_system_password_reset" class="form-label"><?=_('Allow users to reset their passwords');?></label>
  910. <select class="form-select" name="v_policy_system_password_reset" id="v_policy_system_password_reset">
  911. <option value="yes"><?=_('Yes'); ?></option>
  912. <option value="no" <?php if($_SESSION['POLICY_SYSTEM_PASSWORD_RESET'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  913. </select>
  914. </td>
  915. </tr>
  916. <tr>
  917. <td class="u-pt6">
  918. <label for="v_inactive_session_timeout" class="form-label">
  919. <?=_('Inactive session timeout');?> (<?=_('Minutes');?>)
  920. </label>
  921. <input type="text" class="form-control u-mb20" name="v_inactive_session_timeout" id="v_inactive_session_timeout" value="<?=trim($_SESSION['INACTIVE_SESSION_TIMEOUT'], "'")?>">
  922. </td>
  923. </tr>
  924. <tr>
  925. <td class="u-pt6">
  926. <label for="v_policy_csrf_strictness" class="form-label"><?=_('Prevent CSRF');?></label>
  927. <select class="form-select" name="v_policy_csrf_strictness" id="v_policy_csrf_strictness">
  928. <option value="0" <?php if($_SESSION['POLICY_CSRF_STRICTNESS'] == '0') echo 'selected' ?>><?=_('Disabled');?></option>
  929. <option value="1" <?php if($_SESSION['POLICY_CSRF_STRICTNESS'] == '1') echo 'selected' ?>><?=_('Enabled');?></option>
  930. <option value="2" <?php if($_SESSION['POLICY_CSRF_STRICTNESS'] == '2') echo 'selected' ?>><?=_('Strict');?></option>
  931. </select>
  932. </td>
  933. </tr>
  934. </table>
  935. </td>
  936. </tr>
  937. <?php if (($_SESSION['userContext'] === "admin") && ($_SESSION['user'] === 'admin')) {?>
  938. <tr>
  939. <td class="section-title" onclick="javascript:elementHideShow('security-sysadminprotect-table',this);">
  940. <?=_('System Protection');?>
  941. <i class="fas fa-plus-square status-icon dim maroon section-hide-button"></i>
  942. </td>
  943. </tr>
  944. <tr>
  945. <td>
  946. <table id="security-sysadminprotect-table" class="u-pt18" style="display: none;">
  947. <tr>
  948. <td class="u-pt18" style="font-size:1rem;padding-bottom:12px;">
  949. <?=_('System Administrator account');?>
  950. </td>
  951. </tr>
  952. <tr>
  953. <td class="u-pt6">
  954. <label for="v_policy_system_protected_admin" class="form-label"><?=_('Restrict access to read-only for other administrators');?></label>
  955. <select class="form-select" name="v_policy_system_protected_admin" id="v_policy_system_protected_admin">
  956. <option value="yes"><?=_('Yes'); ?></option>
  957. <option value="no" <?php if($_SESSION['POLICY_SYSTEM_PROTECTED_ADMIN'] !== 'yes') echo 'selected' ?>><?=_('No'); ?></option>
  958. </select>
  959. </td>
  960. </tr>
  961. <tr>
  962. <td class="u-pt6">
  963. <label for="v_policy_system_hide_admin" class="form-label"><?=_('Hide account from other administrators');?></label>
  964. <select class="form-select" name="v_policy_system_hide_admin" id="v_policy_system_hide_admin">
  965. <option value="yes"><?=_('Yes'); ?></option>
  966. <option value="no" <?php if($_SESSION['POLICY_SYSTEM_HIDE_ADMIN'] !== 'yes') echo 'selected' ?>><?=_('No'); ?></option>
  967. </select>
  968. </td>
  969. </tr>
  970. <tr>
  971. <td class="u-pt6">
  972. <label for="v_policy_system_hide_services" class="form-label"><?=_('Do not allow other administrators to access Server Settings');?></label>
  973. <select class="form-select" name="v_policy_system_hide_services" id="v_policy_system_hide_services">
  974. <option value="yes"><?=_('Yes'); ?></option>
  975. <option value="no" <?php if($_SESSION['POLICY_SYSTEM_HIDE_SERVICES'] !== 'yes') echo 'selected' ?>><?=_('No'); ?></option>
  976. </select>
  977. </td>
  978. </tr>
  979. </table>
  980. </td>
  981. </tr>
  982. <?php } ?>
  983. <tr>
  984. <td class="section-title" onclick="javascript:elementHideShow('security-policies-table',this);">
  985. <?=_('Policies');?>
  986. <i class="fas fa-plus-square status-icon dim maroon section-hide-button"></i>
  987. </td>
  988. </tr>
  989. <tr>
  990. <td>
  991. <table id="security-policies-table" style="display: none;">
  992. <tr>
  993. <td class="u-pt18" style="font-size:1rem;padding-bottom:12px;">
  994. <?=_('Users');?>
  995. </td>
  996. </tr>
  997. <?php if ($_SESSION['POLICY_SYSTEM_ENABLE_BACON'] === 'true') { ?>
  998. <tr>
  999. <td class="u-pt6">
  1000. <label for="v_policy_user_view_suspended" class="form-label">
  1001. <?=_('Allow suspended users to log in with read-only access');?> <span class="hint">(<?=_('Preview');?>)</span>
  1002. </label>
  1003. <select class="form-select" name="v_policy_user_view_suspended" id="v_policy_user_view_suspended">
  1004. <option value="yes" <?php if($_SESSION['POLICY_USER_VIEW_SUSPENDED'] !== 'no') echo 'selected' ?>><?=_('Yes'); ?></option>
  1005. <option value="no" <?php if($_SESSION['POLICY_USER_VIEW_SUSPENDED'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  1006. </select>
  1007. </td>
  1008. </tr>
  1009. <?php } ?>
  1010. <tr>
  1011. <td class="u-pt6">
  1012. <label for="v_policy_user_edit_details" class="form-label"><?=_('Allow users to edit their account details');?></label>
  1013. <select class="form-select" name="v_policy_user_edit_details" id="v_policy_user_edit_details">
  1014. <option value="yes" <?php if($_SESSION['POLICY_USER_EDIT_DETAILS'] !== 'no') echo 'selected' ?>><?=_('Yes'); ?></option>
  1015. <option value="no" <?php if($_SESSION['POLICY_USER_EDIT_DETAILS'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  1016. </select>
  1017. </td>
  1018. </tr>
  1019. <tr>
  1020. <td class="u-pt6">
  1021. <label for="v_policy_user_edit_web_templates" class="form-label"><?=_('Allow users to change templates when editing web domains');?></label>
  1022. <select class="form-select" name="v_policy_user_edit_web_templates" id="v_policy_user_edit_web_templates">
  1023. <option value="yes" <?php if($_SESSION['POLICY_USER_EDIT_WEB_TEMPLATES'] !== 'no') echo 'selected' ?>><?=_('Yes'); ?></option>
  1024. <option value="no" <?php if($_SESSION['POLICY_USER_EDIT_WEB_TEMPLATES'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  1025. </select>
  1026. </td>
  1027. </tr>
  1028. <tr>
  1029. <td class="u-pt6">
  1030. <label for="v_policy_user_edit_dns_templates" class="form-label"><?=_('Allow users to change templates when editing DNS zones');?></label>
  1031. <select class="form-select" name="v_policy_user_edit_dns_templates" id="v_policy_user_edit_dns_templates">
  1032. <option value="yes" <?php if($_SESSION['POLICY_USER_EDIT_DNS_TEMPLATES'] !== 'no') echo 'selected' ?>><?=_('Yes'); ?></option>
  1033. <option value="no" <?php if($_SESSION['POLICY_USER_EDIT_DNS_TEMPLATES'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  1034. </select>
  1035. </td>
  1036. </tr>
  1037. <tr>
  1038. <td class="u-pt6">
  1039. <label for="v_policy_user_view_logs" class="form-label"><?=_('Allow users to view action and login history logs');?></label>
  1040. <select class="form-select" name="v_policy_user_view_logs" id="v_policy_user_view_logs">
  1041. <option value="yes" <?php if($_SESSION['POLICY_USER_VIEW_LOGS'] !== 'no') echo 'selected' ?>><?=_('Yes'); ?></option>
  1042. <option value="no" <?php if($_SESSION['POLICY_USER_VIEW_LOGS'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  1043. </select>
  1044. </td>
  1045. </tr>
  1046. <tr>
  1047. <td class="u-pt6">
  1048. <label for="v_policy_user_delete_logs" class="form-label"><?=_('Allow users to delete log history');?></label>
  1049. <select class="form-select" name="v_policy_user_delete_logs" id="v_policy_user_delete_logs">
  1050. <option value="yes" <?php if($_SESSION['POLICY_USER_DELETE_LOGS'] !== 'no') echo 'selected' ?>><?=_('Yes'); ?></option>
  1051. <option value="no" <?php if($_SESSION['POLICY_USER_DELETE_LOGS'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  1052. </select>
  1053. </td>
  1054. </tr>
  1055. <tr>
  1056. <td class="u-pt18" style="font-size:1rem;padding-bottom:12px;">
  1057. <?=_('Domains');?>
  1058. </td>
  1059. </tr>
  1060. <tr>
  1061. <td class="u-pt6">
  1062. <label for="v_enforce_subdomain_ownership" class="form-label"><?=_('Enforce subdomain ownership');?></label>
  1063. <select class="form-select u-mb20" name="v_enforce_subdomain_ownership" id="v_enforce_subdomain_ownership">
  1064. <option value="yes"><?=_('Yes'); ?></option>
  1065. <option value="no" <?php if($_SESSION['ENFORCE_SUBDOMAIN_OWNERSHIP'] == 'no') echo 'selected' ?>><?=_('No'); ?></option>
  1066. </select>
  1067. </td>
  1068. </tr>
  1069. </table>
  1070. </td>
  1071. </tr>
  1072. </table>
  1073. </td>
  1074. </tr>
  1075. <tr>
  1076. <td class="advanced-options">
  1077. <a href="javascript:elementHideShow('hestia');" class="vst-text">
  1078. <i class="fas fa-puzzle-piece"></i><b><?=_('Hestia Control Panel Plugins');?> <img src="/images/arrow.png"></b>
  1079. </a>
  1080. </td>
  1081. </tr>
  1082. <tr>
  1083. <td class="u-pl50 u-pt6">
  1084. <table style="display:<?php if (empty($v_adv)) echo 'none';?> ;" id="hestia">
  1085. <tr>
  1086. <td class="u-pt18">
  1087. <label for="v_plugin_app_installer" class="form-label"><?=_('Quick App Installer');?></label>
  1088. <select class="form-select u-input-width" name="v_plugin_app_installer" id="v_plugin_app_installer">
  1089. <option value="false"><?=_('No'); ?></option>
  1090. <option value="true" <?php if($_SESSION['PLUGIN_APP_INSTALLER'] == 'true') echo 'selected' ?>><?=_('Yes'); ?></option>
  1091. </select>
  1092. </td>
  1093. </tr>
  1094. <tr>
  1095. <td class="u-pt6">
  1096. <label for="v_filemanager" class="form-label"><?=_('Filemanager');?></label>
  1097. <select class="form-select" name="v_filemanager" id="v_filemanager">
  1098. <option value="false"><?=_('No'); ?></option>
  1099. <option value="true" <?php if($_SESSION['FILE_MANAGER'] == 'true') echo 'selected' ?>><?=_('Yes'); ?></option>
  1100. </select>
  1101. </td>
  1102. </tr>
  1103. <tr>
  1104. <td class="u-pt6">
  1105. <label for="v_quota" class="form-label"><?=_('FileSystem Disk Quota');?></label>
  1106. <select class="form-select" name="v_quota" id="v_quota">
  1107. <option value="no"><?=_('No'); ?></option>
  1108. <option value="yes" <?php if($_SESSION['DISK_QUOTA'] == 'yes') echo 'selected' ?>><?=_('Yes'); ?></option>
  1109. </select>
  1110. </td>
  1111. </tr>
  1112. <tr>
  1113. <td class="u-pt6">
  1114. <label for="v_firewall" class="form-label"><?=_('Firewall');?></label>
  1115. <select class="form-select u-mb20" name="v_firewall" id="v_firewall">
  1116. <option value="no"><?=_('No'); ?></option>
  1117. <option value="yes" <?php if($_SESSION['FIREWALL_SYSTEM'] == 'iptables') echo 'selected' ?>><?=_('Yes'); ?></option>
  1118. </select>
  1119. </td>
  1120. </tr>
  1121. </table>
  1122. </td>
  1123. </tr>
  1124. </table>
  1125. <table class="data-col2"></table>
  1126. </td>
  1127. </tr>
  1128. </table>
  1129. </form>
  1130. </div>