Browse Source

IPV6: Edit IPV6 User Web Interface

root 3 years ago
parent
commit
10f6fd1bd2
2 changed files with 99 additions and 5 deletions
  1. 79 1
      web/edit/web/index.php
  2. 20 4
      web/templates/pages/edit_web.php

+ 79 - 1
web/edit/web/index.php

@@ -39,6 +39,7 @@ unset($output);
 
 // Parse domain
 $v_ip = $data[$v_domain]["IP"];
+$v_ipv6 = $data[$v_domain]["IP6"];
 $v_template = $data[$v_domain]["TPL"];
 $v_aliases = str_replace(",", "\n", $data[$v_domain]["ALIAS"]);
 $valiases = explode(",", $data[$v_domain]["ALIAS"]);
@@ -193,6 +194,7 @@ if (!empty($_POST["save"])) {
 
 	// Change web domain IP
 	$v_newip = "";
+	$v_newipv6 = "";
 	$v_newip_public = "";
 
 	if (!empty($_POST["v_ip"])) {
@@ -200,6 +202,10 @@ if (!empty($_POST["save"])) {
 		$v_newip_public = empty($ips[$v_newip]["NAT"]) ? $v_newip : $ips[$v_newip]["NAT"];
 	}
 
+	if (!empty($_POST["v_ipv6"])) {
+		$v_newipv6 = $_POST["v_ipv6"];
+	}
+
 	if ($v_ip != $_POST["v_ip"] && empty($_SESSION["error_msg"])) {
 		exec(
 			HESTIA_CMD .
@@ -219,6 +225,25 @@ if (!empty($_POST["save"])) {
 		unset($output);
 	}
 
+	if ($v_ipv6 != $_POST["v_ipv6"] && empty($_SESSION["error_msg"])) {
+		exec(
+			HESTIA_CMD .
+				"v-change-web-domain-ipv6 " .
+				$user .
+				" " .
+				quoteshellarg($v_domain) .
+				" " .
+				quoteshellarg($_POST["v_ipv6"]) .
+				" 'no'",
+			$output,
+			$return_var,
+		);
+		check_return_code($return_var, $output);
+		$restart_web = "yes";
+		$restart_proxy = "yes";
+		unset($output);
+	}
+
 	// Change dns domain IP
 	if ($v_ip != $_POST["v_ip"] && empty($_SESSION["error_msg"])) {
 		exec(
@@ -246,6 +271,32 @@ if (!empty($_POST["save"])) {
 		}
 	}
 
+	if ($v_ipv6 != $_POST["v_ipv6"] && empty($_SESSION["error_msg"])) {
+		exec(
+			HESTIA_CMD . "v-list-dns-domain " . $user . " " . quoteshellarg($v_domain) . " json",
+			$output,
+			$return_var,
+		);
+		unset($output);
+		if ($return_var == 0) {
+			exec(
+				HESTIA_CMD .
+					"v-change-dns-domain-ipv6 " .
+					$user .
+					" " .
+					quoteshellarg($v_domain) .
+					" " .
+					quoteshellarg($v_newipv6) .
+					" 'no'",
+				$output,
+				$return_var,
+			);
+			check_return_code($return_var, $output);
+			unset($output);
+			$restart_dns = "yes";
+		}
+	}
+
 	// Change dns ip for each alias
 	if ($v_ip != $_POST["v_ip"] && empty($_SESSION["error_msg"])) {
 		foreach ($valiases as $v_alias) {
@@ -274,8 +325,35 @@ if (!empty($_POST["save"])) {
 		}
 	}
 
+	if ($v_ipv6 != $_POST["v_ipv6"] && empty($_SESSION["error_msg"])) {
+		foreach ($valiases as $v_alias) {
+			exec(
+				HESTIA_CMD . "v-list-dns-domain " . $user . " " . quoteshellarg($v_alias) . " json",
+				$output,
+				$return_var,
+			);
+			unset($output);
+			if ($return_var == 0) {
+				exec(
+					HESTIA_CMD .
+						"v-change-dns-domain-ipv6 " .
+						$user .
+						" " .
+						quoteshellarg($v_alias) .
+						" " .
+						quoteshellarg($v_newipv6),
+					$output,
+					$return_var,
+				);
+				check_return_code($return_var, $output);
+				unset($output);
+				$restart_dns = "yes";
+			}
+		}
+	}
+
 	// Change mail domain IP
-	if ($v_ip != $_POST["v_ip"] && empty($_SESSION["error_msg"])) {
+	if ((($v_ip != $_POST["v_ip"]) || ($v_ipv6 != $_POST["v_ipv6"])) && empty($_SESSION["error_msg"])) {
 		exec(
 			HESTIA_CMD . "v-list-mail-domain " . $user . " " . quoteshellarg($v_domain) . " json",
 			$output,

+ 20 - 4
web/templates/pages/edit_web.php

@@ -66,13 +66,29 @@
 				</div>
 			<?php } ?>
 			<div class="u-mb20">
-				<label for="v_ip" class="form-label"><?= _("IP Address") ?></label>
+				<label for="v_ip" class="form-label"><?= _("IPV4 Address") ?></label>
 				<select class="form-select" name="v_ip" id="v_ip">
 					<?php
 						foreach ($ips as $ip => $value) {
-							$display_ip = htmlentities(empty($value['NAT']) ? $ip : "{$value['NAT']}");
-							$ip_selected = ((!empty($v_ip) && $ip == $v_ip) || $v_ip == "'{$ip}'")	? 'selected' : '';
-							echo "\n\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"{$ip}\" {$ip_selected}>{$display_ip}</option>\n";
+							if ($value['VERSION']==4) {
+								$display_ip = htmlentities(empty($value['NAT']) ? $ip : "{$value['NAT']}");
+								$ip_selected = ((!empty($v_ip) && $ip == $v_ip) || $v_ip == "'{$ip}'")	? 'selected' : '';
+								echo "\n\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"{$ip}\" {$ip_selected}>{$display_ip}</option>\n";
+							}
+						}
+					?>
+				</select>
+			</div>
+			<div class="u-mb20">
+				<label for="v_ipv6" class="form-label"><?= _("IPV6 Address") ?></label>
+				<select class="form-select" name="v_ipv6" id="v_ipv6">
+					<?php
+						foreach ($ips as $ipv6 => $value) {
+							if ($value['VERSION']==6) {
+								$display_ipv6 = $ipv6;
+								$ipv6_selected = ((!empty($v_ipv6) && $ipv6 == $v_ipv6) || $v_ipv6 == "'{$ipv6}'")	? 'selected' : '';
+								echo "\n\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"{$ipv6}\" {$ipv6_selected}>{$display_ipv6}</option>\n";
+							}
 						}
 					?>
 				</select>