edit_server.php 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425
  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. </div>
  15. <div class="toolbar-buttons">
  16. <button type="submit" class="button" form="vstobjects">
  17. <i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
  18. </button>
  19. </div>
  20. </div>
  21. </div>
  22. <!-- End toolbar -->
  23. <!-- Begin form -->
  24. <div class="container animate__animated animate__fadeIn">
  25. <form
  26. x-data="{
  27. timezone: '<?= $v_timezone ?? "" ?>',
  28. theme: '<?= $_SESSION["THEME"] ?>',
  29. language: '<?= $_SESSION["LANGUAGE"] ?>',
  30. hasSmtpRelay: <?= $v_smtp_relay == "true" ? "true" : "false" ?>,
  31. remoteBackupEnabled: <?= !empty($v_backup_remote_adv) ? "true" : "false" ?>,
  32. backupType: '<?= !empty($v_backup_type) ? trim($v_backup_type, "'") : "" ?>',
  33. webmailAlias: '<?= $_SESSION["WEBMAIL_ALIAS"] ?? "" ?>',
  34. apiSystem: '<?= $_SESSION["API_SYSTEM"] ?>',
  35. legacyApi: '<?= $_SESSION["API"] ?>',
  36. showSystemOptions: false,
  37. showProtectionOptions: false,
  38. showPolicyOptions: false,
  39. }"
  40. id="vstobjects"
  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="form-title">
  48. <?= _("Configure Server") ?>
  49. </h1>
  50. <?php show_alert_message($_SESSION); ?>
  51. <!-- Basic options section -->
  52. <details class="collapse u-mb10">
  53. <summary class="collapse-header">
  54. <i class="fas fa-gear u-mr10"></i><?= _("Basic Options") ?>
  55. </summary>
  56. <div class="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">
  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>
  127. </details>
  128. <!-- Updates section -->
  129. <details class="collapse u-mb10">
  130. <summary class="collapse-header">
  131. <i class="fas fa-code-branch u-mr10"></i><?= _("Updates") ?>
  132. </summary>
  133. <div class="collapse-content">
  134. <p class="u-mb10">
  135. <?= _("Version") ?>:
  136. <span class="optional">
  137. <?= $_SESSION["VERSION"] ?>
  138. </span>
  139. </p>
  140. <?php if ($_SESSION["RELEASE_BRANCH"] !== "release") { ?>
  141. <p class="u-mb10">
  142. <?= _("Release") ?>:
  143. <span class="optional">
  144. <?= $_SESSION["RELEASE_BRANCH"] ?>
  145. </span>
  146. </p>
  147. <?php } ?>
  148. <p class="u-mb5">
  149. <?= _("Options") ?>
  150. </p>
  151. <div class="form-check">
  152. <input
  153. class="form-check-input"
  154. type="checkbox"
  155. name="v_debug_mode"
  156. id="v_debug_mode"
  157. <?= $_SESSION["DEBUG_MODE"] == "true" ? "checked" : "" ?>
  158. >
  159. <label for="v_debug_mode">
  160. <?= _("Enable debug mode") ?>
  161. </label>
  162. </div>
  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="collapse u-mb10">
  208. <summary class="collapse-header">
  209. <i class="fas fa-earth-americas u-mr10"></i><?= _("Web Server") ?>
  210. </summary>
  211. <div class="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. <?= _("Backend Server") ?>:
  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="collapse u-mb10">
  314. <summary class="collapse-header">
  315. <i class="fas fa-book-atlas u-mr10"></i><?= _("DNS Server") ?>
  316. </summary>
  317. <div class="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="collapse u-mb10">
  358. <summary class="collapse-header">
  359. <i class="fas fa-envelopes-bulk u-mr10"></i><?= _("Mail Server") ?>
  360. </summary>
  361. <div class="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="collapse u-mb10">
  481. <summary class="collapse-header">
  482. <i class="fas fa-database u-mr10"></i><?= _("Databases") ?>
  483. </summary>
  484. <div class="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="<?= $_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="<?= $_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="collapse u-mb10">
  645. <summary class="collapse-header">
  646. <i class="fas fa-arrow-rotate-left u-mr10"></i><?= _("Backups") ?>
  647. </summary>
  648. <div class="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="<?= 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="<?= 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="<?= 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="<?= 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="<?= 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="<?= 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="<?= 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="<?= 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="<?= 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="<?= 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="<?= trim($v_rclone_path, "'") ?>"
  894. >
  895. </div>
  896. </div>
  897. </div>
  898. </div>
  899. </details>
  900. <!-- SSL tab -->
  901. <details class="collapse u-mb10">
  902. <summary class="collapse-header">
  903. <i class="fas fa-lock u-mr10"></i><?= _("SSL") ?>
  904. </summary>
  905. <div class="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"><?= $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"><?= $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"><?= $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"><?= $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"><?= $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"><?= $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"><?= $v_ssl_issuer ?></span>
  966. </li>
  967. </ul>
  968. </div>
  969. </details>
  970. <!-- Security tab -->
  971. <details class="collapse u-mb10">
  972. <summary class="collapse-header">
  973. <i class="fas fa-key u-mr10"></i><?= _("Security") ?>
  974. </summary>
  975. <div class="collapse-content">
  976. <h2 x-on:click="showSystemOptions = !showSystemOptions" class="section-title">
  977. <?= _("System") ?>
  978. <i
  979. x-bind:class="showSystemOptions ? 'fa-square-minus' : 'fa-square-plus'"
  980. class="fas icon-dim icon-maroon js-section-toggle-icon"
  981. ></i>
  982. </h2>
  983. <div x-cloak x-show="showSystemOptions">
  984. <h3 class="u-mt20 u-mb10">
  985. <?= _("API") ?>
  986. </h3>
  987. <div class="u-mb10">
  988. <label for="v_api_system" class="form-label">
  989. <?= _("Enable API access") ?>
  990. </label>
  991. <select x-model="apiSystem" class="form-select" name="v_api_system" id="v_api_system">
  992. <option value="0">
  993. <?= _("Disabled") ?>
  994. </option>
  995. <option value="1">
  996. <?= _("Enabled for admin") ?>
  997. </option>
  998. <option value="2">
  999. <?= _("Enabled for all users") ?>
  1000. </option>
  1001. </select>
  1002. </div>
  1003. <div class="u-mb10">
  1004. <label for="v_api" class="form-label">
  1005. <?= _("Enable legacy API access") ?>
  1006. </label>
  1007. <select x-model="legacyApi" class="form-select" name="v_api" id="v_api">
  1008. <option value="yes">
  1009. <?= _("Yes") ?>
  1010. </option>
  1011. <option value="no">
  1012. <?= _("No") ?>
  1013. </option>
  1014. </select>
  1015. </div>
  1016. <div x-cloak x-show="legacyApi === 'yes' || apiSystem > 0">
  1017. <div class="u-mb10">
  1018. <label for="v_api_allowed_ip" class="form-label u-side-by-side">
  1019. <?= _("Allowed IP addresses for API") ?>
  1020. <span class="optional">1 IP address per line</span>
  1021. </label>
  1022. <textarea class="form-control" name="v_api_allowed_ip" id="v_api_allowed_ip"><?php
  1023. foreach (explode(",", $_SESSION["API_ALLOWED_IP"]) as $ip) {
  1024. echo trim($ip)."\n";
  1025. }
  1026. ?></textarea>
  1027. </div>
  1028. </div>
  1029. <h3 class="u-mt20 u-mb10">
  1030. <?= _("Login") ?>
  1031. </h3>
  1032. <div class="u-mb10">
  1033. <label for="v_login_style" class="form-label">
  1034. <?= _("Login screen style") ?>
  1035. </label>
  1036. <select class="form-select" name="v_login_style" id="v_login_style">
  1037. <option value="default">
  1038. <?= _("Default") ?>
  1039. </option>
  1040. <option value="old" <?= $_SESSION["LOGIN_STYLE"] == "old" ? "selected" : "" ?>>
  1041. <?= _("Old Style") ?>
  1042. </option>
  1043. </select>
  1044. </div>
  1045. <div class="u-mb10">
  1046. <label for="v_policy_system_password_reset" class="form-label">
  1047. <?= _("Allow users to reset their passwords") ?>
  1048. </label>
  1049. <select
  1050. class="form-select"
  1051. name="v_policy_system_password_reset"
  1052. id="v_policy_system_password_reset"
  1053. >
  1054. <option value="yes">
  1055. <?= _("Yes") ?>
  1056. </option>
  1057. <option
  1058. value="no"
  1059. <?= $_SESSION["POLICY_SYSTEM_PASSWORD_RESET"] == "no" ? "selected" : "" ?>
  1060. >
  1061. <?= _("No") ?>
  1062. </option>
  1063. </select>
  1064. </div>
  1065. <div class="u-mb20">
  1066. <label for="v_inactive_session_timeout" class="form-label">
  1067. <?= _("Inactive session timeout") ?> (<?= _("Minutes") ?>)
  1068. </label>
  1069. <input
  1070. type="text"
  1071. class="form-control"
  1072. name="v_inactive_session_timeout"
  1073. id="v_inactive_session_timeout"
  1074. value="<?= trim($_SESSION["INACTIVE_SESSION_TIMEOUT"], "'") ?>"
  1075. >
  1076. </div>
  1077. <div class="u-mb10">
  1078. <label for="v_policy_csrf_strictness" class="form-label">
  1079. <?= _("Prevent CSRF") ?>
  1080. </label>
  1081. <select
  1082. class="form-select"
  1083. name="v_policy_csrf_strictness"
  1084. id="v_policy_csrf_strictness"
  1085. >
  1086. <option value="0">
  1087. <?= _("Disabled") ?>
  1088. </option>
  1089. <option value="1" <?= $_SESSION["POLICY_CSRF_STRICTNESS"] == "1" ? "selected" : "" ?>>
  1090. <?= _("Enabled") ?>
  1091. </option>
  1092. <option value="2" <?= $_SESSION["POLICY_CSRF_STRICTNESS"] == "2" ? "selected" : "" ?>>
  1093. <?= _("Strict") ?>
  1094. </option>
  1095. </select>
  1096. </div>
  1097. </div>
  1098. <?php if ($_SESSION["userContext"] === "admin" && $_SESSION["user"] === "admin") { ?>
  1099. <h2 x-on:click="showProtectionOptions = !showProtectionOptions" class="section-title">
  1100. <?= _("System Protection") ?>
  1101. <i
  1102. x-bind:class="showProtectionOptions ? 'fa-square-minus' : 'fa-square-plus'"
  1103. class="fas icon-dim icon-maroon js-section-toggle-icon"
  1104. ></i>
  1105. </h2>
  1106. <div x-cloak x-show="showProtectionOptions">
  1107. <h3 class="u-mt20 u-mb10">
  1108. <?= _("System Administrator account") ?>
  1109. </h3>
  1110. <div class="u-mb10">
  1111. <label for="v_policy_system_protected_admin" class="form-label">
  1112. <?= _("Restrict access to read-only for other administrators") ?>
  1113. </label>
  1114. <select
  1115. class="form-select"
  1116. name="v_policy_system_protected_admin"
  1117. id="v_policy_system_protected_admin"
  1118. >
  1119. <option value="yes">
  1120. <?= _("Yes") ?>
  1121. </option>
  1122. <option value="no" <?= $_SESSION["POLICY_SYSTEM_PROTECTED_ADMIN"] !== "yes" ? "selected" : "" ?>>
  1123. <?= _("No") ?>
  1124. </option>
  1125. </select>
  1126. </div>
  1127. <div class="u-mb10">
  1128. <label for="v_policy_system_hide_admin" class="form-label">
  1129. <?= _("Hide account from other administrators") ?>
  1130. </label>
  1131. <select
  1132. class="form-select"
  1133. name="v_policy_system_hide_admin"
  1134. id="v_policy_system_hide_admin"
  1135. >
  1136. <option value="yes">
  1137. <?= _("Yes") ?>
  1138. </option>
  1139. <option value="no" <?= $_SESSION["POLICY_SYSTEM_HIDE_ADMIN"] !== "yes" ? "selected" : "" ?>>
  1140. <?= _("No") ?>
  1141. </option>
  1142. </select>
  1143. </div>
  1144. <div class="u-mb10">
  1145. <label for="v_policy_system_hide_services" class="form-label">
  1146. <?= _("Do not allow other administrators to access Server Settings") ?>
  1147. </label>
  1148. <select
  1149. class="form-select"
  1150. name="v_policy_system_hide_services"
  1151. id="v_policy_system_hide_services"
  1152. >
  1153. <option value="yes">
  1154. <?= _("Yes") ?>
  1155. </option>
  1156. <option value="no" <?= $_SESSION["POLICY_SYSTEM_HIDE_SERVICES"] !== "yes" ? "selected" : "" ?>>
  1157. <?= _("No") ?>
  1158. </option>
  1159. </select>
  1160. </div>
  1161. </div>
  1162. <?php } ?>
  1163. <h2 x-on:click="showPolicyOptions = !showPolicyOptions" class="section-title">
  1164. <?= _("Policies") ?>
  1165. <i
  1166. x-bind:class="showPolicyOptions ? 'fa-square-minus' : 'fa-square-plus'"
  1167. class="fas icon-dim icon-maroon js-section-toggle-icon"
  1168. ></i>
  1169. </h2>
  1170. <div x-cloak x-show="showPolicyOptions">
  1171. <h3 class="u-mt20 u-mb10">
  1172. <?= _("Users") ?>
  1173. </h3>
  1174. <div class="u-mb10">
  1175. <label for="v_policy_user_edit_details" class="form-label">
  1176. <?= _("Allow users to edit their account details") ?>
  1177. </label>
  1178. <select
  1179. class="form-select"
  1180. name="v_policy_user_edit_details"
  1181. id="v_policy_user_edit_details"
  1182. >
  1183. <option value="yes">
  1184. <?= _("Yes") ?>
  1185. </option>
  1186. <option value="no" <?= $_SESSION["POLICY_USER_EDIT_DETAILS"] == "no" ? "selected" : "" ?>>
  1187. <?= _("No") ?>
  1188. </option>
  1189. </select>
  1190. </div>
  1191. <div class="u-mb10">
  1192. <label for="v_policy_user_edit_web_templates" class="form-label">
  1193. <?= _("Allow users to change templates when editing web domains") ?>
  1194. </label>
  1195. <select class="form-select" name="v_policy_user_edit_web_templates" id="v_policy_user_edit_web_templates">
  1196. <option value="yes">
  1197. <?= _("Yes") ?>
  1198. </option>
  1199. <option value="no" <?= $_SESSION["POLICY_USER_EDIT_WEB_TEMPLATES"] == "no" ? "selected" : "" ?>>
  1200. <?= _("No") ?>
  1201. </option>
  1202. </select>
  1203. </div>
  1204. <div class="u-mb10">
  1205. <label for="v_policy_user_edit_dns_templates" class="form-label">
  1206. <?= _("Allow users to change templates when editing DNS zones") ?>
  1207. </label>
  1208. <select
  1209. class="form-select"
  1210. name="v_policy_user_edit_dns_templates"
  1211. id="v_policy_user_edit_dns_templates"
  1212. >
  1213. <option value="yes">
  1214. <?= _("Yes") ?>
  1215. </option>
  1216. <option value="no" <?= $_SESSION["POLICY_USER_EDIT_DNS_TEMPLATES"] == "no" ? "selected" : "" ?>>
  1217. <?= _("No") ?>
  1218. </option>
  1219. </select>
  1220. </div>
  1221. <div class="u-mb10">
  1222. <label for="v_policy_user_view_logs" class="form-label">
  1223. <?= _("Allow users to view action and login history logs") ?>
  1224. </label>
  1225. <select
  1226. class="form-select"
  1227. name="v_policy_user_view_logs"
  1228. id="v_policy_user_view_logs"
  1229. >
  1230. <option value="yes">
  1231. <?= _("Yes") ?>
  1232. </option>
  1233. <option value="no" <?= $_SESSION["POLICY_USER_VIEW_LOGS"] == "no" ? "selected" : "" ?>>
  1234. <?= _("No") ?>
  1235. </option>
  1236. </select>
  1237. </div>
  1238. <div class="u-mb10">
  1239. <label for="v_policy_user_delete_logs" class="form-label">
  1240. <?= _("Allow users to delete log history") ?>
  1241. </label>
  1242. <select
  1243. class="form-select"
  1244. name="v_policy_user_delete_logs"
  1245. id="v_policy_user_delete_logs"
  1246. >
  1247. <option value="yes">
  1248. <?= _("Yes") ?>
  1249. </option>
  1250. <option value="no" <?= $_SESSION["POLICY_USER_DELETE_LOGS"] == "no" ? "selected" : "" ?>>
  1251. <?= _("No") ?>
  1252. </option>
  1253. </select>
  1254. </div>
  1255. <?php if ($_SESSION["POLICY_SYSTEM_ENABLE_BACON"] === "true") { ?>
  1256. <div class="u-mb10">
  1257. <label for="v_policy_user_view_suspended" class="form-label">
  1258. <?= _("Allow suspended users to log in with read-only access") ?>
  1259. <span class="hint">(<?= _("Preview") ?>)</span>
  1260. </label>
  1261. <select
  1262. class="form-select"
  1263. name="v_policy_user_view_suspended"
  1264. id="v_policy_user_view_suspended"
  1265. >
  1266. <option value="yes">
  1267. <?= _("Yes") ?>
  1268. </option>
  1269. <option value="no" <?= $_SESSION["POLICY_USER_VIEW_SUSPENDED"] == "no" ? "selected" : "" ?>>
  1270. <?= _("No") ?>
  1271. </option>
  1272. </select>
  1273. </div>
  1274. <?php } ?>
  1275. <div class="u-mb10">
  1276. <label for="v_policy_backup_suspended_users" class="form-label">
  1277. <?= _("Allow suspended users to create new backups") ?>
  1278. </label>
  1279. <select
  1280. class="form-select"
  1281. name="v_policy_backup_suspended_users"
  1282. id="v_policy_backup_suspended_users"
  1283. >
  1284. <option value="yes">
  1285. <?= _("Yes") ?>
  1286. </option>
  1287. <option value="no" <?= $_SESSION["POLICY_BACKUP_SUSPENDED_USERS"] == "no" ? "selected" : "" ?>>
  1288. <?= _("No") ?>
  1289. </option>
  1290. </select>
  1291. </div>
  1292. <div class="u-mb10">
  1293. <label for="v_policy_sync_error_documents" class="form-label">
  1294. <?= _("Sync Error document templates on user rebuild") ?>
  1295. </label>
  1296. <select
  1297. class="form-select"
  1298. name="v_policy_sync_error_documents"
  1299. id="v_policy_sync_error_documents"
  1300. >
  1301. <option value="yes">
  1302. <?= _("Yes") ?>
  1303. </option>
  1304. <option value="no" <?= $_SESSION["POLICY_SYNC_ERROR_DOCUMENTS"] == "no" ? "selected" : "" ?>>
  1305. <?= _("No") ?>
  1306. </option>
  1307. </select>
  1308. </div>
  1309. <div class="u-mb10">
  1310. <label for="v_policy_sync_skeleton" class="form-label">
  1311. <?= _("Sync Skeleton templates") ?>
  1312. </label>
  1313. <select
  1314. class="form-select"
  1315. name="v_policy_sync_skeleton"
  1316. id="v_policy_sync_skeleton"
  1317. >
  1318. <option value="yes">
  1319. <?= _("Yes") ?>
  1320. </option>
  1321. <option value="no" <?= $_SESSION["POLICY_SYNC_SKELETON"] == "no" ? "selected" : "" ?>>
  1322. <?= _("No") ?>
  1323. </option>
  1324. </select>
  1325. </div>
  1326. <h3 class="u-mt20 u-mb10">
  1327. <?= _("Domains") ?>
  1328. </h3>
  1329. <div class="u-mb10">
  1330. <label for="v_enforce_subdomain_ownership" class="form-label">
  1331. <?= _("Enforce subdomain ownership") ?>
  1332. </label>
  1333. <select
  1334. class="form-select"
  1335. name="v_enforce_subdomain_ownership"
  1336. id="v_enforce_subdomain_ownership"
  1337. >
  1338. <option value="yes">
  1339. <?= _("Yes") ?>
  1340. </option>
  1341. <option value="no" <?= $_SESSION["ENFORCE_SUBDOMAIN_OWNERSHIP"] == "no" ? "selected" : "" ?>>
  1342. <?= _("No") ?>
  1343. </option>
  1344. </select>
  1345. </div>
  1346. </div>
  1347. </div>
  1348. </details>
  1349. <!-- Plugins tab -->
  1350. <details class="collapse u-mb10">
  1351. <summary class="collapse-header">
  1352. <i class="fas fa-puzzle-piece u-mr10"></i><?= _("Plugins") ?>
  1353. </summary>
  1354. <div class="collapse-content">
  1355. <div class="u-mb10">
  1356. <label for="v_plugin_app_installer" class="form-label">
  1357. <?= _("Quick App Installer") ?>
  1358. </label>
  1359. <select class="form-select" name="v_plugin_app_installer" id="v_plugin_app_installer">
  1360. <option value="false">
  1361. <?= _("No") ?>
  1362. </option>
  1363. <option value="true" <?= $_SESSION["PLUGIN_APP_INSTALLER"] == "true" ? "selected" : "" ?>>
  1364. <?= _("Yes") ?>
  1365. </option>
  1366. </select>
  1367. </div>
  1368. <div class="u-mb10">
  1369. <label for="v_filemanager" class="form-label">
  1370. <?= _("File Manager") ?>
  1371. </label>
  1372. <select class="form-select" name="v_filemanager" id="v_filemanager">
  1373. <option value="false">
  1374. <?= _("No") ?>
  1375. </option>
  1376. <option value="true" <?= $_SESSION["FILE_MANAGER"] == "true" ? "selected" : "" ?>>
  1377. <?= _("Yes") ?>
  1378. </option>
  1379. </select>
  1380. </div>
  1381. <div class="u-mb10">
  1382. <label for="v_quota" class="form-label">
  1383. <?= _("File System Disk Quota") ?>
  1384. </label>
  1385. <select class="form-select" name="v_quota" id="v_quota">
  1386. <option value="no">
  1387. <?= _("No") ?>
  1388. </option>
  1389. <option value="yes" <?= $_SESSION["DISK_QUOTA"] == "yes" ? "selected" : "" ?>>
  1390. <?= _("Yes") ?>
  1391. </option>
  1392. </select>
  1393. </div>
  1394. <div class="u-mb10">
  1395. <label for="v_firewall" class="form-label">
  1396. <?= _("Firewall") ?>
  1397. </label>
  1398. <select class="form-select" name="v_firewall" id="v_firewall">
  1399. <option value="no">
  1400. <?= _("No") ?>
  1401. </option>
  1402. <option value="yes" <?= $_SESSION["FIREWALL_SYSTEM"] == "iptables" ? "selected" : "" ?>>
  1403. <?= _("Yes") ?>
  1404. </option>
  1405. </select>
  1406. </div>
  1407. </div>
  1408. </details>
  1409. </div>
  1410. </form>
  1411. </div>
  1412. <!-- End form -->