glider/proxy/tls/tls.go

49 lines
683 B
Go
Raw Normal View History

2018-06-28 20:45:24 +08:00
package tls
import (
"net/url"
"strings"
"github.com/nadoo/glider/common/log"
)
// TLS .
type TLS struct {
addr string
2018-06-28 20:45:24 +08:00
serverName string
2018-07-04 16:55:45 +08:00
skipVerify bool
2018-06-28 20:45:24 +08:00
}
// NewTLS returns a tls proxy.
func NewTLS(s string) (*TLS, error) {
2018-06-28 20:45:24 +08:00
u, err := url.Parse(s)
if err != nil {
log.F("parse url err: %s", err)
return nil, err
}
addr := u.Host
2018-07-04 16:55:45 +08:00
query := u.Query()
2018-07-11 08:34:15 +08:00
skipVerify := query.Get("skipVerify")
2018-07-04 16:55:45 +08:00
2018-06-28 20:45:24 +08:00
colonPos := strings.LastIndex(addr, ":")
if colonPos == -1 {
colonPos = len(addr)
}
serverName := addr[:colonPos]
p := &TLS{
addr: addr,
serverName: serverName,
2018-07-04 16:55:45 +08:00
skipVerify: false,
}
if skipVerify == "true" {
p.skipVerify = true
2018-06-28 20:45:24 +08:00
}
return p, nil
}