【调整】插件支持动态参数和参数类型

【调整】获取证书列表支持状态过滤
【新增】dns提供商腾讯云eo
This commit is contained in:
v-me-50
2025-12-17 15:07:12 +08:00
parent d01b42139c
commit a027bde148
29 changed files with 1318 additions and 892 deletions

View File

@@ -7,11 +7,14 @@ import (
"context"
"crypto/tls"
"encoding/gob"
"fmt"
"github.com/gin-contrib/gzip"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/memstore"
"github.com/gin-gonic/gin"
"github.com/tjfoc/gmsm/gmtls"
"net/http"
"os"
"time"
)
@@ -54,7 +57,45 @@ func RunServer(ctx context.Context, r *gin.Engine) error {
defer close(errchan)
err := srv.ListenAndServeTLS("data/https/cert.pem", "data/https/key.pem")
if err != nil {
errchan <- err
// 读取 SM2 证书和密钥PEM 格式)
certPem, err := os.ReadFile("data/https/cert.pem")
midCertPem, err := os.ReadFile("data/https/mid_cert.pem")
keyPem, err := os.ReadFile("data/https/key.pem")
midKeyPem, err := os.ReadFile("data/https/mid_key.pem")
tlsCert, err := gmtls.X509KeyPair(certPem, keyPem)
midcert, err := gmtls.X509KeyPair(midCertPem, midKeyPem)
if err != nil {
errchan <- fmt.Errorf("无法加载国密证书和私钥: %v", err)
return
}
tlsConfig := &gmtls.Config{
Certificates: []gmtls.Certificate{tlsCert, midcert}, // 使用国密证书和加密证书
MinVersion: gmtls.VersionGMSSL,
MaxVersion: gmtls.VersionGMSSL,
GMSupport: &gmtls.GMSupport{
WorkMode: gmtls.ModeGMSSLOnly,
}, // 启用 GM/T 0024 协议
CipherSuites: []uint16{
gmtls.GMTLS_SM2_WITH_SM4_SM3, // 明确指定国密套件
},
GetConfigForClient: func(chi *gmtls.ClientHelloInfo) (*gmtls.Config, error) {
fmt.Printf("客户端 Hello 协议版本: %x, 支持 cipher suites: %+v\n", chi.SupportedVersions, chi.CipherSuites)
return nil, nil
},
}
//srv.TLSConfig = tlsConfig
ln, err := gmtls.Listen("tcp", ":"+public.Port, tlsConfig)
if err != nil {
errchan <- fmt.Errorf("无法启动国密 HTTPS 服务器: %v", err)
return
}
err = http.Serve(ln, r)
if err != nil {
errchan <- err
}
}
}()
} else {