diff options
Diffstat (limited to 'web/service')
| -rw-r--r-- | web/service/server.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/web/service/server.go b/web/service/server.go index e75a97b8..f0be46c2 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -743,3 +743,27 @@ func (s *ServerService) GetNewmldsa65() (any, error) { return keyPair, nil } + +func (s *ServerService) GetNewEchCert(sni string) (interface{}, error) { + // Run the command + cmd := exec.Command(xray.GetBinaryPath(), "tls", "ech", "--serverName", sni) + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + return nil, err + } + + lines := strings.Split(out.String(), "\n") + if len(lines) < 4 { + return nil, common.NewError("invalid ech cert") + } + + configList := lines[1] + serverKeys := lines[3] + + return map[string]interface{}{ + "echServerKeys": serverKeys, + "echConfigList": configList, + }, nil +} |
