Browse Source

fix: generate correct keys for shadowsocks inbounds

Shishkevich D. 1 day ago
parent
commit
2e6faf69e6

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

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

+ 8 - 2
web/assets/js/util/index.js

@@ -138,8 +138,14 @@ class RandomUtil {
         }
         }
     }
     }
 
 
-    static randomShadowsocksPassword() {
-        const array = new Uint8Array(32);
+    static randomShadowsocksPassword(method = SSMethods.BLAKE3_AES_256_GCM) {
+        let length = 32;
+
+        if ([SSMethods.BLAKE3_AES_128_GCM].includes(method)) {
+            length = 16; 
+        }
+
+        const array = new Uint8Array(length);
 
 
         window.crypto.getRandomValues(array);
         window.crypto.getRandomValues(array);
 
 

+ 1 - 1
web/html/form/client.html

@@ -22,7 +22,7 @@
                     <span>{{ i18n "reset" }}</span>
                     <span>{{ i18n "reset" }}</span>
                 </template>
                 </template>
                 {{ i18n "password" }}
                 {{ i18n "password" }}
-                <a-icon v-if="inbound.protocol === Protocols.SHADOWSOCKS"@click="client.password = RandomUtil.randomShadowsocksPassword()" type="sync"></a-icon>
+                <a-icon v-if="inbound.protocol === Protocols.SHADOWSOCKS" @click="client.password = RandomUtil.randomShadowsocksPassword(inbound.settings.method)" type="sync"></a-icon>
                 <a-icon v-if="inbound.protocol === Protocols.TROJAN" @click="client.password = RandomUtil.randomSeq(10)"type="sync"> </a-icon>
                 <a-icon v-if="inbound.protocol === Protocols.TROJAN" @click="client.password = RandomUtil.randomSeq(10)"type="sync"> </a-icon>
             </a-tooltip>
             </a-tooltip>
         </template>
         </template>

+ 1 - 1
web/html/form/protocol/shadowsocks.html

@@ -31,7 +31,7 @@
             <a-tooltip>
             <a-tooltip>
                 <template slot="title">
                 <template slot="title">
                     <span>{{ i18n "reset" }}</span>
                     <span>{{ i18n "reset" }}</span>
-                </template> Password <a-icon @click="inbound.settings.password = RandomUtil.randomShadowsocksPassword()" type="sync"></a-icon>
+                </template> Password <a-icon @click="inbound.settings.password = RandomUtil.randomShadowsocksPassword(inbound.settings.method)" type="sync"></a-icon>
             </a-tooltip>
             </a-tooltip>
         </template>
         </template>
         <a-input v-model.trim="inbound.settings.password"></a-input>
         <a-input v-model.trim="inbound.settings.password"></a-input>