general: use dialer's address if there's no self address

This commit is contained in:
nadoo 2018-07-04 11:05:43 +08:00
parent f6fae13d88
commit e320dc5508
6 changed files with 27 additions and 10 deletions

View File

@ -212,7 +212,12 @@ func (s *HTTP) servHTTPS(method, requestURI, proto string, c net.Conn) {
} }
// Addr returns forwarder's address // Addr returns forwarder's address
func (s *HTTP) Addr() string { return s.addr } func (s *HTTP) Addr() string {
if s.addr == "" {
return s.dialer.Addr()
}
return s.addr
}
// NextDialer returns the next dialer // NextDialer returns the next dialer
func (s *HTTP) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) } func (s *HTTP) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) }

View File

@ -213,7 +213,12 @@ func (s *SOCKS5) ListenAndServeUDP() {
} }
// Addr returns forwarder's address // Addr returns forwarder's address
func (s *SOCKS5) Addr() string { return s.addr } func (s *SOCKS5) Addr() string {
if s.addr == "" {
return s.dialer.Addr()
}
return s.addr
}
// NextDialer returns the next dialer // NextDialer returns the next dialer
func (s *SOCKS5) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) } func (s *SOCKS5) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) }

View File

@ -231,7 +231,12 @@ func ListCipher() string {
} }
// Addr returns forwarder's address // Addr returns forwarder's address
func (s *SS) Addr() string { return s.addr } func (s *SS) Addr() string {
if s.addr == "" {
return s.dialer.Addr()
}
return s.addr
}
// NextDialer returns the next dialer // NextDialer returns the next dialer
func (s *SS) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) } func (s *SS) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) }

View File

@ -24,9 +24,9 @@ const (
// SEC types // SEC types
const ( const (
SecTypeUnknown byte = 0 SecTypeUnknown byte = 0 // don't use in client
SecTypeLegacy byte = 1 SecTypeLegacy byte = 1 // don't use in client (aes-128-cfb)
SecTypeAuto byte = 2 SecTypeAuto byte = 2 // don't use in client
SecTypeAES128GCM byte = 3 SecTypeAES128GCM byte = 3
SecTypeChacha20Poly1305 byte = 4 SecTypeChacha20Poly1305 byte = 4
SecTypeNone byte = 5 SecTypeNone byte = 5

View File

@ -8,8 +8,6 @@ import (
"errors" "errors"
"strings" "strings"
"time" "time"
"github.com/nadoo/glider/common/log"
) )
// User of vmess client // User of vmess client
@ -32,7 +30,6 @@ func nextID(oldID [16]byte) (newID [16]byte) {
for { for {
md5hash.Sum(newID[:0]) md5hash.Sum(newID[:0])
if !bytes.Equal(oldID[:], newID[:]) { if !bytes.Equal(oldID[:], newID[:]) {
log.F("oldID: %x, newID: %x", oldID, newID)
return return
} }
md5hash.Write([]byte("533eff8a-4113-4b10-b5ce-0f5d76b98cd2")) md5hash.Write([]byte("533eff8a-4113-4b10-b5ce-0f5d76b98cd2"))

View File

@ -82,7 +82,12 @@ func NewVMessDialer(s string, dialer proxy.Dialer) (proxy.Dialer, error) {
} }
// Addr returns forwarder's address // Addr returns forwarder's address
func (s *VMess) Addr() string { return s.addr } func (s *VMess) Addr() string {
if s.addr == "" {
return s.dialer.Addr()
}
return s.addr
}
// NextDialer returns the next dialer // NextDialer returns the next dialer
func (s *VMess) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) } func (s *VMess) NextDialer(dstAddr string) proxy.Dialer { return s.dialer.NextDialer(dstAddr) }