nps/core/process/https_proxy.go
2022-01-23 17:30:38 +08:00

37 lines
949 B
Go

package process
import (
"crypto/tls"
"ehang.io/nps/core/action"
"ehang.io/nps/lib/enet"
)
type HttpsProxyProcess struct {
CertFile string `json:"cert_file" required:"true" placeholder:"/var/cert/cert.pem" zh_name:"cert文件路径"`
KeyFile string `json:"key_file" required:"true" placeholder:"/var/cert/key.pem" zh_name:"key文件路径"`
config *tls.Config
HttpProxyProcess
}
func (hpp *HttpsProxyProcess) GetName() string {
return "https_proxy"
}
func (hpp *HttpsProxyProcess) GetZhName() string {
return "https代理"
}
func (hpp *HttpsProxyProcess) Init(ac action.Action) error {
cer, err := tls.LoadX509KeyPair(hpp.CertFile, hpp.KeyFile)
if err != nil {
return err
}
hpp.config = &tls.Config{Certificates: []tls.Certificate{cer}}
hpp.ac = ac
return nil
}
func (hpp *HttpsProxyProcess) ProcessConn(c enet.Conn) (bool, error) {
return hpp.HttpProxyProcess.ProcessConn(enet.NewReaderConn(tls.Server(c, hpp.config)))
}