edit_server.php 42 KB

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