Jelajahi Sumber

Merge remote-tracking branch 'upstream/main' into ipv6

asmcc 2 tahun lalu
induk
melakukan
dfb1e13e73

+ 6 - 9
bin/v-update-web-templates

@@ -29,11 +29,15 @@ source_conf "$HESTIA/conf/hestia.conf"
 # Check if /install/upgrade/manual/install_awstats_geoip.sh has been applied
 awstats_patch=$(cat $HESTIA/data/templates/web/awstats/awstats.tpl | grep "LoadPlugin=\"geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat\"")
 
-# Update templates
-if [ -d "${WEBTPL}" ]; then
+# Skeleton, Unassinged and Suspended
+if [ "$POLICY_SYNC_SKELETON" != "no" ]; then
 	rm -rf "${WEBTPL}/skel" 2> /dev/null
 	rm -rf "${WEBTPL}/suspend" 2> /dev/null
 	rm -rf "${WEBTPL}/unassigned" 2> /dev/null
+
+	for webtpl_folder in $(ls $HESTIA_COMMON_DIR/templates/web/* -d 2> /dev/null); do
+		cp -rf "${webtpl_folder}" "${WEBTPL}/"
+	done
 fi
 
 [ -d "${WEBTPL}/nginx" ] || mkdir -p "${WEBTPL}/nginx"
@@ -46,13 +50,6 @@ for webtpl_folder in $(ls $HESTIA_INSTALL_DIR/templates/web/* -d 2> /dev/null |
 	cp -rf "${webtpl_folder}" "${WEBTPL}/"
 done
 
-# Skeleton, Unassinged and Suspended
-if [ "$POLICY_SYNC_SKELETON" != "no" ]; then
-	for webtpl_folder in $(ls $HESTIA_COMMON_DIR/templates/web/* -d 2> /dev/null); do
-		cp -rf "${webtpl_folder}" "${WEBTPL}/"
-	done
-fi
-
 versions_list=$(ls -d /etc/php/*)
 for php_ver in $versions_list; do
 	[ ! -d "/etc/php/$php_ver/fpm/pool.d/" ] && continue

+ 1 - 3
func/rebuild.sh

@@ -261,9 +261,7 @@ rebuild_web_domain_conf() {
 	if [ ! -d "$HOMEDIR/$user/web/$domain/document_errors" ]; then
 		$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/document_errors"
 		# Propagating html skeleton
-		if [ -d "$WEBTPL/skel/document_errors/" ]; then
-			user_exec cp -r "$WEBTPL/skel/document_errors/" "$HOMEDIR/$user/web/$domain/"
-		fi
+		user_exec cp -r "$WEBTPL/skel/document_errors/*" "$HOMEDIR/$user/web/$domain/document_errors/"
 	fi
 	$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/cgi-bin"
 	$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/private"

+ 2 - 2
func/syshealth.sh

@@ -514,12 +514,12 @@ function syshealth_repair_system_config() {
 
 	if [[ -z $(check_key_exists 'POLICY_SYNC_ERROR_DOCUMENTS') ]]; then
 		echo "[ ! ] Adding missing variable to hestia.conf: POLICY_SYNC_ERROR_DOCUMENTS ('yes')"
-		$BIN/v-change-sys-config-value "POLICY_SYNC_ERROR_DOCUMENTS" "no"
+		$BIN/v-change-sys-config-value "POLICY_SYNC_ERROR_DOCUMENTS" "yes"
 	fi
 
 	if [[ -z $(check_key_exists 'POLICY_SYNC_SKELETON') ]]; then
 		echo "[ ! ] Adding missing variable to hestia.conf: POLICY_SYNC_SKELETON ('yes')"
-		$BIN/v-change-sys-config-value "POLICY_SYNC_SKELETON" "no"
+		$BIN/v-change-sys-config-value "POLICY_SYNC_SKELETON" "yes"
 	fi
 
 	# IPV6 Support

+ 55 - 49
web/templates/pages/list_access_keys.php

@@ -45,71 +45,77 @@
 <!-- End toolbar -->
 
 <div class="container">
-	<div class="units js-units-container">
-		<div class="header units-header">
-			<div class="l-unit__col l-unit__col--right">
-				<div>
-					<div class="clearfix l-unit__stat-col--left super-compact">
-						<input type="checkbox" class="js-toggle-all-checkbox" title="<?= _("Select all") ?>">
-					</div>
-					<div class="clearfix l-unit__stat-col--left wide-6"><b><?= _("Access Key") ?></b></div>
-					<div class="clearfix l-unit__stat-col--left compact u-text-right"><b>&nbsp;</b></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center wide-2"><b><?= _("Comment") ?></b></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center"><b><?= _("Date") ?></b></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center"><b><?= _("Time") ?></b></div>
-				</div>
+
+	<div class="units-table js-units-container">
+		<div class="units-table-header">
+			<div class="units-table-cell">
+				<input type="checkbox" class="js-toggle-all-checkbox" title="<?= _("Select all") ?>">
 			</div>
+			<div class="units-table-cell"><?= _("Access Key") ?></div>
+			<div class="units-table-cell"></div>
+			<div class="units-table-cell"><?= _("Comment") ?></div>
+			<div class="units-table-cell"><?= _("Date") ?></div>
+			<div class="units-table-cell"><?= _("Time") ?></div>
 		</div>
 
-		<!-- Begin Access Keys list item loop -->
 		<?php
 			foreach ($data as $key => $value) {
 				++$i;
-					$key_user = !empty($value['USER']) ? $value['USER'] : 'admin';
-					$key_comment = !empty($value['COMMENT']) ? $value['COMMENT'] : '-';
-					//$key_permissions = !empty($value['PERMISSIONS']) ? $value['PERMISSIONS'] : '-';
-					//$key_permissions = implode(' ', $key_permissions);
-					$key_date = !empty($value['DATE']) ? $value['DATE'] : '-';
-					$key_time = !empty($value['TIME']) ? $value['TIME'] : '-';
+				$key_user = !empty($value['USER']) ? $value['USER'] : 'admin';
+				$key_comment = !empty($value['COMMENT']) ? $value['COMMENT'] : '-';
+				//$key_permissions = !empty($value['PERMISSIONS']) ? $value['PERMISSIONS'] : '-';
+				//$key_permissions = implode(' ', $key_permissions);
+				$key_date = !empty($value['DATE']) ? $value['DATE'] : '-';
+				$key_time = !empty($value['TIME']) ? $value['TIME'] : '-';
 			?>
-			<div class="l-unit animate__animated animate__fadeIn js-unit"
+			<div class="units-table-row animate__animated animate__fadeIn js-unit"
 				data-sort-key="<?=strtolower($key)?>"
 				data-sort-comment="<?=strtolower($key_comment)?>"
 				data-sort-date="<?=strtotime($data[$key]['DATE'] .' '. $data[$key]['TIME'] )?>">
-
-				<div class="l-unit__col l-unit__col--right">
-					<div class="clearfix l-unit__stat-col--left super-compact">
+				<div class="units-table-cell">
+					<div>
 						<input id="check<?= $i ?>" class="js-unit-checkbox" type="checkbox" title="<?= _("Select") ?>" name="key[]" value="<?= $key ?>">
+						<label for="check<?= $i ?>" class="u-hide-desktop"><?= _("Select") ?></label>
 					</div>
-					<div class="clearfix l-unit__stat-col--left wide-6">
-						<b><a href="/list/access-key/?key=<?= htmlentities($key) ?>&token=<?= $_SESSION["token"] ?>" title="<?= _("Access Key") ?>: <?= $key ?>"><?= $key ?></a></b>
-					</div>
-
-					<!-- START QUICK ACTION TOOLBAR AREA -->
-					<div class="clearfix l-unit__stat-col--left compact u-text-right">
-						<div class="l-unit-toolbar__col l-unit-toolbar__col--right u-noselect">
-							<div class="actions-panel clearfix">
-								<div class="actions-panel__col actions-panel__delete shortcut-delete" data-key-action="js">
-									<a
-										class="data-controls js-confirm-action"
-										href="/delete/access-key/?key=<?= $key ?>&token=<?= $_SESSION["token"] ?>"
-										data-confirm-title="<?= _("Delete") ?>"
-										data-confirm-message="<?= sprintf(_("Are you sure you want to delete access key %s?"), $key) ?>"
-									>
-										<i class="fas fa-trash icon-red icon-dim"></i>
-									</a>
-								</div>
-							</div>
-						</div>
-					</div>
-					<!-- END QUICK ACTION TOOLBAR AREA -->
-					<div class="clearfix l-unit__stat-col--left u-text-center wide-2"><b><?= _($key_comment) ?></b></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center"><b><?= $key_date ?></b></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center"><b><?= $key_time ?></b></div>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("Access Key") ?>:</span>
+					<a href="/list/access-key/?key=<?= htmlentities($key) ?>&token=<?= $_SESSION["token"] ?>" title="<?= _("Access Key") ?>: <?= $key ?>">
+						<?= $key ?>
+					</a>
+				</div>
+				<div class="units-table-cell">
+					<ul class="units-table-row-actions">
+						<li class="units-table-row-action shortcut-delete" data-key-action="js">
+							<a
+								class="units-table-row-action-link data-controls js-confirm-action"
+								href="/delete/access-key/?key=<?= $key ?>&token=<?= $_SESSION["token"] ?>"
+								title="<?= _("Delete") ?>"
+								data-confirm-title="<?= _("Delete") ?>"
+								data-confirm-message="<?= sprintf(_("Are you sure you want to delete access key %s?"), $key) ?>"
+							>
+								<i class="fas fa-trash icon-red"></i>
+								<span class="u-hide-desktop"><?= _("Delete") ?></span>
+							</a>
+						</li>
+					</ul>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("Comment") ?>:</span>
+					<?= _($key_comment) ?>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("Date") ?>:</span>
+					<time datetime="<?= $key_date ?>"><?= $key_date ?></time>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("Time") ?>:</span>
+					<?= $key_time ?>
 				</div>
 			</div>
 		<?php } ?>
 	</div>
+
 </div>
 
 <footer class="app-footer">

+ 47 - 36
web/templates/pages/list_firewall_banlist.php

@@ -26,18 +26,17 @@
 <!-- End toolbar -->
 
 <div class="container">
-	<div class="units js-units-container">
-		<div class="header units-header">
-			<div class="l-unit__col l-unit__col--right">
-				<div class="clearfix l-unit__stat-col--left super-compact">
-					<input type="checkbox" class="js-toggle-all-checkbox" title="<?= _("Select all") ?>">
-				</div>
-				<div class="clearfix l-unit__stat-col--left wide-3"><b><?= _("IP Address") ?></b></div>
-				<div class="clearfix l-unit__stat-col--left compact-4"><b>&nbsp;</b></div>
-				<div class="clearfix l-unit__stat-col--left u-text-center compact-5"><b><?= _("Date") ?></b></div>
-				<div class="clearfix l-unit__stat-col--left u-text-center compact-5"><b><?= _("Time") ?></b></div>
-				<div class="clearfix l-unit__stat-col--left wide u-text-center"><b><?= _("Comment") ?></b></div>
+
+	<div class="units-table js-units-container">
+		<div class="units-table-header">
+			<div class="units-table-cell">
+				<input type="checkbox" class="js-toggle-all-checkbox" title="<?= _("Select all") ?>">
 			</div>
+			<div class="units-table-cell"><?= _("IP Address") ?></div>
+			<div class="units-table-cell"></div>
+			<div class="units-table-cell"><?= _("Date") ?></div>
+			<div class="units-table-cell"><?= _("Time") ?></div>
+			<div class="units-table-cell"><?= _("Comment") ?></div>
 		</div>
 
 		<!-- Begin banned IP address list item loop -->
@@ -46,37 +45,49 @@
 				++$i;
 				$ip = $key;
 			?>
-			<div class="l-unit animate__animated animate__fadeIn js-unit">
-				<div class="l-unit__col l-unit__col--right">
-					<div class="clearfix l-unit__stat-col--left super-compact">
+			<div class="units-table-row animate__animated animate__fadeIn js-unit">
+				<div class="units-table-cell">
+					<div>
 						<input id="check<?= $i ?>" class="js-unit-checkbox" type="checkbox" title="<?= _("Select") ?>" name="ipchain[]" value="<?= $ip . ":" . $value["CHAIN"] ?>">
+						<label for="check<?= $i ?>" class="u-hide-desktop"><?= _("Select") ?></label>
 					</div>
-					<div class="clearfix l-unit__stat-col--left wide-3"><b><?= $ip ?></b></div>
-					<!-- START QUICK ACTION TOOLBAR AREA -->
-					<div class="clearfix l-unit__stat-col--left compact-4">
-						<div class="l-unit-toolbar__col l-unit-toolbar__col--right u-noselect">
-							<div class="actions-panel clearfix">
-								<div class="actions-panel__col actions-panel__delete shortcut-delete" data-key-action="js">
-									<a
-										class="data-controls js-confirm-action"
-										href="/delete/firewall/banlist/?ip=<?= $ip ?>&chain=<?= $value["CHAIN"] ?>&token=<?= $_SESSION["token"] ?>"
-										data-confirm-title="<?= _("Delete") ?>"
-										data-confirm-message="<?= sprintf(_("Are you sure you want to delete IP address %s?"), $key) ?>"
-									>
-										<i class="fas fa-trash icon-red icon-dim"></i>
-									</a>
-								</div>
-							</div>
-						</div>
-					</div>
-					<!-- END QUICK ACTION TOOLBAR AREA -->
-					<div class="clearfix l-unit__stat-col--left u-text-center compact-5"><?= _($data[$key]["DATE"]) ?></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center compact-5"><?= $data[$key]["TIME"] ?></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center wide"><b><?= _($value["CHAIN"]) ?></b></div>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("IP Address") ?>:</span>
+					<?= $ip ?>
+				</div>
+				<div class="units-table-cell">
+					<ul class="units-table-row-actions">
+						<li class="units-table-row-action shortcut-delete" data-key-action="js">
+							<a
+								class="units-table-row-action-link data-controls js-confirm-action"
+								href="/delete/firewall/banlist/?ip=<?= $ip ?>&chain=<?= $value["CHAIN"] ?>&token=<?= $_SESSION["token"] ?>"
+								title="<?= _("Delete") ?>"
+								data-confirm-title="<?= _("Delete") ?>"
+								data-confirm-message="<?= sprintf(_("Are you sure you want to delete IP address %s?"), $key) ?>"
+							>
+								<i class="fas fa-trash icon-red"></i>
+								<span class="u-hide-desktop"><?= _("Delete") ?></span>
+							</a>
+						</li>
+					</ul>
+				</div>
+				<div class="units-table-cell">
+					<span class="u-hide-desktop u-text-bold"><?= _("Date") ?>:</span>
+					<time datetime="<?= _($data[$key]["DATE"]) ?>"><?= _($data[$key]["DATE"]) ?></time>
+				</div>
+				<div class="units-table-cell">
+					<span class="u-hide-desktop u-text-bold"><?= _("Time") ?>:</span>
+					<?= $data[$key]["TIME"] ?>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("Comment") ?>:</span>
+					<?= _($value["CHAIN"]) ?>
 				</div>
 			</div>
 		<?php } ?>
 	</div>
+
 </div>
 
 <footer class="app-footer">

+ 57 - 48
web/templates/pages/list_firewall_ipset.php

@@ -26,65 +26,74 @@
 <!-- End toolbar -->
 
 <div class="container">
-	<div class="units js-units-container">
-		<div class="header units-header">
-			<div class="l-unit__col l-unit__col--right">
-				<div class="clearfix l-unit__stat-col--left super-compact">
-					<input type="checkbox" class="js-toggle-all-checkbox" title="<?= _("Select all") ?>">
-				</div>
-				<div class="clearfix l-unit__stat-col--left wide-3"><b><?= _("IP List Name") ?></b></div>
-				<div class="clearfix l-unit__stat-col--left compact-4"><b>&nbsp;</b></div>
-				<div class="clearfix l-unit__stat-col--left u-text-center compact-5"><b><?= _("Auto Update") ?></b></div>
-				<div class="clearfix l-unit__stat-col--left u-text-center compact-4"><b><?= _("IP Version") ?></b></div>
-				<div class="clearfix l-unit__stat-col--left u-text-center compact-4"><b><?= _("Date") ?></b></div>
-				<div class="clearfix l-unit__stat-col--left u-text-center compact-4"><b><?= _("Time") ?></b></div>
+
+	<div class="units-table js-units-container">
+		<div class="units-table-header">
+			<div class="units-table-cell">
+				<input type="checkbox" class="js-toggle-all-checkbox" title="<?= _("Select all") ?>">
 			</div>
+			<div class="units-table-cell"><?= _("IP List Name") ?></div>
+			<div class="units-table-cell"></div>
+			<div class="units-table-cell"><?= _("Auto Update") ?></div>
+			<div class="units-table-cell"><?= _("IP Version") ?></div>
+			<div class="units-table-cell"><?= _("Date") ?></div>
+			<div class="units-table-cell"><?= _("Time") ?></div>
 		</div>
 
 		<!-- Begin firewall IP address list item loop -->
 		<?php foreach ($data as $key => $value) {
 		$listname = $key; ?>
-			<div class="l-unit animate__animated animate__fadeIn js-unit">
-				<div class="l-unit__col l-unit__col--right">
-					<div class="clearfix l-unit__stat-col--left super-compact">
+			<div class="units-table-row animate__animated animate__fadeIn js-unit">
+				<div class="units-table-cell">
+					<div>
 						<input id="check<?= $i ?>" class="js-unit-checkbox" type="checkbox" title="<?= _("Select") ?>" name="setname[]" value="<?= $listname ?>">
+						<label for="check<?= $i ?>" class="u-hide-desktop"><?= _("Select") ?></label>
 					</div>
-					<div class="clearfix l-unit__stat-col--left wide-3"><b><?= $listname ?></b></div>
-					<!-- START QUICK ACTION TOOLBAR AREA -->
-					<div class="clearfix l-unit__stat-col--left compact-4">
-						<div class="l-unit-toolbar__col l-unit-toolbar__col--right u-noselect">
-							<div class="actions-panel clearfix">
-								<div class="actions-panel__col actions-panel__delete shortcut-delete" data-key-action="js">
-									<a
-										class="data-controls js-confirm-action"
-										href="/delete/firewall/ipset/?listname=<?= $listname ?>&token=<?= $_SESSION["token"] ?>"
-										data-confirm-title="<?= _("Delete") ?>"
-										data-confirm-message="<?= sprintf(_("Are you sure you want to delete IP list %s?"), $key) ?>"
-									>
-										<i class="fas fa-trash icon-red icon-dim"></i>
-									</a>
-								</div>
-							</div>
-						</div>
-					</div>
-					<!-- END QUICK ACTION TOOLBAR AREA -->
-					<div class="clearfix l-unit__stat-col--left u-text-center compact-5"><b>
-							<?php if ($data[$key]["AUTOUPDATE"] == "no") { ?>
-								<i class="fas fa-circle-xmark icon-red"></i>
-							<?php } else { ?>
-								<i class="fas fa-circle-check icon-green"></i>
-							<?php } ?>
-						</b>
-					</div>
-					<div class="clearfix l-unit__stat-col--left u-text-center compact-4"><?= _($data[$key]["IP_VERSION"]) ?></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center compact-4"><?= _($data[$key]["DATE"]) ?></div>
-					<div class="clearfix l-unit__stat-col--left u-text-center compact-4"><?= $data[$key]["TIME"] ?></div>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("IP List Name") ?>:</span>
+					<?= $listname ?>
+				</div>
+				<div class="units-table-cell">
+					<ul class="units-table-row-actions">
+						<li class="units-table-row-action shortcut-delete" data-key-action="js">
+							<a
+								class="units-table-row-action-link data-controls js-confirm-action"
+								href="/delete/firewall/ipset/?listname=<?= $listname ?>&token=<?= $_SESSION["token"] ?>"
+								title="<?= _("Delete") ?>"
+								data-confirm-title="<?= _("Delete") ?>"
+								data-confirm-message="<?= sprintf(_("Are you sure you want to delete IP list %s?"), $key) ?>"
+							>
+								<i class="fas fa-trash icon-red"></i>
+								<span class="u-hide-desktop"><?= _("Delete") ?></span>
+							</a>
+						</li>
+					</ul>
+				</div>
+				<div class="units-table-cell u-text-bold">
+					<span class="u-hide-desktop"><?= _("Auto Update") ?>:</span>
+					<?php if ($data[$key]["AUTOUPDATE"] == "no") { ?>
+						<i class="fas fa-circle-xmark icon-red" title="<?= _("Disabled") ?>"></i>
+					<?php } else { ?>
+						<i class="fas fa-circle-check icon-green" title="<?= _("Enabled") ?>"></i>
+					<?php } ?>
+				</div>
+				<div class="units-table-cell">
+					<span class="u-hide-desktop u-text-bold"><?= _("IP Version") ?>:</span>
+					<?= _($data[$key]["IP_VERSION"]) ?>
+				</div>
+				<div class="units-table-cell">
+					<span class="u-hide-desktop u-text-bold"><?= _("Date") ?>:</span>
+					<time datetime="<?= _($data[$key]["DATE"]) ?>"><?= _($data[$key]["DATE"]) ?></time>
+				</div>
+				<div class="units-table-cell">
+					<span class="u-hide-desktop u-text-bold"><?= _("Time") ?>:</span>
+					<?= $data[$key]["TIME"] ?>
 				</div>
 			</div>
-		<?php
-		$i++;
-	} ?>
+		<?php } ?>
 	</div>
+
 </div>
 
 <footer class="app-footer">