edit_server.php 48 KB

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