edit_server.php 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435
  1. <!-- Begin toolbar -->
  2. <div class="toolbar">
  3. <div class="toolbar-inner">
  4. <div class="toolbar-buttons">
  5. <a href="/list/server/" class="button button-secondary button-back js-button-back">
  6. <i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?>
  7. </a>
  8. <a href="/list/ip/" class="button button-secondary">
  9. <i class="fas fa-ethernet icon-blue"></i><?= _("Network") ?>
  10. </a>
  11. <a href="/edit/server/whitelabel/" class="button button-secondary">
  12. <i class="fas fa-paint-brush icon-blue"></i><?= _("White Label") ?>
  13. </a>
  14. <a href="/edit/server/hestiaweb/" class="button button-secondary">
  15. <i class="fas fa-clock icon-blue"></i><?= _("Panel Cronjobs") ?>
  16. </a>
  17. </div>
  18. <div class="toolbar-buttons">
  19. <button type="submit" class="button" form="main-form">
  20. <i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
  21. </button>
  22. </div>
  23. </div>
  24. </div>
  25. <!-- End toolbar -->
  26. <!-- Begin form -->
  27. <div class="container">
  28. <form
  29. x-data="{
  30. timezone: '<?= $v_timezone ?? "" ?>',
  31. theme: '<?= $_SESSION["THEME"] ?>',
  32. language: '<?= $_SESSION["LANGUAGE"] ?>',
  33. hasSmtpRelay: <?= $v_smtp_relay == "true" ? "true" : "false" ?>,
  34. remoteBackupEnabled: <?= !empty($v_backup_remote_adv) ? "true" : "false" ?>,
  35. backupType: '<?= !empty($v_backup_type) ? trim($v_backup_type, "'") : "" ?>',
  36. webmailAlias: '<?= $_SESSION["WEBMAIL_ALIAS"] ?? "" ?>',
  37. apiSystem: '<?= $_SESSION["API_SYSTEM"] ?>',
  38. legacyApi: '<?= $_SESSION["API"] ?>',
  39. }"
  40. id="main-form"
  41. name="v_configure_server"
  42. method="post"
  43. >
  44. <input type="hidden" name="token" value="<?= $_SESSION["token"] ?>">
  45. <input type="hidden" name="save" value="save">
  46. <div class="form-container">
  47. <h1 class="u-mb20">
  48. <?= _("Configure Server") ?>
  49. </h1>
  50. <?php show_alert_message($_SESSION); ?>
  51. <!-- Basic options section -->
  52. <details class="box-collapse u-mb10">
  53. <summary class="box-collapse-header">
  54. <i class="fas fa-gear u-mr10"></i><?= _("Basic Options") ?>
  55. </summary>
  56. <div class="box-collapse-content">
  57. <div class="u-mb10">
  58. <label for="v_hostname" class="form-label">
  59. <?= _("Hostname") ?>
  60. </label>
  61. <input
  62. type="text"
  63. class="form-control"
  64. name="v_hostname"
  65. id="v_hostname"
  66. value="<?= htmlentities(trim($v_hostname, "'")) ?>"
  67. >
  68. </div>
  69. <div class="u-mb10">
  70. <label for="v_timezone" class="form-label">
  71. <?= _("Time Zone") ?>
  72. </label>
  73. <select x-model="timezone" class="form-select" name="v_timezone" id="v_timezone">
  74. <?php foreach ($v_timezones as $key => $value) { ?>
  75. <option value="<?= $value ?>">
  76. <?= $value ?>
  77. </option>
  78. <?php } ?>
  79. </select>
  80. </div>
  81. <div class="u-mb10">
  82. <label for="v_theme" class="form-label">
  83. <?= _("Theme") ?>
  84. </label>
  85. <select x-model="theme" class="form-select" name="v_theme" id="v_theme">
  86. <?php foreach ($theme as $key => $value) { ?>
  87. <option value="<?= $value ?>">
  88. <?= $value ?>
  89. </option>
  90. <?php } ?>
  91. </select>
  92. </div>
  93. <div class="form-check u-mb20">
  94. <input
  95. class="form-check-input"
  96. type="checkbox"
  97. name="v_policy_user_change_theme"
  98. id="v_policy_user_change_theme"
  99. <?= $_SESSION["POLICY_USER_CHANGE_THEME"] == "no" ? "checked" : "" ?>
  100. >
  101. <label for="v_policy_user_change_theme">
  102. <?= _("Set as selected theme for all users") ?>
  103. </label>
  104. </div>
  105. <div class="u-mb10">
  106. <label for="v_language" class="form-label"><?= _("Default Language") ?></label>
  107. <select x-model="language" class="form-select" name="v_language" id="v_language">
  108. <?php foreach ($languages as $key => $value) { ?>
  109. <option value="<?= $key ?>">
  110. <?= $value ?>
  111. </option>
  112. <?php } ?>
  113. </select>
  114. </div>
  115. <div class="form-check u-mb10">
  116. <input
  117. class="form-check-input"
  118. type="checkbox"
  119. name="v_language_update"
  120. id="v_language_update"
  121. >
  122. <label for="v_language_update">
  123. <?= _("Set as default language for all users") ?>
  124. </label>
  125. </div>
  126. <div class="form-check">
  127. <input
  128. class="form-check-input"
  129. type="checkbox"
  130. name="v_debug_mode"
  131. id="v_debug_mode"
  132. <?= $_SESSION["DEBUG_MODE"] == "true" ? "checked" : "" ?>
  133. >
  134. <label for="v_debug_mode">
  135. <?= _("Enable debug mode") ?>
  136. </label>
  137. </div>
  138. </div>
  139. </details>
  140. <!-- Updates section -->
  141. <details class="box-collapse u-mb10">
  142. <summary class="box-collapse-header">
  143. <i class="fas fa-code-branch u-mr10"></i><?= _("Updates") ?>
  144. </summary>
  145. <div class="box-collapse-content">
  146. <p class="u-mb10">
  147. <?= _("Version") ?>:
  148. <span class="optional">
  149. <?= $_SESSION["VERSION"] ?>
  150. </span>
  151. </p>
  152. <?php if ($_SESSION["RELEASE_BRANCH"] !== "release") { ?>
  153. <p class="u-mb10">
  154. <?= _("Release") ?>:
  155. <span class="optional">
  156. <?= $_SESSION["RELEASE_BRANCH"] ?>
  157. </span>
  158. </p>
  159. <?php } ?>
  160. <p class="u-mb5">
  161. <?= _("Options") ?>
  162. </p>
  163. <div class="form-check">
  164. <input
  165. class="form-check-input"
  166. type="checkbox"
  167. name="v_experimental_features"
  168. id="v_experimental_features"
  169. <?= $_SESSION["POLICY_SYSTEM_ENABLE_BACON"] == "true" ? "checked" : "" ?>
  170. >
  171. <label for="v_experimental_features">
  172. <?= _("Enable preview features") ?>
  173. </label>
  174. <span class="hint">
  175. <a href="/list/server/preview/">
  176. (<?= _("View") ?>)
  177. </a>
  178. </span>
  179. </div>
  180. <div class="form-check">
  181. <input
  182. class="form-check-input"
  183. type="checkbox"
  184. name="v_upgrade_send_notification_email"
  185. id="v_upgrade_send_notification_email"
  186. <?= $_SESSION["UPGRADE_SEND_EMAIL"] == "true" ? "checked" : "" ?>
  187. >
  188. <label for="v_upgrade_send_notification_email">
  189. <?= _("Send email notification when an update has been installed") ?>
  190. </label>
  191. </div>
  192. <div class="form-check">
  193. <input
  194. class="form-check-input"
  195. type="checkbox"
  196. name="v_upgrade_send_email_log"
  197. id="v_upgrade_send_email_log"
  198. <?= $_SESSION["UPGRADE_SEND_EMAIL_LOG"] == "true" ? "checked" : "" ?>
  199. >
  200. <label for="v_upgrade_send_email_log">
  201. <?= _("Send update installation log by email") ?>
  202. </label>
  203. </div>
  204. </div>
  205. </details>
  206. <!-- Web Server section -->
  207. <details class="box-collapse u-mb10">
  208. <summary class="box-collapse-header">
  209. <i class="fas fa-earth-americas u-mr10"></i><?= _("Web Server") ?>
  210. </summary>
  211. <div class="box-collapse-content">
  212. <?php if (!empty($_SESSION["PROXY_SYSTEM"])) { ?>
  213. <p>
  214. <?= _("Proxy Server") ?>:
  215. <span class="u-ml5">
  216. <?= $_SESSION["PROXY_SYSTEM"] ?>
  217. </span>
  218. <a href="/edit/server/<?= $_SESSION["PROXY_SYSTEM"] ?>/" class="u-ml5">
  219. <i class="fas fa-pencil icon-orange"></i>
  220. </a>
  221. </p>
  222. <?php } ?>
  223. <?php if (!empty($_SESSION["WEB_SYSTEM"])) { ?>
  224. <p>
  225. <?= _("Web Server") ?>:
  226. <span class="u-ml5">
  227. <?= $_SESSION["WEB_SYSTEM"] ?>
  228. </span>
  229. <a href="/edit/server/<?= $_SESSION["WEB_SYSTEM"] ?>/" class="u-ml5">
  230. <i class="fas fa-pencil icon-orange"></i>
  231. </a>
  232. </p>
  233. <?php } ?>
  234. <?php if (!empty($_SESSION["WEB_BACKEND"])) { ?>
  235. <p>
  236. <?= _("PHP Interpreter") ?>:
  237. <span class="u-ml5">
  238. <?= $_SESSION["WEB_BACKEND"] ?>
  239. </span>
  240. <a href="/edit/server/<? echo $_SESSION["WEB_BACKEND"] ?>/" class="u-ml5">
  241. <i class="fas fa-pencil icon-orange"></i>
  242. </a>
  243. </p>
  244. <?php } ?>
  245. <?php if (!empty($_SESSION["WEB_BACKEND_POOL"])) { ?>
  246. <p>
  247. <?= _("Backend Pool Mode") ?>:
  248. <span class="u-ml5">
  249. <?= $_SESSION["WEB_BACKEND_POOL"] ?>
  250. </span>
  251. </p>
  252. <?php } ?>
  253. <?php if (count($v_php_versions)) { ?>
  254. <div class="u-mt15">
  255. <p class="u-mb10">
  256. <?= _("Enabled PHP Versions") ?>
  257. </p>
  258. <div class="alert alert-info u-mb10" role="alert">
  259. <i class="fas fa-info"></i>
  260. <p><?= _("It may take a few minutes to save your changes. Please wait until the process has completed and do not refresh the page.") ?></p>
  261. </div>
  262. </div>
  263. <?php foreach ($v_php_versions as $php_version) { ?>
  264. <div class="form-check">
  265. <input
  266. class="form-check-input"
  267. type="checkbox"
  268. id="<?= $php_version->name ?>"
  269. name="v_php_versions[<?= $php_version->tpl ?>]"
  270. <?= $php_version->installed ? "checked" : "" ?>
  271. <?= $php_version->protected ? "disabled" : "" ?>
  272. >
  273. <label for="<?= $php_version->name ?>">
  274. <?= $php_version->name ?>
  275. </label>
  276. </div>
  277. <?php foreach ($php_version->usedby as $wd_user => $wd_domains) { ?>
  278. <?php foreach ($wd_domains as $wd_domain) { ?>
  279. <p class="u-side-by-side" style="padding: 0 10px">
  280. <span>
  281. <i class="fas fa-user"></i>
  282. <?= $wd_user ?>
  283. </span>
  284. <span class="optional"><?= $wd_domain ?></span>
  285. </p>
  286. <?php } ?>
  287. <?php } ?>
  288. <?php } ?>
  289. <?php } ?>
  290. <?php if (!empty($_SESSION["WEB_BACKEND"])) { ?>
  291. <div class="u-mt10">
  292. <label for="v_php_default_version" class="form-label">
  293. <?= _("System PHP Version") ?>
  294. </label>
  295. <select class="form-select" name="v_php_default_version" id="v_php_default_version">
  296. <?php foreach ($v_php_versions as $php_version) { ?>
  297. <?php if ($php_version->installed) { ?>
  298. <option
  299. value="<?= $php_version->version ?>"
  300. <?= $php_version->name == DEFAULT_PHP_VERSION ? "selected" : "" ?>
  301. >
  302. <?= $php_version->name ?>
  303. </option>
  304. <?php } ?>
  305. <?php } ?>
  306. </select>
  307. </div>
  308. <?php } ?>
  309. </div>
  310. </details>
  311. <!-- DNS Server section -->
  312. <?php if (!empty($_SESSION["DNS_SYSTEM"])) { ?>
  313. <details class="box-collapse u-mb10">
  314. <summary class="box-collapse-header">
  315. <i class="fas fa-book-atlas u-mr10"></i><?= _("DNS Server") ?>
  316. </summary>
  317. <div class="box-collapse-content">
  318. <p>
  319. <?= _("DNS Server") ?>:
  320. <span class="u-ml5">
  321. <?= $_SESSION["DNS_SYSTEM"] ?>
  322. </span>
  323. <a href="/edit/server/<? echo $_SESSION["DNS_SYSTEM"] ?>/" class="u-ml5">
  324. <i class="fas fa-pencil icon-orange"></i>
  325. </a>
  326. </p>
  327. <p>
  328. <?= _("DNS Cluster") ?>:
  329. <span class="u-ml5">
  330. <?= $v_dns_cluster == "yes" ? _("Yes") : _("No") ?>
  331. </span>
  332. </p>
  333. <?php if ($v_dns_cluster == "yes") {
  334. $i = 0;
  335. foreach ($dns_cluster as $key => $value) {
  336. $i++;
  337. ?>
  338. <div>
  339. <label for="v_dns_remote_host" class="form-label">
  340. <?= _("Host") . " #" . $i ?>
  341. </label>
  342. <input
  343. type="text"
  344. class="form-control"
  345. name="v_dns_remote_host"
  346. id="v_dns_remote_host"
  347. value="<?= $key ?>"
  348. disabled
  349. >
  350. </div>
  351. <?php } } ?>
  352. </div>
  353. </details>
  354. <?php } ?>
  355. <!-- Mail Server section -->
  356. <?php if (!empty($_SESSION["MAIL_SYSTEM"])) { ?>
  357. <details class="box-collapse u-mb10">
  358. <summary class="box-collapse-header">
  359. <i class="fas fa-envelopes-bulk u-mr10"></i><?= _("Mail Server") ?>
  360. </summary>
  361. <div class="box-collapse-content">
  362. <p>
  363. <?= _("Mail Server") ?>:
  364. <span class="u-ml5">
  365. <?= $_SESSION["MAIL_SYSTEM"] ?>
  366. </span>
  367. <a href="/edit/server/<? echo $_SESSION["MAIL_SYSTEM"] ?>/" class="u-ml5">
  368. <i class="fas fa-pencil icon-orange"></i>
  369. </a>
  370. </p>
  371. <?php if (!empty($_SESSION["ANTIVIRUS_SYSTEM"])) { ?>
  372. <p>
  373. <?= _("Anti-Virus") ?>:
  374. <span class="u-ml5">
  375. <?= $_SESSION["ANTIVIRUS_SYSTEM"] ?>
  376. </span>
  377. <a href="/edit/server/<? echo $_SESSION["ANTIVIRUS_SYSTEM"] ?>/" class="u-ml5">
  378. <i class="fas fa-pencil icon-orange"></i>
  379. </a>
  380. </p>
  381. <?php } ?>
  382. <?php if (!empty($_SESSION["ANTISPAM_SYSTEM"])) { ?>
  383. <p>
  384. <?= _("Spam Filter") ?>:
  385. <span class="u-ml5">
  386. <?= $_SESSION["ANTISPAM_SYSTEM"] ?>
  387. </span>
  388. <a href="/edit/server/<?= $_SESSION["ANTISPAM_SYSTEM"] ?>/" class="u-ml5">
  389. <i class="fas fa-pencil icon-orange"></i>
  390. </a>
  391. </p>
  392. <?php } ?>
  393. <?php if ($_SESSION["WEBMAIL_SYSTEM"]) { ?>
  394. <div class="u-mt15 u-mb10">
  395. <label for="v_webmail_alias" class="form-label">
  396. <?= _("Webmail Alias") ?>
  397. <span x-cloak x-text="`${webmailAlias}.example.com`" class="hint"></span>
  398. </label>
  399. <input
  400. x-model="webmailAlias"
  401. type="text"
  402. class="form-control"
  403. name="v_webmail_alias"
  404. id="v_webmail_alias"
  405. >
  406. </div>
  407. <?php } ?>
  408. <div class="form-check u-mt20">
  409. <input
  410. x-model="hasSmtpRelay"
  411. class="form-check-input"
  412. type="checkbox"
  413. name="v_smtp_relay"
  414. id="v_smtp_relay"
  415. >
  416. <label for="v_smtp_relay">
  417. <?= _("Global SMTP Relay") ?>
  418. </label>
  419. </div>
  420. <div
  421. x-cloak
  422. x-show="hasSmtpRelay"
  423. class="u-pl30 u-mt20"
  424. >
  425. <div class="u-mb10">
  426. <label for="v_smtp_relay_host" class="form-label">
  427. <?= _("Host") ?>
  428. </label>
  429. <input
  430. type="text"
  431. class="form-control"
  432. name="v_smtp_relay_host"
  433. id="v_smtp_relay_host"
  434. value="<?= htmlentities(trim($v_smtp_relay_host, "'")) ?>"
  435. >
  436. </div>
  437. <div class="u-mb10">
  438. <label for="v_smtp_relay_port" class="form-label">
  439. <?= _("Port") ?>
  440. </label>
  441. <input
  442. type="text"
  443. class="form-control"
  444. name="v_smtp_relay_port"
  445. id="v_smtp_relay_port"
  446. value="<?= htmlentities(trim($v_smtp_relay_port, "'")) ?>"
  447. >
  448. </div>
  449. <div class="u-mb10">
  450. <label for="v_smtp_relay_user" class="form-label">
  451. <?= _("Username") ?>
  452. </label>
  453. <input
  454. type="text"
  455. class="form-control"
  456. name="v_smtp_relay_user"
  457. id="v_smtp_relay_user"
  458. value="<?= htmlentities(trim($v_smtp_relay_user, "'")) ?>"
  459. >
  460. </div>
  461. <div class="u-mb10">
  462. <label for="v_smtp_relay_pass" class="form-label">
  463. <?= _("Password") ?>
  464. </label>
  465. <div class="u-pos-relative">
  466. <input
  467. type="text"
  468. class="form-control js-password-input"
  469. name="v_smtp_relay_pass"
  470. id="v_smtp_relay_pass"
  471. >
  472. </div>
  473. </div>
  474. </div>
  475. </div>
  476. </details>
  477. <?php } ?>
  478. <!-- Databases section -->
  479. <?php if (!empty($_SESSION["DB_SYSTEM"])) { ?>
  480. <details class="box-collapse u-mb10">
  481. <summary class="box-collapse-header">
  482. <i class="fas fa-database u-mr10"></i><?= _("Databases") ?>
  483. </summary>
  484. <div class="box-collapse-content">
  485. <div class="u-mb10">
  486. <p>
  487. <?= _("MySQL Support") ?>:
  488. <span class="u-ml5">
  489. <?= $v_mysql == "yes" ? _("Yes") : _("No") ?>
  490. </span>
  491. <a href="/edit/server/mysql/" class="u-ml5">
  492. <i class="fas fa-pencil icon-orange"></i>
  493. </a>
  494. </p>
  495. </div>
  496. <!-- MySQL / MariaDB Options-->
  497. <?php if ($v_mysql == "yes") { ?>
  498. <div class="u-mb20">
  499. <label for="v_mysql_url" class="form-label">
  500. <?= _("phpMyAdmin Alias") ?>
  501. </label>
  502. <input
  503. type="text"
  504. class="form-control"
  505. name="v_mysql_url"
  506. id="v_mysql_url"
  507. value="<?= htmlentities($_SESSION["DB_PMA_ALIAS"]); ?>"
  508. >
  509. </div>
  510. <div class="u-mb10">
  511. <label for="v_phpmyadmin_key" class="form-label">
  512. <?= _("phpMyAdmin Single Sign On") ?>
  513. <span class="hint">
  514. <a
  515. href="https://hestiacp.com/docs/server-administration/databases.html"
  516. target="_blank"
  517. >
  518. (<?= _("More info") ?>)
  519. </a>
  520. </span>
  521. </label>
  522. <select
  523. class="form-select"
  524. name="v_phpmyadmin_key"
  525. id="v_phpmyadmin_key"
  526. <?php $_SESSION["API"] != "yes" ? "disabled" : ""; ?>
  527. >
  528. <option value="no">
  529. <?= _("Disabled") ?>
  530. </option>
  531. <option value="yes" <?= $_SESSION["PHPMYADMIN_KEY"] != "" ? "selected" : "" ?>>
  532. <?= _("Enabled") ?>
  533. </option>
  534. </select>
  535. </div>
  536. <?php
  537. $i = 0;
  538. foreach ($v_mysql_hosts as $value) {
  539. $i++;
  540. ?>
  541. <div class="u-pl30">
  542. <div class="u-mb10">
  543. <label for="v_mysql_host" class="form-label">
  544. <?= _("Host") . " #" . $i ?>
  545. </label>
  546. <input
  547. type="text"
  548. class="form-control"
  549. name="v_mysql_host"
  550. id="v_mysql_host"
  551. value="<?= $value["HOST"] ?>"
  552. disabled
  553. >
  554. </div>
  555. <div class="u-mb10">
  556. <label for="v_mysql_password" class="form-label">
  557. <?= _("Password") ?>
  558. </label>
  559. <div class="u-pos-relative">
  560. <input
  561. type="text"
  562. class="form-control js-password-input"
  563. name="v_mysql_password"
  564. id="v_mysql_password"
  565. >
  566. </div>
  567. </div>
  568. <div class="u-mb10">
  569. <label for="v_mysql_max" class="form-label">
  570. <?= _("Maximum Number of Databases") ?>
  571. </label>
  572. <input
  573. type="text"
  574. class="form-control"
  575. name="v_mysql_max"
  576. id="v_mysql_max"
  577. value="<?= $value["MAX_DB"] ?>"
  578. disabled
  579. >
  580. </div>
  581. <div class="u-mb10">
  582. <label for="v_mysql_current" class="form-label">
  583. <?= _("Current Number of Databases") ?>
  584. </label>
  585. <input
  586. type="text"
  587. class="form-control"
  588. name="v_mysql_current"
  589. id="v_mysql_current"
  590. value="<?= $value["U_DB_BASES"] ?>"
  591. disabled
  592. >
  593. </div>
  594. </div>
  595. <?php } } ?>
  596. <!-- PostgreSQL Options-->
  597. <?php if ($v_pgsql == "yes") { ?>
  598. <div class="u-mb10">
  599. <p>
  600. <?= _("PostgreSQL Support") ?>:
  601. <span class="u-ml5">
  602. <?= $v_pgsql == "yes" ? _("Yes") : _("No") ?>
  603. </span>
  604. <a href="/edit/server/postgresql/" class="u-ml5">
  605. <i class="fas fa-pencil icon-orange"></i>
  606. </a>
  607. </p>
  608. </div>
  609. <div class="u-mb20">
  610. <label for="v_pgsql_url" class="form-label">
  611. <?= _("phpPgAdmin Alias") ?>
  612. </label>
  613. <input type="text" class="form-control" name="v_pgsql_url" id="v_pgsql_url" value="<?= htmlentities($_SESSION["DB_PGA_ALIAS"]) ?>">
  614. </div>
  615. <?php } ?>
  616. <?php if ($v_pgsql == "yes") {
  617. $i = 0;
  618. foreach ($v_pgsql_hosts as $value) {
  619. $i++;
  620. ?>
  621. <div class="u-pl30">
  622. <div class="u-mb10">
  623. <label for="v_pgsql_host" class="form-label"><?= _("Host") . " #" . $i ?></label>
  624. <input type="text" class="form-control" name="v_pgsql_host" id="v_pgsql_host" value="<?= $value["HOST"] ?>" disabled>
  625. </div>
  626. <div class="u-mb10">
  627. <label for="v_psql_max" class="form-label">
  628. <?= _("Maximum Number of Databases") ?>
  629. </label>
  630. <input type="text" class="form-control" name="v_psql_max" id="v_psql_max" value="<?= $value["MAX_DB"] ?>" disabled>
  631. </div>
  632. <div class="u-mb10">
  633. <label for="v_pgsql_max" class="form-label">
  634. <?= _("Current Number of Databases") ?>
  635. </label>
  636. <input type="text" class="form-control" name="v_pgsql_max" id="v_pgsql_max" value="<?= $value["U_DB_BASES"] ?>" disabled>
  637. </div>
  638. </div>
  639. <?php }} ?>
  640. </div>
  641. </details>
  642. <?php } ?>
  643. <!-- Backups section -->
  644. <details class="box-collapse u-mb10">
  645. <summary class="box-collapse-header">
  646. <i class="fas fa-arrow-rotate-left u-mr10"></i><?= _("Backups") ?>
  647. </summary>
  648. <div class="box-collapse-content">
  649. <div class="u-mb10">
  650. <label for="v_backup" class="form-label">
  651. <?= _("Local Backup") ?>
  652. </label>
  653. <select class="form-select" name="v_backup" id="v_backup">
  654. <option value="no">
  655. <?= _("No") ?>
  656. </option>
  657. <option value="yes" <?= $v_backup == "yes" ? "selected" : "" ?>>
  658. <?= _("Yes") ?>
  659. </option>
  660. </select>
  661. </div>
  662. <div class="u-mb10">
  663. <label for="v_backup_mode" class="form-label">
  664. <?= _("Compression") ?>
  665. <a
  666. href="https://hestiacp.com/docs/server-administration/backup-restore.html#what-is-the-difference-between-zstd-and-gzip"
  667. target="_blank"
  668. class="u-ml5"
  669. >
  670. <i class="fas fa-circle-question"></i>
  671. </a>
  672. </label>
  673. <select class="form-select" name="v_backup_mode" id="v_backup_mode">
  674. <option value="gzip">
  675. gzip
  676. </option>
  677. <option value="zstd" <?= $v_backup_mode == "zstd" ? "selected" : "" ?>>
  678. zstd
  679. </option>
  680. </select>
  681. </div>
  682. <div class="u-mb10">
  683. <label for="v_backup_gzip" class="form-label">
  684. <?= _("Compression Level") ?>
  685. <a
  686. href="https://hestiacp.com/docs/server-administration/backup-restore.html#what-is-the-optimal-compression-ratio"
  687. target="_blank"
  688. class="u-ml5"
  689. >
  690. <i class="fas fa-circle-question"></i>
  691. </a>
  692. </label>
  693. <select class="form-select" name="v_backup_gzip" id="v_backup_gzip">
  694. <?php for ($level = 1; $level < 20; $level++) { ?>
  695. <option
  696. value="<?= $level ?>"
  697. <?= $v_backup_gzip == $level ? "selected" : "" ?>
  698. >
  699. <?= $level ?>
  700. <?= $level > 9 ? "(" . _("zstd only") . ")" : "" ?>
  701. </option>
  702. <?php } ?>
  703. </select>
  704. </div>
  705. <div class="u-mb20">
  706. <label for="v_backup_dir" class="form-label">
  707. <?= _("Directory") ?>
  708. <a
  709. href="https://hestiacp.com/docs/server-administration/backup-restore.html#how-to-change-default-backup-folder"
  710. target="_blank"
  711. class="u-ml5"
  712. >
  713. <i class="fas fa-circle-question"></i>
  714. </a>
  715. </label>
  716. <input
  717. type="text"
  718. class="form-control"
  719. name="v_backup_dir"
  720. id="v_backup_dir"
  721. value="<?= htmlentities(trim($v_backup_dir, "'")) ?>"
  722. disabled
  723. >
  724. </div>
  725. <div class="form-check">
  726. <input
  727. x-model="remoteBackupEnabled"
  728. class="form-check-input"
  729. type="checkbox"
  730. name="v_backup_remote_adv"
  731. id="v_backup_remote_adv"
  732. >
  733. <label for="v_backup_remote_adv">
  734. <?= _("Remote Backup") ?>
  735. </label>
  736. </div>
  737. <div x-cloak x-show="remoteBackupEnabled" class="u-pl30 u-mt20">
  738. <div class="u-mb10">
  739. <label for="backup_type" class="form-label">
  740. <?= _("Protocol") ?>
  741. <a
  742. href="https://hestiacp.com/docs/server-administration/backup-restore.html#what-kind-of-protocols-are-currently-supported"
  743. target="_blank"
  744. class="u-ml5"
  745. >
  746. <i class="fas fa-circle-question"></i>
  747. </a>
  748. </label>
  749. <select
  750. x-model="backupType"
  751. class="form-select"
  752. name="v_backup_type"
  753. id="backup_type"
  754. >
  755. <option value="ftp">
  756. FTP
  757. </option>
  758. <option value="sftp">
  759. SFTP
  760. </option>
  761. <option value="b2">
  762. Backblaze
  763. </option>
  764. <option value="rclone">
  765. Rclone
  766. </option>
  767. </select>
  768. </div>
  769. <div x-cloak x-show="backupType == 'ftp' || backupType == 'sftp' || backupType == ''">
  770. <div class="u-mb10">
  771. <label for="v_backup_host" class="form-label">
  772. <?= _("Host") ?>
  773. </label>
  774. <input
  775. type="text"
  776. class="form-control"
  777. name="v_backup_host"
  778. id="v_backup_host"
  779. value="<?= htmlentities(trim($v_backup_host, "'")) ?>"
  780. >
  781. </div>
  782. <div class="u-mb20">
  783. <label for="v_backup_port" class="form-label">
  784. <?= _("Port") ?>
  785. </label>
  786. <input
  787. type="text"
  788. class="form-control"
  789. name="v_backup_port"
  790. id="v_backup_port"
  791. value="<?= htmlentities(trim($v_backup_port, "'")) ?>"
  792. >
  793. </div>
  794. <div class="u-mb10">
  795. <label for="v_backup_username" class="form-label">
  796. <?= _("Username") ?>
  797. </label>
  798. <input
  799. type="text"
  800. class="form-control"
  801. name="v_backup_username"
  802. id="v_backup_username"
  803. value="<?= htmlentities(trim($v_backup_username, "'")) ?>"
  804. >
  805. </div>
  806. <div class="u-mb20">
  807. <label for="v_backup_password" class="form-label">
  808. <?= _("Password") ?>
  809. </label>
  810. <div class="u-pos-relative">
  811. <input
  812. type="text"
  813. class="form-control js-password-input"
  814. name="v_backup_password"
  815. id="v_backup_password"
  816. value="<?= htmlentities(trim($v_backup_password, "'")) ?>"
  817. >
  818. </div>
  819. </div>
  820. <div class="u-mb10">
  821. <label for="v_backup_bpath" class="form-label">
  822. <?= _("Directory") ?>
  823. </label>
  824. <input
  825. type="text"
  826. class="form-control"
  827. name="v_backup_bpath"
  828. id="v_backup_bpath"
  829. value="<?= htmlentities(trim($v_backup_bpath, "'")) ?>"
  830. >
  831. </div>
  832. </div>
  833. <div x-cloak x-show="backupType == 'b2'">
  834. <div class="u-mb10">
  835. <label for="v_backup_bucket" class="form-label">
  836. Bucket
  837. </label>
  838. <input
  839. type="text"
  840. class="form-control"
  841. name="v_backup_bucket"
  842. id="v_backup_bucket"
  843. value="<?= htmlentities(trim($v_backup_bucket, "'")) ?>"
  844. >
  845. </div>
  846. <div class="u-mb10">
  847. <label for="v_backup_application_id" class="form-label">
  848. Key ID
  849. </label>
  850. <input
  851. type="text"
  852. class="form-control"
  853. name="v_backup_application_id"
  854. id="v_backup_application_id"
  855. value="<?= htmlentities(trim($v_backup_application_id, "'")) ?>"
  856. >
  857. </div>
  858. <div class="u-mb10">
  859. <label for="v_backup_application_key" class="form-label">
  860. Application Key
  861. </label>
  862. <input
  863. type="text"
  864. class="form-control"
  865. name="v_backup_application_key"
  866. id="v_backup_application_key"
  867. value="<?= htmlentities(trim($v_backup_application_key, "'")) ?>"
  868. >
  869. </div>
  870. </div>
  871. <div x-cloak x-show="backupType == 'rclone'">
  872. <div class="u-mb10">
  873. <label for="v_rclone_host" class="form-label">
  874. <?= _("Host") ?>
  875. </label>
  876. <input
  877. type="text"
  878. class="form-control"
  879. name="v_rclone_host"
  880. id="v_rclone_host"
  881. value="<?= htmlentities(trim($v_rclone_host, "'")) ?>"
  882. >
  883. </div>
  884. <div class="u-mb10">
  885. <label for="v_rclone_path" class="form-label">
  886. <?= _("Directory") ?>
  887. </label>
  888. <input
  889. type="text"
  890. class="form-control"
  891. name="v_rclone_path"
  892. id="v_rclone_path"
  893. value="<?= htmlentities(trim($v_rclone_path, "'")) ?>"
  894. >
  895. </div>
  896. </div>
  897. </div>
  898. </div>
  899. </details>
  900. <!-- SSL section -->
  901. <details class="box-collapse u-mb10">
  902. <summary class="box-collapse-header">
  903. <i class="fas fa-lock u-mr10"></i><?= _("SSL") ?>
  904. </summary>
  905. <div class="box-collapse-content">
  906. <div class="u-mb20">
  907. <label for="v_ssl_crt" class="form-label">
  908. <?= _("SSL Certificate") ?>
  909. <span id="generate-csr">
  910. /
  911. <a
  912. class="form-link"
  913. href="/generate/ssl/?domain=<?= htmlentities(trim($v_hostname, '"')) ?>"
  914. target="_blank"
  915. >
  916. <?= _("Generate Self-Signed SSL Certificate") ?>
  917. </a>
  918. </span>
  919. </label>
  920. <textarea
  921. class="form-control u-min-height100 u-console"
  922. name="v_ssl_crt"
  923. id="v_ssl_crt"
  924. ><?= htmlentities(trim($v_ssl_crt, "'")) ?></textarea>
  925. </div>
  926. <div class="u-mb20">
  927. <label for="v_ssl_key" class="form-label">
  928. <?= _("SSL Private Key") ?>
  929. </label>
  930. <textarea
  931. class="form-control u-min-height100 u-console"
  932. name="v_ssl_key"
  933. id="v_ssl_key"
  934. ><?= htmlentities(trim($v_ssl_key, "'")) ?></textarea>
  935. </div>
  936. <ul class="values-list">
  937. <li class="values-list-item">
  938. <span class="values-list-label"><?= _("Issued To") ?></span>
  939. <span class="values-list-value"><?= htmlentities($v_ssl_subject) ?></span>
  940. </li>
  941. <?php if ($v_ssl_aliases) { ?>
  942. <li class="values-list-item">
  943. <span class="values-list-label"><?= _("Alternate") ?></span>
  944. <span class="values-list-value"><?= htmlentities($v_ssl_aliases) ?></span>
  945. </li>
  946. <?php } ?>
  947. <li class="values-list-item">
  948. <span class="values-list-label"><?= _("Not Before") ?></span>
  949. <span class="values-list-value"><?= htmlentities($v_ssl_not_before) ?></span>
  950. </li>
  951. <li class="values-list-item">
  952. <span class="values-list-label"><?= _("Not After") ?></span>
  953. <span class="values-list-value"><?= htmlentities($v_ssl_not_after) ?></span>
  954. </li>
  955. <li class="values-list-item">
  956. <span class="values-list-label"><?= _("Signature") ?></span>
  957. <span class="values-list-value"><?= htmlentities($v_ssl_signature) ?></span>
  958. </li>
  959. <li class="values-list-item">
  960. <span class="values-list-label"><?= _("Key Size") ?></span>
  961. <span class="values-list-value"><?= htmlentities($v_ssl_pub_key) ?></span>
  962. </li>
  963. <li class="values-list-item">
  964. <span class="values-list-label"><?= _("Issued By") ?></span>
  965. <span class="values-list-value"><?= htmlentities($v_ssl_issuer) ?></span>
  966. </li>
  967. </ul>
  968. </div>
  969. </details>
  970. <!-- Security section -->
  971. <details class="box-collapse u-mb10">
  972. <summary class="box-collapse-header">
  973. <i class="fas fa-key u-mr10"></i><?= _("Security") ?>
  974. </summary>
  975. <div class="box-collapse-content">
  976. <details class="collapse">
  977. <summary class="collapse-header">
  978. <?= _("System") ?>
  979. </summary>
  980. <div class="collapse-content">
  981. <h3 class="u-mb10">
  982. <?= _("API") ?>
  983. </h3>
  984. <div class="u-mb10">
  985. <label for="v_api_system" class="form-label">
  986. <?= _("Enable API access") ?>
  987. </label>
  988. <select x-model="apiSystem" class="form-select" name="v_api_system" id="v_api_system">
  989. <option value="0">
  990. <?= _("Disabled") ?>
  991. </option>
  992. <option value="1">
  993. <?= _("Enabled for admin") ?>
  994. </option>
  995. <option value="2">
  996. <?= _("Enabled for all users") ?>
  997. </option>
  998. </select>
  999. </div>
  1000. <div class="u-mb10">
  1001. <label for="v_api" class="form-label">
  1002. <?= _("Enable legacy API access") ?>
  1003. </label>
  1004. <select x-model="legacyApi" class="form-select" name="v_api" id="v_api">
  1005. <option value="yes">
  1006. <?= _("Yes") ?>
  1007. </option>
  1008. <option value="no">
  1009. <?= _("No") ?>
  1010. </option>
  1011. </select>
  1012. </div>
  1013. <div x-cloak x-show="legacyApi === 'yes' || apiSystem > 0">
  1014. <div class="u-mb10">
  1015. <label for="v_api_allowed_ip" class="form-label u-side-by-side">
  1016. <?= _("Allowed IP addresses for API") ?>
  1017. <span class="optional">1 IP address per line</span>
  1018. </label>
  1019. <textarea class="form-control" name="v_api_allowed_ip" id="v_api_allowed_ip"><?php
  1020. foreach (explode(",", $_SESSION["API_ALLOWED_IP"]) as $ip) {
  1021. echo trim($ip)."\n";
  1022. }
  1023. ?></textarea>
  1024. </div>
  1025. </div>
  1026. <h3 class="u-mt20 u-mb10">
  1027. <?= _("Login") ?>
  1028. </h3>
  1029. <div class="u-mb10">
  1030. <label for="v_login_style" class="form-label">
  1031. <?= _("Login screen style") ?>
  1032. </label>
  1033. <select class="form-select" name="v_login_style" id="v_login_style">
  1034. <option value="default">
  1035. <?= _("Default") ?>
  1036. </option>
  1037. <option value="old" <?= $_SESSION["LOGIN_STYLE"] == "old" ? "selected" : "" ?>>
  1038. <?= _("Old Style") ?>
  1039. </option>
  1040. </select>
  1041. </div>
  1042. <div class="u-mb10">
  1043. <label for="v_policy_system_password_reset" class="form-label">
  1044. <?= _("Allow users to reset their passwords") ?>
  1045. </label>
  1046. <select
  1047. class="form-select"
  1048. name="v_policy_system_password_reset"
  1049. id="v_policy_system_password_reset"
  1050. >
  1051. <option value="yes">
  1052. <?= _("Yes") ?>
  1053. </option>
  1054. <option
  1055. value="no"
  1056. <?= $_SESSION["POLICY_SYSTEM_PASSWORD_RESET"] == "no" ? "selected" : "" ?>
  1057. >
  1058. <?= _("No") ?>
  1059. </option>
  1060. </select>
  1061. </div>
  1062. <div class="u-mb20">
  1063. <label for="v_inactive_session_timeout" class="form-label">
  1064. <?= _("Inactive session timeout") ?> (<?= _("Minutes") ?>)
  1065. </label>
  1066. <input
  1067. type="text"
  1068. class="form-control"
  1069. name="v_inactive_session_timeout"
  1070. id="v_inactive_session_timeout"
  1071. value="<?= trim($_SESSION["INACTIVE_SESSION_TIMEOUT"], "'") ?>"
  1072. >
  1073. </div>
  1074. <div class="u-mb10">
  1075. <label for="v_policy_csrf_strictness" class="form-label">
  1076. <?= _("Prevent CSRF") ?>
  1077. </label>
  1078. <select
  1079. class="form-select"
  1080. name="v_policy_csrf_strictness"
  1081. id="v_policy_csrf_strictness"
  1082. >
  1083. <option value="0">
  1084. <?= _("Disabled") ?>
  1085. </option>
  1086. <option value="1" <?= $_SESSION["POLICY_CSRF_STRICTNESS"] == "1" ? "selected" : "" ?>>
  1087. <?= _("Enabled") ?>
  1088. </option>
  1089. <option value="2" <?= $_SESSION["POLICY_CSRF_STRICTNESS"] == "2" ? "selected" : "" ?>>
  1090. <?= _("Strict") ?>
  1091. </option>
  1092. </select>
  1093. </div>
  1094. </div>
  1095. </details>
  1096. <?php if ($_SESSION["userContext"] === "admin" && $_SESSION["user"] === "admin") { ?>
  1097. <details class="collapse">
  1098. <summary class="collapse-header">
  1099. <?= _("System Protection") ?>
  1100. </summary>
  1101. <div class="collapse-content">
  1102. <h3 class="u-mb10">
  1103. <?= _("System Administrator account") ?>
  1104. </h3>
  1105. <div class="u-mb10">
  1106. <label for="v_policy_system_protected_admin" class="form-label">
  1107. <?= _("Restrict access to read-only for other administrators") ?>
  1108. </label>
  1109. <select
  1110. class="form-select"
  1111. name="v_policy_system_protected_admin"
  1112. id="v_policy_system_protected_admin"
  1113. >
  1114. <option value="yes">
  1115. <?= _("Yes") ?>
  1116. </option>
  1117. <option value="no" <?= $_SESSION["POLICY_SYSTEM_PROTECTED_ADMIN"] !== "yes" ? "selected" : "" ?>>
  1118. <?= _("No") ?>
  1119. </option>
  1120. </select>
  1121. </div>
  1122. <div class="u-mb10">
  1123. <label for="v_policy_system_hide_admin" class="form-label">
  1124. <?= _("Hide account from other administrators") ?>
  1125. </label>
  1126. <select
  1127. class="form-select"
  1128. name="v_policy_system_hide_admin"
  1129. id="v_policy_system_hide_admin"
  1130. >
  1131. <option value="yes">
  1132. <?= _("Yes") ?>
  1133. </option>
  1134. <option value="no" <?= $_SESSION["POLICY_SYSTEM_HIDE_ADMIN"] !== "yes" ? "selected" : "" ?>>
  1135. <?= _("No") ?>
  1136. </option>
  1137. </select>
  1138. </div>
  1139. <div class="u-mb10">
  1140. <label for="v_policy_system_hide_services" class="form-label">
  1141. <?= _("Do not allow other administrators to access Server Settings") ?>
  1142. </label>
  1143. <select
  1144. class="form-select"
  1145. name="v_policy_system_hide_services"
  1146. id="v_policy_system_hide_services"
  1147. >
  1148. <option value="yes">
  1149. <?= _("Yes") ?>
  1150. </option>
  1151. <option value="no" <?= $_SESSION["POLICY_SYSTEM_HIDE_SERVICES"] !== "yes" ? "selected" : "" ?>>
  1152. <?= _("No") ?>
  1153. </option>
  1154. </select>
  1155. </div>
  1156. </div>
  1157. </details>
  1158. <?php } ?>
  1159. <details class="collapse">
  1160. <summary class="collapse-header">
  1161. <?= _("Policies") ?>
  1162. </summary>
  1163. <div class="collapse-content">
  1164. <h3 class="u-mb10">
  1165. <?= _("Users") ?>
  1166. </h3>
  1167. <div class="u-mb10">
  1168. <label for="v_policy_user_edit_details" class="form-label">
  1169. <?= _("Allow users to edit their account details") ?>
  1170. </label>
  1171. <select
  1172. class="form-select"
  1173. name="v_policy_user_edit_details"
  1174. id="v_policy_user_edit_details"
  1175. >
  1176. <option value="yes">
  1177. <?= _("Yes") ?>
  1178. </option>
  1179. <option value="no" <?= $_SESSION["POLICY_USER_EDIT_DETAILS"] == "no" ? "selected" : "" ?>>
  1180. <?= _("No") ?>
  1181. </option>
  1182. </select>
  1183. </div>
  1184. <div class="u-mb10">
  1185. <label for="v_policy_user_edit_web_templates" class="form-label">
  1186. <?= _("Allow users to change templates when editing web domains") ?>
  1187. </label>
  1188. <select class="form-select" name="v_policy_user_edit_web_templates" id="v_policy_user_edit_web_templates">
  1189. <option value="yes">
  1190. <?= _("Yes") ?>
  1191. </option>
  1192. <option value="no" <?= $_SESSION["POLICY_USER_EDIT_WEB_TEMPLATES"] == "no" ? "selected" : "" ?>>
  1193. <?= _("No") ?>
  1194. </option>
  1195. </select>
  1196. </div>
  1197. <div class="u-mb10">
  1198. <label for="v_policy_user_edit_dns_templates" class="form-label">
  1199. <?= _("Allow users to change templates when editing DNS zones") ?>
  1200. </label>
  1201. <select
  1202. class="form-select"
  1203. name="v_policy_user_edit_dns_templates"
  1204. id="v_policy_user_edit_dns_templates"
  1205. >
  1206. <option value="yes">
  1207. <?= _("Yes") ?>
  1208. </option>
  1209. <option value="no" <?= $_SESSION["POLICY_USER_EDIT_DNS_TEMPLATES"] == "no" ? "selected" : "" ?>>
  1210. <?= _("No") ?>
  1211. </option>
  1212. </select>
  1213. </div>
  1214. <div class="u-mb10">
  1215. <label for="v_policy_user_view_logs" class="form-label">
  1216. <?= _("Allow users to view action and login history logs") ?>
  1217. </label>
  1218. <select
  1219. class="form-select"
  1220. name="v_policy_user_view_logs"
  1221. id="v_policy_user_view_logs"
  1222. >
  1223. <option value="yes">
  1224. <?= _("Yes") ?>
  1225. </option>
  1226. <option value="no" <?= $_SESSION["POLICY_USER_VIEW_LOGS"] == "no" ? "selected" : "" ?>>
  1227. <?= _("No") ?>
  1228. </option>
  1229. </select>
  1230. </div>
  1231. <div class="u-mb10">
  1232. <label for="v_policy_user_delete_logs" class="form-label">
  1233. <?= _("Allow users to delete log history") ?>
  1234. </label>
  1235. <select
  1236. class="form-select"
  1237. name="v_policy_user_delete_logs"
  1238. id="v_policy_user_delete_logs"
  1239. >
  1240. <option value="yes">
  1241. <?= _("Yes") ?>
  1242. </option>
  1243. <option value="no" <?= $_SESSION["POLICY_USER_DELETE_LOGS"] == "no" ? "selected" : "" ?>>
  1244. <?= _("No") ?>
  1245. </option>
  1246. </select>
  1247. </div>
  1248. <?php if ($_SESSION["POLICY_SYSTEM_ENABLE_BACON"] === "true") { ?>
  1249. <div class="u-mb10">
  1250. <label for="v_policy_user_view_suspended" class="form-label">
  1251. <?= _("Allow suspended users to log in with read-only access") ?>
  1252. <span class="hint">(<?= _("Preview") ?>)</span>
  1253. </label>
  1254. <select
  1255. class="form-select"
  1256. name="v_policy_user_view_suspended"
  1257. id="v_policy_user_view_suspended"
  1258. >
  1259. <option value="yes">
  1260. <?= _("Yes") ?>
  1261. </option>
  1262. <option value="no" <?= $_SESSION["POLICY_USER_VIEW_SUSPENDED"] == "no" ? "selected" : "" ?>>
  1263. <?= _("No") ?>
  1264. </option>
  1265. </select>
  1266. </div>
  1267. <?php } ?>
  1268. <div class="u-mb10">
  1269. <label for="v_policy_backup_suspended_users" class="form-label">
  1270. <?= _("Allow suspended users to create new backups") ?>
  1271. </label>
  1272. <select
  1273. class="form-select"
  1274. name="v_policy_backup_suspended_users"
  1275. id="v_policy_backup_suspended_users"
  1276. >
  1277. <option value="yes">
  1278. <?= _("Yes") ?>
  1279. </option>
  1280. <option value="no" <?= $_SESSION["POLICY_BACKUP_SUSPENDED_USERS"] == "no" ? "selected" : "" ?>>
  1281. <?= _("No") ?>
  1282. </option>
  1283. </select>
  1284. </div>
  1285. <div class="u-mb10">
  1286. <label for="v_policy_sync_error_documents" class="form-label">
  1287. <?= _("Sync Error document templates on user rebuild") ?>
  1288. </label>
  1289. <select
  1290. class="form-select"
  1291. name="v_policy_sync_error_documents"
  1292. id="v_policy_sync_error_documents"
  1293. >
  1294. <option value="yes">
  1295. <?= _("Yes") ?>
  1296. </option>
  1297. <option value="no" <?= $_SESSION["POLICY_SYNC_ERROR_DOCUMENTS"] == "no" ? "selected" : "" ?>>
  1298. <?= _("No") ?>
  1299. </option>
  1300. </select>
  1301. </div>
  1302. <div class="u-mb10">
  1303. <label for="v_policy_sync_skeleton" class="form-label">
  1304. <?= _("Sync Skeleton templates") ?>
  1305. </label>
  1306. <select
  1307. class="form-select"
  1308. name="v_policy_sync_skeleton"
  1309. id="v_policy_sync_skeleton"
  1310. >
  1311. <option value="yes">
  1312. <?= _("Yes") ?>
  1313. </option>
  1314. <option value="no" <?= $_SESSION["POLICY_SYNC_SKELETON"] == "no" ? "selected" : "" ?>>
  1315. <?= _("No") ?>
  1316. </option>
  1317. </select>
  1318. </div>
  1319. <h3 class="u-mt20 u-mb10">
  1320. <?= _("Domains") ?>
  1321. </h3>
  1322. <div class="u-mb10">
  1323. <label for="v_enforce_subdomain_ownership" class="form-label">
  1324. <?= _("Enforce subdomain ownership") ?>
  1325. </label>
  1326. <select
  1327. class="form-select"
  1328. name="v_enforce_subdomain_ownership"
  1329. id="v_enforce_subdomain_ownership"
  1330. >
  1331. <option value="yes">
  1332. <?= _("Yes") ?>
  1333. </option>
  1334. <option value="no" <?= $_SESSION["ENFORCE_SUBDOMAIN_OWNERSHIP"] == "no" ? "selected" : "" ?>>
  1335. <?= _("No") ?>
  1336. </option>
  1337. </select>
  1338. </div>
  1339. </div>
  1340. </details>
  1341. </div>
  1342. </details>
  1343. <!-- Plugins section -->
  1344. <details class="box-collapse u-mb10">
  1345. <summary class="box-collapse-header">
  1346. <i class="fas fa-puzzle-piece u-mr10"></i><?= _("Plugins") ?>
  1347. </summary>
  1348. <div class="box-collapse-content">
  1349. <div class="u-mb10">
  1350. <label for="v_plugin_app_installer" class="form-label">
  1351. <?= _("Quick App Installer") ?>
  1352. </label>
  1353. <select class="form-select" name="v_plugin_app_installer" id="v_plugin_app_installer">
  1354. <option value="false">
  1355. <?= _("No") ?>
  1356. </option>
  1357. <option value="true" <?= $_SESSION["PLUGIN_APP_INSTALLER"] == "true" ? "selected" : "" ?>>
  1358. <?= _("Yes") ?>
  1359. </option>
  1360. </select>
  1361. </div>
  1362. <div class="u-mb10">
  1363. <label for="v_filemanager" class="form-label">
  1364. <?= _("File Manager") ?>
  1365. </label>
  1366. <select class="form-select" name="v_filemanager" id="v_filemanager">
  1367. <option value="false">
  1368. <?= _("No") ?>
  1369. </option>
  1370. <option value="true" <?= $_SESSION["FILE_MANAGER"] == "true" ? "selected" : "" ?>>
  1371. <?= _("Yes") ?>
  1372. </option>
  1373. </select>
  1374. </div>
  1375. <div class="u-mb10">
  1376. <label for="v_web_terminal" class="form-label">
  1377. <?= _("Web Terminal") ?>
  1378. </label>
  1379. <select class="form-select" name="v_web_terminal" id="v_web_terminal">
  1380. <option value="false">
  1381. <?= _("No") ?>
  1382. </option>
  1383. <option value="true" <?= $_SESSION["WEB_TERMINAL"] == "true" ? "selected" : "" ?>>
  1384. <?= _("Yes") ?>
  1385. </option>
  1386. </select>
  1387. </div>
  1388. <div class="u-mb10">
  1389. <label for="v_quota" class="form-label">
  1390. <?= _("File System Disk Quota") ?>
  1391. </label>
  1392. <select class="form-select" name="v_quota" id="v_quota">
  1393. <option value="no">
  1394. <?= _("No") ?>
  1395. </option>
  1396. <option value="yes" <?= $_SESSION["DISK_QUOTA"] == "yes" ? "selected" : "" ?>>
  1397. <?= _("Yes") ?>
  1398. </option>
  1399. </select>
  1400. </div>
  1401. <div class="u-mb10">
  1402. <label for="v_firewall" class="form-label">
  1403. <?= _("Firewall") ?>
  1404. </label>
  1405. <select class="form-select" name="v_firewall" id="v_firewall">
  1406. <option value="no">
  1407. <?= _("No") ?>
  1408. </option>
  1409. <option value="yes" <?= $_SESSION["FIREWALL_SYSTEM"] == "iptables" ? "selected" : "" ?>>
  1410. <?= _("Yes") ?>
  1411. </option>
  1412. </select>
  1413. </div>
  1414. </div>
  1415. </details>
  1416. </div>
  1417. </form>
  1418. </div>
  1419. <!-- End form -->