Merge pull request #99 from xujinzheng/master
improve self-signed host list
This commit is contained in:
commit
05596cfae4
@ -409,7 +409,16 @@ func (h *httpTransport) Listen(addr string, opts ...ListenOption) (Listener, err
|
||||
|
||||
fn := func(addr string) (net.Listener, error) {
|
||||
if config == nil {
|
||||
cert, err := mls.Certificate(addr)
|
||||
hosts := []string{addr}
|
||||
if h, _, e := net.SplitHostPort(addr); e == nil {
|
||||
if len(h) == 0 {
|
||||
hosts = getIPAddrs()
|
||||
} else {
|
||||
hosts = []string{h}
|
||||
}
|
||||
}
|
||||
|
||||
cert, err := mls.Certificate(hosts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -447,3 +456,41 @@ func newHTTPTransport(opts ...Option) *httpTransport {
|
||||
}
|
||||
return &httpTransport{opts: options}
|
||||
}
|
||||
|
||||
func getIPAddrs() []string {
|
||||
ifaces, err := net.Interfaces()
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
var ipAddrs []string
|
||||
|
||||
for _, i := range ifaces {
|
||||
addrs, err := i.Addrs()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, addr := range addrs {
|
||||
var ip net.IP
|
||||
switch v := addr.(type) {
|
||||
case *net.IPNet:
|
||||
ip = v.IP
|
||||
case *net.IPAddr:
|
||||
ip = v.IP
|
||||
}
|
||||
|
||||
if ip == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
ip = ip.To4()
|
||||
if ip == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
ipAddrs = append(ipAddrs, ip.String())
|
||||
}
|
||||
}
|
||||
return ipAddrs
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user