Browse Source

Merge pull request #3279 from MHSanaei/mldsa65

add mldsa65
Sanaei 1 day ago
parent
commit
702f03e4b7

+ 1 - 0
sub/subJsonService.go

@@ -263,6 +263,7 @@ func (s *SubJsonService) realityData(rData map[string]any) map[string]any {
 	rltyData["show"] = false
 	rltyData["publicKey"] = rltyClientSettings["publicKey"]
 	rltyData["fingerprint"] = rltyClientSettings["fingerprint"]
+	rltyData["mldsa65Verify"] = rltyClientSettings["mldsa65Verify"]
 
 	// Set random data
 	rltyData["spiderX"] = "/" + random.Seq(15)

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

@@ -732,6 +732,7 @@ class RealityStreamSettings extends XrayCommonClass {
         maxClient = '',
         maxTimediff = 0,
         shortIds = RandomUtil.randomShortIds(),
+        mldsa65Seed = '',
         settings = new RealityStreamSettings.Settings()
     ) {
         super();
@@ -744,6 +745,7 @@ class RealityStreamSettings extends XrayCommonClass {
         this.maxClient = maxClient;
         this.maxTimediff = maxTimediff;
         this.shortIds = Array.isArray(shortIds) ? shortIds.join(",") : shortIds;
+        this.mldsa65Seed = mldsa65Seed;
         this.settings = settings;
     }
 
@@ -754,7 +756,8 @@ class RealityStreamSettings extends XrayCommonClass {
                 json.settings.publicKey,
                 json.settings.fingerprint,
                 json.settings.serverName,
-                json.settings.spiderX
+                json.settings.spiderX,
+                json.settings.mldsa65Verify,
             );
         }
         return new RealityStreamSettings(
@@ -767,6 +770,7 @@ class RealityStreamSettings extends XrayCommonClass {
             json.maxClient,
             json.maxTimediff,
             json.shortIds,
+            json.mldsa65Seed,
             settings,
         );
     }
@@ -782,6 +786,7 @@ class RealityStreamSettings extends XrayCommonClass {
             maxClient: this.maxClient,
             maxTimediff: this.maxTimediff,
             shortIds: this.shortIds.split(","),
+            mldsa65Seed: this.mldsa65Seed,
             settings: this.settings,
         };
     }
@@ -792,13 +797,15 @@ RealityStreamSettings.Settings = class extends XrayCommonClass {
         publicKey = '',
         fingerprint = UTLS_FINGERPRINT.UTLS_CHROME,
         serverName = '',
-        spiderX = '/'
+        spiderX = '/',
+        mldsa65Verify = ''
     ) {
         super();
         this.publicKey = publicKey;
         this.fingerprint = fingerprint;
         this.serverName = serverName;
         this.spiderX = spiderX;
+        this.mldsa65Verify = mldsa65Verify;
     }
     static fromJson(json = {}) {
         return new RealityStreamSettings.Settings(
@@ -806,6 +813,7 @@ RealityStreamSettings.Settings = class extends XrayCommonClass {
             json.fingerprint,
             json.serverName,
             json.spiderX,
+            json.mldsa65Verify
         );
     }
     toJson() {
@@ -814,6 +822,7 @@ RealityStreamSettings.Settings = class extends XrayCommonClass {
             fingerprint: this.fingerprint,
             serverName: this.serverName,
             spiderX: this.spiderX,
+            mldsa65Verify: this.mldsa65Verify
         };
     }
 };

+ 10 - 0
web/controller/server.go

@@ -50,6 +50,7 @@ func (a *ServerController) initRouter(g *gin.RouterGroup) {
 	g.GET("/getDb", a.getDb)
 	g.POST("/importDB", a.importDB)
 	g.POST("/getNewX25519Cert", a.getNewX25519Cert)
+	g.POST("/getNewmldsa65", a.getNewmldsa65)
 }
 
 func (a *ServerController) refreshStatus() {
@@ -198,3 +199,12 @@ func (a *ServerController) getNewX25519Cert(c *gin.Context) {
 	}
 	jsonObj(c, cert, nil)
 }
+
+func (a *ServerController) getNewmldsa65(c *gin.Context) {
+	cert, err := a.serverService.GetNewmldsa65()
+	if err != nil {
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.getNewmldsa65Error"), err)
+		return
+	}
+	jsonObj(c, cert, nil)
+}

+ 9 - 0
web/html/form/reality_settings.html

@@ -52,5 +52,14 @@
     <a-form-item label=" ">
         <a-button type="primary" icon="import" @click="getNewX25519Cert">Get New Cert</a-button>
     </a-form-item>
+    <a-form-item label="mldsa65 Seed">
+        <a-input v-model="inbound.stream.reality.mldsa65Seed"></a-input>
+    </a-form-item>
+    <a-form-item label="mldsa65 Verify">
+        <a-textarea v-model="inbound.stream.reality.settings.mldsa65Verify"></a-textarea>
+    </a-form-item>
+    <a-form-item label=" ">
+        <a-button type="primary" icon="import" @click="getNewmldsa65">Get New Seed</a-button>
+    </a-form-item>
 </template>
 {{end}}

+ 11 - 1
web/html/modals/inbound_modal.html

@@ -141,7 +141,17 @@
                 }
                 inModal.inbound.stream.reality.privateKey = msg.obj.privateKey;
                 inModal.inbound.stream.reality.settings.publicKey = msg.obj.publicKey;
-            }
+            },
+            async getNewmldsa65() {
+                inModal.loading(true);
+                const msg = await HttpUtil.post('/server/getNewmldsa65');
+                inModal.loading(false);
+                if (!msg.success) {
+                    return;
+                }
+                inModal.inbound.stream.reality.mldsa65Seed = msg.obj.seed;
+                inModal.inbound.stream.reality.settings.mldsa65Verify = msg.obj.verify;
+            },
         },
     });
 

+ 26 - 0
web/service/server.go

@@ -709,3 +709,29 @@ func (s *ServerService) GetNewX25519Cert() (any, error) {
 
 	return keyPair, nil
 }
+
+func (s *ServerService) GetNewmldsa65() (any, error) {
+	// Run the command
+	cmd := exec.Command(xray.GetBinaryPath(), "mldsa65")
+	var out bytes.Buffer
+	cmd.Stdout = &out
+	err := cmd.Run()
+	if err != nil {
+		return nil, err
+	}
+
+	lines := strings.Split(out.String(), "\n")
+
+	SeedLine := strings.Split(lines[0], ":")
+	VerifyLine := strings.Split(lines[1], ":")
+
+	seed := strings.TrimSpace(SeedLine[1])
+	verify := strings.TrimSpace(VerifyLine[1])
+
+	keyPair := map[string]any{
+		"seed":   seed,
+		"verify": verify,
+	}
+
+	return keyPair, nil
+}

+ 1 - 0
web/translation/translate.ar_EG.toml

@@ -260,6 +260,7 @@
 "resetInboundClientTrafficSuccess" = "تم إعادة تعيين حركة المرور"
 "trafficGetError" = "خطأ في الحصول على حركات المرور"
 "getNewX25519CertError" = "حدث خطأ أثناء الحصول على شهادة X25519."
+"getNewmldsa65Error" = "حدث خطاء في الحصول على mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "طلب"

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

@@ -258,7 +258,7 @@
 "resetInboundClientTrafficSuccess" = "Traffic has been reset."
 "trafficGetError" = "Error getting traffics."
 "getNewX25519CertError" = "Error while obtaining the X25519 certificate."
-
+"getNewmldsa65Error" = "Error while obtaining mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "Request"

+ 1 - 0
web/translation/translate.es_ES.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "El tráfico ha sido reiniciado"
 "trafficGetError" = "Error al obtener los tráficos"
 "getNewX25519CertError" = "Error al obtener el certificado X25519."
+"getNewmldsa65Error" = "Error al obtener el certificado mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "Pedido"

+ 1 - 0
web/translation/translate.fa_IR.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "ترافیک بازنشانی شد"
 "trafficGetError" = "خطا در دریافت ترافیک‌ها"
 "getNewX25519CertError" = "خطا در دریافت گواهی X25519."
+"getNewmldsa65Error" = "خطا در دریافت گواهی mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "درخواست"

+ 1 - 0
web/translation/translate.id_ID.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "Lalu lintas telah direset"
 "trafficGetError" = "Gagal mendapatkan data lalu lintas"
 "getNewX25519CertError" = "Terjadi kesalahan saat mendapatkan sertifikat X25519."
+"getNewmldsa65Error" = "Terjadi kesalahan saat mendapatkan sertifikat mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "Permintaan"

+ 1 - 0
web/translation/translate.ja_JP.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "トラフィックがリセットされました"
 "trafficGetError" = "トラフィックの取得中にエラーが発生しました"
 "getNewX25519CertError" = "X25519証明書の取得中にエラーが発生しました。"
+"getNewmldsa65Error" = "mldsa65証明書の取得中にエラーが発生しました。"
 
 [pages.inbounds.stream.general]
 "request" = "リクエスト"

+ 1 - 0
web/translation/translate.pt_BR.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "O tráfego foi reiniciado"
 "trafficGetError" = "Erro ao obter tráfegos"
 "getNewX25519CertError" = "Erro ao obter o certificado X25519."
+"getNewmldsa65Error" = "Erro ao obter o certificado mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "Requisição"

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

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "Трафик сброшен"
 "trafficGetError" = "Ошибка получения данных о трафике"
 "getNewX25519CertError" = "Ошибка при получении сертификата X25519."
+"getNewmldsa65Error" = "Ошибка при получении сертификата mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "Запрос"

+ 1 - 0
web/translation/translate.tr_TR.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "Trafik sıfırlandı"
 "trafficGetError" = "Trafik bilgisi alınırken hata oluştu"
 "getNewX25519CertError" = "X25519 sertifikası alınırken hata oluştu."
+"getNewmldsa65Error" = "mldsa65 sertifikası alınırken hata oluştu."
 
 [pages.inbounds.stream.general]
 "request" = "İstek"

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

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "Трафік скинуто"
 "trafficGetError" = "Помилка отримання даних про трафік"
 "getNewX25519CertError" = "Помилка при отриманні сертифіката X25519."
+"getNewmldsa65Error" = "Помилка при отриманні сертифіката mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "Запит"

+ 1 - 0
web/translation/translate.vi_VN.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "Đã đặt lại lưu lượng"
 "trafficGetError" = "Lỗi khi lấy thông tin lưu lượng"
 "getNewX25519CertError" = "Lỗi khi lấy chứng chỉ X25519."
+"getNewmldsa65Error" = "Lỗi khi lấy chúng tôi mldsa65."
 
 [pages.inbounds.stream.general]
 "request" = "Lời yêu cầu"

+ 1 - 0
web/translation/translate.zh_CN.toml

@@ -262,6 +262,7 @@
 "resetInboundClientTrafficSuccess" = "流量已重置"
 "trafficGetError" = "获取流量数据时出错"
 "getNewX25519CertError" = "获取X25519证书时出错。"
+"getNewmldsa65Error" = "获取mldsa65证书时出错。"
 
 [pages.inbounds.stream.general]
 "request" = "请求"

+ 1 - 0
web/translation/translate.zh_TW.toml

@@ -264,6 +264,7 @@
 "resetInboundClientTrafficSuccess" = "流量已重置"
 "trafficGetError" = "取得流量資料時發生錯誤"
 "getNewX25519CertError" = "取得X25519憑證時發生錯誤。"
+"getNewmldsa65Error" = "取得mldsa65憑證時發生錯誤。"
 
 [pages.inbounds.stream.general]
 "request" = "請求"