Преглед изворни кода

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

asmcc пре 3 година
родитељ
комит
e428ff13ed

+ 1 - 1
.gitignore

@@ -35,7 +35,7 @@ web/src/vendor/composer/installed.json
 
 
 # vitepress build output
 # vitepress build output
 **/.vitepress/dist/
 **/.vitepress/dist/
-
+**/.vitepress/cache/
 # Node
 # Node
 **/node_modules/
 **/node_modules/
 npm-debug.log
 npm-debug.log

+ 14 - 4
docs/_data/features.ts

@@ -22,9 +22,10 @@ export const webDomains: FeatureListItem[] = [
 			{ text: "PHP 7.1 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
 			{ text: "PHP 7.1 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
 			{ text: "PHP 7.2 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
 			{ text: "PHP 7.2 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
 			{ text: "PHP 7.3 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
 			{ text: "PHP 7.3 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
-			{ text: "PHP 7.4" },
+			{ text: "PHP 7.4 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
 			{ text: "PHP 8.0" },
 			{ text: "PHP 8.0" },
 			{ text: "PHP 8.1" },
 			{ text: "PHP 8.1" },
+			{ text: "PHP 8.2" },
 		],
 		],
 	},
 	},
 	{
 	{
@@ -55,12 +56,21 @@ export const mail: FeatureListItem[] = [
 	{ text: "Optional Rainloop installation" },
 	{ text: "Optional Rainloop installation" },
 ];
 ];
 
 
+export const dns: FeatureListItem[] = [
+	{ text: "Create your own nameservers" },
+	{ text: "Easy DNS cluster setup" },
+	{ text: "Support for DNSSEC on domains" },
+];
+
 export const databases: FeatureListItem[] = [
 export const databases: FeatureListItem[] = [
-	{ text: "Support for MariaDB 10.2 -> 10.8 with 10.6 as default" },
+	{ text: "Support for MariaDB 10.2 -> 10.11 with 10.11 as default" },
+	{ text: "Support for MySQL 8" },
 	{ text: "Support for PostgreSQL" },
 	{ text: "Support for PostgreSQL" },
-	{ text: "Latest version of phpMyAdmin" },
+	{ text: "Latest version of phpMyAdmin and phpPgAdmin" },
 ];
 ];
 
 
 export const serverAdmin: FeatureListItem[] = [
 export const serverAdmin: FeatureListItem[] = [
-	{ text: "Automated backups to SFTP, FTP or Backblaze B2" },
+	{
+		text: "Automated backups to SFTP, FTP and via Rclone with 50+ <a href='https://rclone.org/overview/'>Cloud storage providers</a>",
+	},
 ];
 ];

+ 1 - 1
docs/docs/server-administration/databases.md

@@ -83,7 +83,7 @@ Automated can sometimes cause issues. Login via SSH and open `/var/log/{webserve
   1. Check if the api has been enabled.
   1. Check if the api has been enabled.
   2. Add the public IP of your server to the allowed IPs in the **Server settings**.
   2. Add the public IP of your server to the allowed IPs in the **Server settings**.
 - `Access denied: There is a security token mismatch`
 - `Access denied: There is a security token mismatch`
-  1. Enable and then disable the API. This will refresh both keys.
+  1. Disable and then enable the phpMyAdmin SSO. This will refresh both keys.
   2. If you are behind a firewall or proxy, you may want to disable it and try again.
   2. If you are behind a firewall or proxy, you may want to disable it and try again.
 - `Link has expired`
 - `Link has expired`
   1. Refresh the database page and try again.
   1. Refresh the database page and try again.

+ 8 - 1
docs/features.md

@@ -7,7 +7,7 @@ title: Features
   import FeaturePageTitle from "./.vitepress/theme/components/FeaturePageTitle.vue";
   import FeaturePageTitle from "./.vitepress/theme/components/FeaturePageTitle.vue";
   import FeaturePageSection from "./.vitepress/theme/components/FeaturePageSection.vue";
   import FeaturePageSection from "./.vitepress/theme/components/FeaturePageSection.vue";
   import FeatureList from "./.vitepress/theme/components/FeatureList.vue";
   import FeatureList from "./.vitepress/theme/components/FeatureList.vue";
-  import { users, webDomains, mail, databases, serverAdmin } from "./_data/features";
+  import { users, webDomains, mail, dns, databases, serverAdmin } from "./_data/features";
 </script>
 </script>
 
 
 <FeaturePage>
 <FeaturePage>
@@ -28,6 +28,13 @@ title: Features
       <FeatureList :items="webDomains"></FeatureList>
       <FeatureList :items="webDomains"></FeatureList>
     </template>
     </template>
   </FeaturePageSection>
   </FeaturePageSection>
+  <FeaturePageSection image="/images/undraw_domain_names_re_0uun.svg">
+    <template #title>DNS</template>
+    <template #lead>Manage your own DNS server!</template>
+    <template #list>
+      <FeatureList :items="dns"></FeatureList>
+    </template>
+  </FeaturePageSection>
   <FeaturePageSection image="/images/undraw_personal_email_re_4lx7.svg">
   <FeaturePageSection image="/images/undraw_personal_email_re_4lx7.svg">
     <template #title>Mail</template>
     <template #title>Mail</template>
     <template #lead>Host your own emails, no need to pay a business mail provider!</template>
     <template #lead>Host your own emails, no need to pay a business mail provider!</template>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
docs/public/images/undraw_domain_names_re_0uun.svg


+ 3 - 8
install/deb/phpmyadmin/hestia-sso.php

@@ -132,6 +132,7 @@ function session_invalid() {
 	header("Location: " . dirname($_SERVER["PHP_SELF"]) . "/index.php");
 	header("Location: " . dirname($_SERVER["PHP_SELF"]) . "/index.php");
 	die();
 	die();
 }
 }
+
 $api = new Hestia_API();
 $api = new Hestia_API();
 if (!empty($_GET)) {
 if (!empty($_GET)) {
 	if (isset($_GET["logout"])) {
 	if (isset($_GET["logout"])) {
@@ -141,10 +142,8 @@ if (!empty($_GET)) {
 			$_SESSION["PMA_single_signon_user"],
 			$_SESSION["PMA_single_signon_user"],
 			$_SESSION["HESTIA_sso_host"],
 			$_SESSION["HESTIA_sso_host"],
 		);
 		);
-		//remove sessin
+		//remove session
 		session_invalid();
 		session_invalid();
-		header("Location: " . dirname($_SERVER["PHP_SELF"]) . "/index.php");
-		die();
 	} else {
 	} else {
 		if (isset($_GET["user"]) && isset($_GET["hestia_token"])) {
 		if (isset($_GET["user"]) && isset($_GET["hestia_token"])) {
 			$database = $_GET["database"];
 			$database = $_GET["database"];
@@ -166,8 +165,6 @@ if (!empty($_GET)) {
 						E_USER_WARNING,
 						E_USER_WARNING,
 					);
 					);
 					session_invalid();
 					session_invalid();
-					die();
-					session_invalid();
 				} else {
 				} else {
 					$id = session_id();
 					$id = session_id();
 					//create a new temp user
 					//create a new temp user
@@ -184,10 +181,10 @@ if (!empty($_GET)) {
 						@session_write_close();
 						@session_write_close();
 						setcookie($session_name, $id, 0, "/");
 						setcookie($session_name, $id, 0, "/");
 						header("Location: " . dirname($_SERVER["PHP_SELF"]) . "/index.php");
 						header("Location: " . dirname($_SERVER["PHP_SELF"]) . "/index.php");
+						die();
 					} else {
 					} else {
 						session_invalid();
 						session_invalid();
 					}
 					}
-					die();
 				}
 				}
 			} else {
 			} else {
 				trigger_error(
 				trigger_error(
@@ -198,11 +195,9 @@ if (!empty($_GET)) {
 					E_USER_WARNING,
 					E_USER_WARNING,
 				);
 				);
 				session_invalid();
 				session_invalid();
-				die();
 			}
 			}
 		}
 		}
 	}
 	}
 } else {
 } else {
 	session_invalid();
 	session_invalid();
-	die();
 }
 }

+ 1 - 1
install/hst-install-debian.sh

@@ -36,7 +36,7 @@ HESTIA_INSTALL_VER='1.8.0~alpha'
 # Dependencies
 # Dependencies
 multiphp_v=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2")
 multiphp_v=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2")
 fpm_v="8.0"
 fpm_v="8.0"
-mariadb_v="10.6"
+mariadb_v="10.11"
 
 
 software="nginx apache2 apache2-utils apache2-suexec-custom
 software="nginx apache2 apache2-utils apache2-suexec-custom
   apache2-suexec-pristine libapache2-mod-fcgid libapache2-mod-php$fpm_v
   apache2-suexec-pristine libapache2-mod-fcgid libapache2-mod-php$fpm_v

+ 2 - 6
install/hst-install-ubuntu.sh

@@ -36,7 +36,7 @@ HESTIA_INSTALL_VER='1.8.0~alpha'
 # Dependencies
 # Dependencies
 multiphp_v=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2")
 multiphp_v=("5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2")
 fpm_v="8.0"
 fpm_v="8.0"
-mariadb_v="10.6"
+mariadb_v="10.11"
 
 
 # Defining software pack for all distros
 # Defining software pack for all distros
 software="apache2 apache2.2-common apache2-suexec-custom apache2-utils
 software="apache2 apache2.2-common apache2-suexec-custom apache2-utils
@@ -721,11 +721,7 @@ fi
 # Installing MariaDB repo
 # Installing MariaDB repo
 if [ "$mysql" = 'yes' ]; then
 if [ "$mysql" = 'yes' ]; then
 	echo "[ * ] MariaDB"
 	echo "[ * ] MariaDB"
-	if [ "$release" != '22.04' ]; then
-		echo "deb [arch=$ARCH signed-by=/usr/share/keyrings/mariadb-keyring.gpg] https://dlm.mariadb.com/repo/mariadb-server/$mariadb_v/repo/$VERSION $codename main" > $apt/mariadb.list
-	else
-		echo "#deb [arch=$ARCH signed-by=/usr/share/keyrings/mariadb-keyring.gpg] https://dlm.mariadb.com/repo/mariadb-server/$mariadb_v/repo/$VERSION $codename main" > $apt/mariadb.list
-	fi
+	echo "deb [arch=$ARCH signed-by=/usr/share/keyrings/mariadb-keyring.gpg] https://dlm.mariadb.com/repo/mariadb-server/$mariadb_v/repo/$VERSION $codename main" > $apt/mariadb.list
 	curl -s https://mariadb.org/mariadb_release_signing_key.asc | gpg --dearmor | tee /usr/share/keyrings/mariadb-keyring.gpg > /dev/null 2>&1
 	curl -s https://mariadb.org/mariadb_release_signing_key.asc | gpg --dearmor | tee /usr/share/keyrings/mariadb-keyring.gpg > /dev/null 2>&1
 fi
 fi
 
 

+ 1 - 1
install/upgrade/manual/upgrade_mariadb.sh

@@ -7,7 +7,7 @@
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 
 
 # Set MariaDB Target Version
 # Set MariaDB Target Version
-mariadb_v='10.6'
+mariadb_v='10.11'
 
 
 # Load OS informations
 # Load OS informations
 source /etc/os-release
 source /etc/os-release

+ 6 - 0
install/upgrade/versions/1.7.0.sh

@@ -99,3 +99,9 @@ if echo "$BACKUP_SYSTEM" | grep "google" > /dev/null; then
 	echo "[ ! ] Deprecation notice: Backup via Google Cloud has been removed setup backup again via Rclone to reinstate the backup and restore capebilities!"
 	echo "[ ! ] Deprecation notice: Backup via Google Cloud has been removed setup backup again via Rclone to reinstate the backup and restore capebilities!"
 	add_upgrade_message "Deprecation notice: Backup via Google Cloud has been removed setup backup again via Rclone to reinstate the backup and restore capebilities!"
 	add_upgrade_message "Deprecation notice: Backup via Google Cloud has been removed setup backup again via Rclone to reinstate the backup and restore capebilities!"
 fi
 fi
+
+if [ "$PHPMYADMIN_KEY" != "" ]; then
+	echo "[ * ] Refresh hestia-sso for PMA..."
+	$BIN/v-delete-sys-pma-sso quiet
+	$BIN/v-add-sys-pma-sso quiet
+fi

+ 1 - 1
src/deb/nginx/control

@@ -1,7 +1,7 @@
 Source: hestia-nginx
 Source: hestia-nginx
 Package: hestia-nginx
 Package: hestia-nginx
 Priority: optional
 Priority: optional
-Version: 1.23.3
+Version: 1.23.3-1
 Section: admin
 Section: admin
 Maintainer: HestiaCP <[email protected]>
 Maintainer: HestiaCP <[email protected]>
 Homepage: https://www.hestiacp.com
 Homepage: https://www.hestiacp.com

+ 0 - 8
web/css/src/themes/default.css

@@ -929,14 +929,6 @@
 	& .fas {
 	& .fas {
 		font-size: 1rem;
 		font-size: 1rem;
 	}
 	}
-
-	@media (--viewport-large) {
-		&.active {
-			position: fixed;
-			top: 84px;
-			z-index: 1;
-		}
-	}
 }
 }
 
 
 .units {
 .units {

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
web/css/themes/default.min.css


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
web/css/themes/vestia.min.css


+ 0 - 4
web/js/main.js

@@ -117,16 +117,12 @@ document.addEventListener('alpine:init', () => {
 	// Sticky class helper
 	// Sticky class helper
 	window.addEventListener('scroll', () => {
 	window.addEventListener('scroll', () => {
 		const toolbar = document.querySelector('.toolbar');
 		const toolbar = document.querySelector('.toolbar');
-		const tableHeader = document.querySelector('.table-header');
 		const toolbarOffset =
 		const toolbarOffset =
 			toolbar.getBoundingClientRect().top + (window.scrollY - document.documentElement.clientTop);
 			toolbar.getBoundingClientRect().top + (window.scrollY - document.documentElement.clientTop);
 		const headerHeight = document.querySelector('.top-bar').offsetHeight;
 		const headerHeight = document.querySelector('.top-bar').offsetHeight;
 		const isActive = window.scrollY > toolbarOffset - headerHeight;
 		const isActive = window.scrollY > toolbarOffset - headerHeight;
 
 
 		toolbar.classList.toggle('active', isActive);
 		toolbar.classList.toggle('active', isActive);
-		if (tableHeader) {
-			tableHeader.classList.toggle('active', isActive);
-		}
 	});
 	});
 
 
 	// Select all helper
 	// Select all helper

+ 3 - 3
web/templates/pages/add_user.php

@@ -19,7 +19,7 @@
 
 
 	<form
 	<form
 		x-data="{
 		x-data="{
-			sendWelcomeMail: <?= $v_login_disabled == "yes" ? "true" : "false" ?>
+			loginDisabled: <?= $v_login_disabled == "yes" ? "true" : "false" ?>
 		}"
 		}"
 		id="vstobjects"
 		id="vstobjects"
 		name="v_add_user"
 		name="v_add_user"
@@ -62,12 +62,12 @@
 				<li><?= _("1 number") ?></li>
 				<li><?= _("1 number") ?></li>
 			</ul>
 			</ul>
 			<div class="form-check u-mb10">
 			<div class="form-check u-mb10">
-				<input x-model="sendWelcomeMail" class="form-check-input" type="checkbox" name="v_login_disabled" id="v_login_disabled">
+				<input x-model="loginDisabled" class="form-check-input" type="checkbox" name="v_login_disabled" id="v_login_disabled">
 				<label for="v_login_disabled">
 				<label for="v_login_disabled">
 					<?= _("Do not allow user to log in to Control Panel") ?>
 					<?= _("Do not allow user to log in to Control Panel") ?>
 				</label>
 				</label>
 			</div>
 			</div>
-			<div x-cloak x-show="sendWelcomeMail" id="send-welcome">
+			<div x-cloak x-show="loginDisabled" id="send-welcome">
 				<div class="form-check u-mb10">
 				<div class="form-check u-mb10">
 					<input class="form-check-input" type="checkbox" name="v_email_notice" id="v_email_notify" tabindex="5">
 					<input class="form-check-input" type="checkbox" name="v_email_notice" id="v_email_notify" tabindex="5">
 					<label for="v_email_notify">
 					<label for="v_email_notify">

Неке датотеке нису приказане због велике количине промена