diff --git a/backend/cmd/migration/1_2.go b/backend/cmd/migration/1_2.go index 0e138a7..b14606c 100644 --- a/backend/cmd/migration/1_2.go +++ b/backend/cmd/migration/1_2.go @@ -60,22 +60,10 @@ func moveJsonToDb(db *gorm.DB) error { } else { tls_server, _ := json.MarshalIndent(tlsObj, "", " ") if len(tls_server) > 5 { - tlsObject := tlsObj.(map[string]interface{}) - tlsClientObj := map[string]interface{}{} - if enabled, ok := tlsObject["enabled"]; ok { - tlsClientObj["enabled"] = enabled - } - if alpn, ok := tlsObject["alpn"]; ok { - tlsClientObj["alpn"] = alpn - } - if sni, ok := tlsObject["server_name"]; ok { - tlsClientObj["server_name"] = sni - } - tls_client, _ := json.MarshalIndent(tlsClientObj, "", " ") newTls := &model.Tls{ Name: tag, Server: tls_server, - Client: tls_client, + Client: json.RawMessage("{}"), } err = db.Create(newTls).Error if err != nil { @@ -243,7 +231,34 @@ func migrateTls(db *gorm.DB) error { if !db.Migrator().HasColumn(&model.Tls{}, "inbounds") { return nil } - return db.Migrator().DropColumn(&model.Tls{}, "inbounds") + err := db.Migrator().DropColumn(&model.Tls{}, "inbounds") + if err != nil { + return err + } + var tlsConfig []model.Tls + err = db.Model(model.Tls{}).Scan(&tlsConfig).Error + if err != nil { + return err + } + + for index, tls := range tlsConfig { + var tlsClient map[string]interface{} + err = json.Unmarshal(tls.Client, &tlsClient) + if err != nil { + continue + } + for key, _ := range tlsClient { + switch key { + case "insecure", "disable_sni", "utls", "ech", "reality": + continue + default: + delete(tlsClient, key) + } + } + tlsConfig[index].Client, _ = json.MarshalIndent(tlsClient, "", " ") + } + + return db.Save(&tlsConfig).Error } func dropInboundData(db *gorm.DB) error { diff --git a/backend/util/genLink.go b/backend/util/genLink.go index 9c9614d..85f5e90 100644 --- a/backend/util/genLink.go +++ b/backend/util/genLink.go @@ -43,17 +43,18 @@ func LinkGenerator(clientConfig json.RawMessage, i *model.Inbound, hostname stri for index, addr := range Addrs { addrRemark, _ := addr["remark"].(string) Addrs[index]["remark"] = i.Tag + addrRemark - if addrTls, ok := addr["tls"].(map[string]interface{}); ok { + if i.TlsId > 0 { newTls := map[string]interface{}{} - if oldTls, hasOldTls := tls["tls"].(map[string]interface{}); hasOldTls { - for k, v := range oldTls { + for k, v := range tls { + newTls[k] = v + } + + // Override tls + if addrTls, ok := addr["tls"].(map[string]interface{}); ok { + for k, v := range addrTls { newTls[k] = v } } - // Override tls - for k, v := range addrTls { - newTls[k] = v - } Addrs[index]["tls"] = newTls } } @@ -243,7 +244,9 @@ func hysteria2Link( if downmbps, ok := inbound["down_mbps"].(string); ok { params["down_mbps"] = downmbps } + fmt.Printf("%+v\n", addr["tls"]) if tls, ok := addr["tls"].(map[string]interface{}); ok { + fmt.Printf("%+v\n", tls) if sni, ok := tls["server_name"].(string); ok { params["sni"] = sni } diff --git a/frontend/src/layouts/modals/Tls.vue b/frontend/src/layouts/modals/Tls.vue index 1b07837..d91fb3e 100644 --- a/frontend/src/layouts/modals/Tls.vue +++ b/frontend/src/layouts/modals/Tls.vue @@ -334,11 +334,6 @@ export default { ], fingerprints: [ { title: "Chrome", value: "chrome" }, - { title: "Chrome PSK", value: "chrome_psk" }, - { title: "Chrome PSK Shuffle", value: "chrome_psk_shuffle" }, - { title: "Chrome Padding PSK Shuffle", value: "chrome_padding_psk_shuffle" }, - { title: "Chrome Post-Quantum", value: "chrome_pq" }, - { title: "Chrome Post-Quantum PSK", value: "chrome_pq_psk" }, { title: "Firefox", value: "firefox" }, { title: "Microsoft Edge", value: "edge" }, { title: "Apple Safari", value: "safari" }, @@ -356,7 +351,7 @@ export default { if (this.$props.id > 0) { const newData = JSON.parse(this.$props.data) this.tls = newData - if (this.tls.server == null) this.tls.server = {} + if (this.tls.server == null) this.tls.server = { enabled: true } if (this.tls.client == null) this.tls.client = {} this.tlsType = newData.server?.reality == undefined ? 0 : 1 this.usePath = newData.server?.key == undefined ? 0 : 1