Files
v2ray_simple/tlsLayer/server.go
hahahrfool 146f7cf926 修复大量与websocket和回落相关的bug;
修复 websocket时无回落的问题
修复 websocket不匹配时直接返回内部错误字符串导致 可探测 的超级bug
修复回落不匹配问题
修复websocket时readv闪退问题

修复 命令行 loglevel参数被配置文件覆盖问题
修复获取tls 的 alpn和 sni时遇到空指针闪退问题

将默认fallback地址的赋值放到通用代码中;
移除 ErrSingleFallback, 改用utils.ErrFirstBuffer
使ws的server可以返回 预设的path
2022-03-24 13:42:34 +08:00

49 lines
837 B
Go

package tlsLayer
import (
"crypto/tls"
"net"
"unsafe"
"github.com/hahahrfool/v2ray_simple/utils"
)
type Server struct {
tlsConfig *tls.Config
}
func NewServer(host, certFile, keyFile string, isInsecure bool) (*Server, error) {
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
return nil, err
}
s := &Server{
tlsConfig: &tls.Config{
InsecureSkipVerify: isInsecure,
ServerName: host,
Certificates: []tls.Certificate{cert},
},
}
return s, nil
}
func (s *Server) Handshake(underlay net.Conn) (tlsConn *Conn, err error) {
rawTlsConn := tls.Server(underlay, s.tlsConfig)
err = rawTlsConn.Handshake()
if err != nil {
err = utils.NewErr("tlsLayer: tls握手失败", err)
return
}
tlsConn = &Conn{
Conn: rawTlsConn,
ptr: unsafe.Pointer(rawTlsConn),
}
return
}