diff --git a/web/controller/server.go b/web/controller/server.go index 2d2f741e..f03c9ef2 100644 --- a/web/controller/server.go +++ b/web/controller/server.go @@ -55,6 +55,7 @@ func (a *ServerController) initRouter(g *gin.RouterGroup) { g.POST("/getNewX25519Cert", a.getNewX25519Cert) g.POST("/getNewmldsa65", a.getNewmldsa65) g.POST("/getNewEchCert", a.getNewEchCert) + g.POST("/getNewmlkem768", a.getNewmlkem768) } func (a *ServerController) refreshStatus() { @@ -266,3 +267,12 @@ func (a *ServerController) getNewEchCert(c *gin.Context) { } jsonObj(c, cert, nil) } + +func (a *ServerController) getNewmlkem768(c *gin.Context) { + out, err := a.serverService.GetNewmlkem768() + if err != nil { + jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.getNewmlkem768Error"), err) + return + } + jsonObj(c, out, nil) +} diff --git a/web/html/modals/inbound_modal.html b/web/html/modals/inbound_modal.html index b77e74e2..2e50de8c 100644 --- a/web/html/modals/inbound_modal.html +++ b/web/html/modals/inbound_modal.html @@ -162,6 +162,16 @@ inModal.inbound.stream.tls.echServerKeys = msg.obj.echServerKeys; inModal.inbound.stream.tls.settings.echConfigList = msg.obj.echConfigList; }, + async getNewmlkem768() { + inModal.loading(true); + const msg = await HttpUtil.post('/server/getNewmlkem768'); + inModal.loading(false); + if (!msg.success) { + return; + } + inModal.inbound.stream.reality.mlkem768Seed = msg.obj.seed; + inModal.inbound.stream.reality.settings.mlkem768Client = msg.obj.Client; + }, }, }); diff --git a/web/service/server.go b/web/service/server.go index 2dc83d77..d91ea027 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -871,3 +871,29 @@ func (s *ServerService) GetNewEchCert(sni string) (interface{}, error) { "echConfigList": configList, }, nil } + +func (s *ServerService) GetNewmlkem768() (any, error) { + // Run the command + cmd := exec.Command(xray.GetBinaryPath(), "mlkem768") + 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], ":") + ClientLine := strings.Split(lines[1], ":") + + seed := strings.TrimSpace(SeedLine[1]) + client := strings.TrimSpace(ClientLine[1]) + + keyPair := map[string]any{ + "seed": seed, + "client": client, + } + + return keyPair, nil +} diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml index bbf68822..2a5a1859 100644 --- a/web/translation/translate.ar_EG.toml +++ b/web/translation/translate.ar_EG.toml @@ -266,6 +266,7 @@ "trafficGetError" = "خطأ في الحصول على حركات المرور" "getNewX25519CertError" = "حدث خطأ أثناء الحصول على شهادة X25519." "getNewmldsa65Error" = "حدث خطاء في الحصول على mldsa65." +"getNewmlkem768Error" = "حدث خطأ أثناء الحصول على mlkem768." [pages.inbounds.stream.general] "request" = "طلب" diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index 1531fe30..1356353f 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -266,6 +266,7 @@ "trafficGetError" = "Error getting traffics." "getNewX25519CertError" = "Error while obtaining the X25519 certificate." "getNewmldsa65Error" = "Error while obtaining mldsa65." +"getNewmlkem768Error" = "Error while obtaining mlkem768." [pages.inbounds.stream.general] "request" = "Request" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index 6a2b8958..e6d7c546 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -266,6 +266,7 @@ "trafficGetError" = "Error al obtener los tráficos" "getNewX25519CertError" = "Error al obtener el certificado X25519." "getNewmldsa65Error" = "Error al obtener el certificado mldsa65." +"getNewmlkem768Error" = "Error al obtener el certificado mlkem768." [pages.inbounds.stream.general] "request" = "Pedido" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index fb6d9f02..e7d2de55 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -266,6 +266,7 @@ "trafficGetError" = "خطا در دریافت ترافیک‌ها" "getNewX25519CertError" = "خطا در دریافت گواهی X25519." "getNewmldsa65Error" = "خطا در دریافت گواهی mldsa65." +"getNewmlkem768Error" = "خطا در دریافت گواهی mlkem768." [pages.inbounds.stream.general] "request" = "درخواست" diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index d0d77dc3..6674a98c 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -266,6 +266,7 @@ "trafficGetError" = "Gagal mendapatkan data lalu lintas" "getNewX25519CertError" = "Terjadi kesalahan saat mendapatkan sertifikat X25519." "getNewmldsa65Error" = "Terjadi kesalahan saat mendapatkan sertifikat mldsa65." +"getNewmlkem768Error" = "Terjadi kesalahan saat mendapatkan sertifikat mlkem768." [pages.inbounds.stream.general] "request" = "Permintaan" diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml index 3f89cf0c..a400a799 100644 --- a/web/translation/translate.ja_JP.toml +++ b/web/translation/translate.ja_JP.toml @@ -266,6 +266,7 @@ "trafficGetError" = "トラフィックの取得中にエラーが発生しました" "getNewX25519CertError" = "X25519証明書の取得中にエラーが発生しました。" "getNewmldsa65Error" = "mldsa65証明書の取得中にエラーが発生しました。" +"getNewmlkem768Error" = "mlkem768証明書の取得中にエラーが発生しました。" [pages.inbounds.stream.general] "request" = "リクエスト" diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml index 3755c61e..b6a68959 100644 --- a/web/translation/translate.pt_BR.toml +++ b/web/translation/translate.pt_BR.toml @@ -266,6 +266,7 @@ "trafficGetError" = "Erro ao obter tráfegos" "getNewX25519CertError" = "Erro ao obter o certificado X25519." "getNewmldsa65Error" = "Erro ao obter o certificado mldsa65." +"getNewmlkem768Error" = "Erro ao obter o certificado mlkem768." [pages.inbounds.stream.general] "request" = "Requisição" diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index 8efc4673..2d25cb0c 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -266,6 +266,7 @@ "trafficGetError" = "Ошибка получения данных о трафике" "getNewX25519CertError" = "Ошибка при получении сертификата X25519." "getNewmldsa65Error" = "Ошибка при получении сертификата mldsa65." +"getNewmlkem768Error" = "Ошибка при получении сертификата mlkem768." [pages.inbounds.stream.general] "request" = "Запрос" diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml index a298dd30..2b815f87 100644 --- a/web/translation/translate.tr_TR.toml +++ b/web/translation/translate.tr_TR.toml @@ -266,6 +266,7 @@ "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." +"getNewmlkem768Error" = "mlkem768 sertifikası alınırken hata oluştu." [pages.inbounds.stream.general] "request" = "İstek" diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml index 02ed7352..e92c6c77 100644 --- a/web/translation/translate.uk_UA.toml +++ b/web/translation/translate.uk_UA.toml @@ -266,6 +266,7 @@ "trafficGetError" = "Помилка отримання даних про трафік" "getNewX25519CertError" = "Помилка при отриманні сертифіката X25519." "getNewmldsa65Error" = "Помилка при отриманні сертифіката mldsa65." +"getNewmlkem768Error" = "Помилка при отриманні сертифіката mlkem768." [pages.inbounds.stream.general] "request" = "Запит" diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index 3f61874f..8d1d86e3 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -265,7 +265,8 @@ "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." +"getNewmldsa65Error" = "Lỗi khi lấy chứng chỉ mldsa65." +"getNewmlkem768Error" = "Lỗi khi lấy chứng chỉ mlkem768." [pages.inbounds.stream.general] "request" = "Lời yêu cầu" diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml index bf19cfdb..a41b46b4 100644 --- a/web/translation/translate.zh_CN.toml +++ b/web/translation/translate.zh_CN.toml @@ -266,6 +266,7 @@ "trafficGetError" = "获取流量数据时出错" "getNewX25519CertError" = "获取X25519证书时出错。" "getNewmldsa65Error" = "获取mldsa65证书时出错。" +"getNewmlkem768Error" = "获取mlkem768证书时出错。" [pages.inbounds.stream.general] "request" = "请求" diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml index dfd284d2..a99877fc 100644 --- a/web/translation/translate.zh_TW.toml +++ b/web/translation/translate.zh_TW.toml @@ -266,6 +266,7 @@ "trafficGetError" = "取得流量資料時發生錯誤" "getNewX25519CertError" = "取得X25519憑證時發生錯誤。" "getNewmldsa65Error" = "取得mldsa65憑證時發生錯誤。" +"getNewmlkem768Error" = "取得mlkem768憑證時發生錯誤。" [pages.inbounds.stream.general] "request" = "請求"