From 9969014d3e8795013fc8aeb97b1b45f151f3bf7c Mon Sep 17 00:00:00 2001 From: infosave2007 Date: Sat, 24 Jan 2026 20:34:07 +0300 Subject: [PATCH] Fix: Case-sensitive AWG params and XRay Identifier logic --- inc/InstallProtocolManager.php | 3 ++- inc/VpnClient.php | 31 ++++++++++++++++--------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/inc/InstallProtocolManager.php b/inc/InstallProtocolManager.php index e7131ec..d8c51f4 100644 --- a/inc/InstallProtocolManager.php +++ b/inc/InstallProtocolManager.php @@ -1200,7 +1200,8 @@ class InstallProtocolManager } // Add client - $newClient = ['id' => $clientId, 'email' => $clientId]; + $email = !empty($options['login']) ? $options['login'] : $clientId; + $newClient = ['id' => $clientId, 'email' => $email]; // Detect flow from other clients or default $flow = 'xtls-rprx-vision'; // Default for Reality diff --git a/inc/VpnClient.php b/inc/VpnClient.php index fafdd43..ae195ed 100644 --- a/inc/VpnClient.php +++ b/inc/VpnClient.php @@ -117,11 +117,20 @@ class VpnClient // Add AWG parameters (use UPPERCASE keys as extracted from container) + // Normalize AWG params keys case-insensitively + $cleanAwgParams = []; + if (is_array($awgParams)) { + foreach ($awgParams as $k => $v) { + $cleanAwgParams[strtoupper($k)] = $v; + } + } + + // Add AWG parameters (use UPPERCASE keys internal logic) foreach (['JC', 'JMIN', 'JMAX', 'S1', 'S2', 'H1', 'H2', 'H3', 'H4'] as $key) { - if (isset($awgParams[$key])) { - $vars[$key] = $awgParams[$key]; + if (isset($cleanAwgParams[$key])) { + $vars[$key] = $cleanAwgParams[$key]; } else { - // Default values for AWG params + // Default values for AWG params (Fallback only) $defaults = [ 'JC' => 5, 'JMIN' => 100, @@ -1507,19 +1516,11 @@ class VpnClient // Or better: try to detect protocol from config if container name is vague (but usually amnezia-xray) if (strpos($containerName, 'xray') !== false) { - $uuid = null; - // Try to find UUID in config - // 1. Check for JSON format (server.json style or subsets) - if (preg_match('/"id":\s*"([0-9a-fA-F-]{36})"/', $this->data['config'] ?? '', $m)) { - $uuid = $m[1]; - } - // 2. Check for VLESS URI - elseif (preg_match('/vless:\/\/([0-9a-fA-F-]{36})@/', $this->data['config'] ?? '', $m)) { - $uuid = $m[1]; - } + // Use client Name (Login) as identifier strictly requested by user + $identifier = $this->data['name'] ?? null; - if ($uuid) { - $stats = self::getXrayStats($serverData, $uuid); + if ($identifier) { + $stats = self::getXrayStats($serverData, $identifier); } }