1
0

3 Коммитууд ce76cedb0d ... 66053d9383

Эзэн SHA1 Мессеж Огноо
  mhsanaei 66053d9383 new alternative to get public IP address 1 долоо хоног өмнө
  Shishkevich D. 038cf34219 chore: return automatic generation of shadowsocks keys 1 долоо хоног өмнө
  Shishkevich D. 98a1517470 fix: login title shifts the input fields 1 долоо хоног өмнө

+ 4 - 1
install.sh

@@ -85,7 +85,10 @@ config_after_install() {
     local existing_hasDefaultCredential=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'hasDefaultCredential: .+' | awk '{print $2}')
     local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}')
     local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}')
-    local server_ip=$(curl -s https://api.ipify.org)
+    local server_ip=$(curl -s --max-time 3 https://api.ipify.org)
+    if [ -z "$server_ip" ]; then
+        server_ip=$(curl -s --max-time 3 https://4.ident.me)
+    fi
 
     if [[ ${#existing_webBasePath} -lt 4 ]]; then
         if [[ "$existing_hasDefaultCredential" == "true" ]]; then

+ 2 - 2
web/assets/js/model/inbound.js

@@ -2149,7 +2149,7 @@ Inbound.TrojanSettings.Fallback = class extends XrayCommonClass {
 Inbound.ShadowsocksSettings = class extends Inbound.Settings {
     constructor(protocol,
         method = SSMethods.BLAKE3_AES_256_GCM,
-        password = '',
+        password = RandomUtil.randomShadowsocksPassword(),
         network = 'tcp,udp',
         shadowsockses = [new Inbound.ShadowsocksSettings.Shadowsocks()],
         ivCheck = false,
@@ -2187,7 +2187,7 @@ Inbound.ShadowsocksSettings = class extends Inbound.Settings {
 Inbound.ShadowsocksSettings.Shadowsocks = class extends XrayCommonClass {
     constructor(
         method = '',
-        password = '',
+        password = RandomUtil.randomShadowsocksPassword(),
         email = RandomUtil.randomLowerAndNum(8),
         limitIp = 0,
         totalGB = 0,

+ 0 - 6
web/html/login.html

@@ -297,12 +297,6 @@
       min-height: 40px;
     }
   }
-  
-    @media (max-width: 1024px) {
-    .title {
-      font-size: 1.4rem;
-    }
-  }
 
   .words-wrapper {
     width: 100%;

+ 4 - 4
web/html/modals/client_modal.html

@@ -47,7 +47,7 @@
                 }
                 this.oldClientId = this.getClientId(dbInbound.protocol, clients[index]);
             } else {
-                this.addClient(this.inbound.protocol, this.clients);
+                this.addClient(this.inbound, this.clients);
             }
             this.clientStats = this.dbInbound.clientStats.find(row => row.email === this.clients[this.index].email);
             this.confirm = confirm;
@@ -59,12 +59,12 @@
                 default: return client.id;
             }
         },
-        addClient(protocol, clients) {
-            switch (protocol) {
+        addClient(inbound, clients) {
+            switch (inbound.protocol) {
                 case Protocols.VMESS: return clients.push(new Inbound.VmessSettings.VMESS());
                 case Protocols.VLESS: return clients.push(new Inbound.VLESSSettings.VLESS());
                 case Protocols.TROJAN: return clients.push(new Inbound.TrojanSettings.Trojan());
-                case Protocols.SHADOWSOCKS: return clients.push(new Inbound.ShadowsocksSettings.Shadowsocks(clients[0].method));
+                case Protocols.SHADOWSOCKS: return clients.push(new Inbound.ShadowsocksSettings.Shadowsocks(clients[0].method, RandomUtil.randomShadowsocksPassword(inbound.settings.method)));
                 default: return null;
             }
         },

+ 5 - 0
web/html/modals/inbound_modal.html

@@ -104,6 +104,8 @@
                 }
             },
             SSMethodChange() {
+                this.inModal.inbound.settings.password = RandomUtil.randomShadowsocksPassword(this.inModal.inbound.settings.method)
+                
                 if (this.inModal.inbound.isSSMultiUser) {
                     if (this.inModal.inbound.settings.shadowsockses.length ==0){
                         this.inModal.inbound.settings.shadowsockses = [new Inbound.ShadowsocksSettings.Shadowsocks()];
@@ -117,6 +119,9 @@
                             client.method = "";
                         })
                     }
+                    this.inModal.inbound.settings.shadowsockses.forEach(client => {
+                        client.password = RandomUtil.randomShadowsocksPassword(this.inModal.inbound.settings.method)
+                    })
                 } else {
                     if (this.inModal.inbound.settings.shadowsockses.length > 0){
                         this.inModal.inbound.settings.shadowsockses = [];

+ 11 - 1
web/service/server.go

@@ -221,10 +221,20 @@ func (s *ServerService) GetStatus(lastStatus *Status) *Status {
 	}
 
 	// IP fetching with caching
-	if s.cachedIPv4 == "" || s.cachedIPv6 == "" {
+	if s.cachedIPv4 == "" {
 		s.cachedIPv4 = getPublicIP("https://api.ipify.org")
+		if s.cachedIPv4 == "" {
+			s.cachedIPv4 = getPublicIP("https://4.ident.me")
+		}
+	}
+
+	if s.cachedIPv6 == "" {
 		s.cachedIPv6 = getPublicIP("https://api6.ipify.org")
+		if s.cachedIPv6 == "" {
+			s.cachedIPv6 = getPublicIP("https://6.ident.me")
+		}
 	}
+
 	status.PublicIP.IPv4 = s.cachedIPv4
 	status.PublicIP.IPv6 = s.cachedIPv6
 

+ 1 - 1
web/translation/translate.ru_RU.toml

@@ -84,7 +84,7 @@
 
 [pages.login]
 "hello" = "Привет!"
-"title" = "Добро пожаловать!"
+"title" = "Приветствие!"
 "loginAgain" = "Сессия истекла. Войдите в систему снова"
 
 [pages.login.toasts]

+ 1 - 1
web/translation/translate.uk_UA.toml

@@ -84,7 +84,7 @@
 
 [pages.login]
 "hello" = "Привіт"
-"title" = "Ласкаво просимо"
+"title" = "Привітання!"
 "loginAgain" = "Ваш сеанс закінчився, увійдіть знову"
 
 [pages.login.toasts]

+ 8 - 2
x-ui.sh

@@ -249,7 +249,10 @@ check_config() {
     local existing_webBasePath=$(echo "$info" | grep -Eo 'webBasePath: .+' | awk '{print $2}')
     local existing_port=$(echo "$info" | grep -Eo 'port: .+' | awk '{print $2}')
     local existing_cert=$(/usr/local/x-ui/x-ui setting -getCert true | grep -Eo 'cert: .+' | awk '{print $2}')
-    local server_ip=$(curl -s https://api.ipify.org)
+    local server_ip=$(curl -s --max-time 3 https://api.ipify.org)
+    if [ -z "$server_ip" ]; then
+        server_ip=$(curl -s --max-time 3 https://4.ident.me)
+    fi
 
     if [[ -n "$existing_cert" ]]; then
         local domain=$(basename "$(dirname "$existing_cert")")
@@ -1630,7 +1633,10 @@ remove_iplimit() {
 }
 
 SSH_port_forwarding() {
-    local server_ip=$(curl -s https://api.ipify.org)
+    local server_ip=$(curl -s --max-time 3 https://api.ipify.org)
+    if [ -z "$server_ip" ]; then
+        server_ip=$(curl -s --max-time 3 https://4.ident.me)
+    fi
     local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}')
     local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}')
     local existing_listenIP=$(/usr/local/x-ui/x-ui setting -getListen true | grep -Eo 'listenIP: .+' | awk '{print $2}')