diff --git a/TCPMode/demoWeb.go b/TCPMode/demoWeb.go index 0dbdb26..4f29cd9 100644 --- a/TCPMode/demoWeb.go +++ b/TCPMode/demoWeb.go @@ -105,6 +105,10 @@ func (s *demoWeb) Close() error { return err } -func (s *demoWeb) LocalServiceAddr() net.Addr { - return s.listener.LocalServiceAddr() +func (s *demoWeb) LocalHoleAddr() net.Addr { + return s.listener.LocalHoleAddr() +} + +func (s *demoWeb) ServiceAddr() net.Addr { + return s.listener.ServiceAddr() } diff --git a/TCPMode/interface.go b/TCPMode/interface.go index 6f61694..dd6ec05 100644 --- a/TCPMode/interface.go +++ b/TCPMode/interface.go @@ -9,5 +9,6 @@ type Interface interface { ClosedChan() <-chan struct{} Close() error - LocalServiceAddr() net.Addr + LocalHoleAddr() net.Addr + ServiceAddr() net.Addr } diff --git a/TCPMode/listener.go b/TCPMode/listener.go index 9448910..b1ed322 100644 --- a/TCPMode/listener.go +++ b/TCPMode/listener.go @@ -85,8 +85,10 @@ func (s *listener) Close() error { } } -func (s *listener) LocalServiceAddr() net.Addr { - return &net.TCPAddr{ - Port: s.port, - } +func (s *listener) LocalHoleAddr() net.Addr { + return s.reuse.LocalHoleAddr() +} + +func (s *listener) ServiceAddr() net.Addr { + return s.Listener.Addr() } diff --git a/TCPMode/proxy.go b/TCPMode/proxy.go index 8bab58f..1bdf917 100644 --- a/TCPMode/proxy.go +++ b/TCPMode/proxy.go @@ -132,6 +132,10 @@ func (s *proxy) Close() error { return err } -func (s *proxy) LocalServiceAddr() net.Addr { +func (s *proxy) LocalHoleAddr() net.Addr { + return s.listener.LocalHoleAddr() +} + +func (s *proxy) ServiceAddr() net.Addr { return &s.service } diff --git a/TCPMode/reuse.go b/TCPMode/reuse.go index 1fda283..b89b4c0 100644 --- a/TCPMode/reuse.go +++ b/TCPMode/reuse.go @@ -93,7 +93,13 @@ func (s *reuse) Close() error { return err } -func (s *reuse) LocalServiceAddr() net.Addr { +func (s *reuse) LocalHoleAddr() net.Addr { + return &net.TCPAddr{ + Port: s.port, + } +} + +func (s *reuse) ServiceAddr() net.Addr { return &net.TCPAddr{ Port: s.port, } diff --git a/TCPProtocol/interface.go b/TCPProtocol/interface.go index d2da722..4d924cb 100644 --- a/TCPProtocol/interface.go +++ b/TCPProtocol/interface.go @@ -6,7 +6,7 @@ type Interface interface { ClosedChan() <-chan struct{} Close() error - RemoteServerAddr() net.Addr + ServerAddr() net.Addr LocalHoleAddr() net.Addr - RemoteHoleAddr() net.Addr + NATedAddr() net.Addr } diff --git a/TCPProtocol/mnhv1.go b/TCPProtocol/mnhv1.go index 3703909..10b6d0d 100644 --- a/TCPProtocol/mnhv1.go +++ b/TCPProtocol/mnhv1.go @@ -131,7 +131,7 @@ func (s *mnhv1) Close() error { return err } -func (s *mnhv1) RemoteServerAddr() net.Addr { +func (s *mnhv1) ServerAddr() net.Addr { return s.conn.RemoteAddr() } @@ -139,6 +139,6 @@ func (s *mnhv1) LocalHoleAddr() net.Addr { return s.conn.LocalAddr() } -func (s *mnhv1) RemoteHoleAddr() net.Addr { +func (s *mnhv1) NATedAddr() net.Addr { return s.holeAddr } diff --git a/UDPMode/demoEcho.go b/UDPMode/demoEcho.go index 6e3d3ab..737a748 100644 --- a/UDPMode/demoEcho.go +++ b/UDPMode/demoEcho.go @@ -87,6 +87,10 @@ func (s *demoEcho) Close() error { return err } -func (s *demoEcho) LocalServiceAddr() net.Addr { - return s.listener.LocalServiceAddr() +func (s *demoEcho) LocalHoleAddr() net.Addr { + return s.listener.LocalHoleAddr() +} + +func (s *demoEcho) ServiceAddr() net.Addr { + return s.listener.ServiceAddr() } diff --git a/UDPMode/interface.go b/UDPMode/interface.go index 2550257..b25057d 100644 --- a/UDPMode/interface.go +++ b/UDPMode/interface.go @@ -11,5 +11,6 @@ type Interface interface { ClosedChan() <-chan struct{} Close() error - LocalServiceAddr() net.Addr + LocalHoleAddr() net.Addr + ServiceAddr() net.Addr } diff --git a/UDPMode/listener.go b/UDPMode/listener.go index 5b861f3..d86138d 100644 --- a/UDPMode/listener.go +++ b/UDPMode/listener.go @@ -235,10 +235,12 @@ func (s *listener) LocalAddr() net.Addr { return s.server.LocalAddr() } -func (s *listener) LocalServiceAddr() net.Addr { - return &net.UDPAddr{ - Port: s.port, - } +func (s *listener) LocalHoleAddr() net.Addr { + return s.server.LocalAddr() +} + +func (s *listener) ServiceAddr() net.Addr { + return s.server.LocalAddr() } func (s *listener) SetDeadline(t time.Time) error { diff --git a/UDPMode/proxy.go b/UDPMode/proxy.go index 7535d77..2fada4a 100644 --- a/UDPMode/proxy.go +++ b/UDPMode/proxy.go @@ -156,6 +156,10 @@ func (s *proxy) Close() error { return err } -func (s *proxy) LocalServiceAddr() net.Addr { +func (s *proxy) LocalHoleAddr() net.Addr { + return s.listener.LocalAddr() +} + +func (s *proxy) ServiceAddr() net.Addr { return &s.service } diff --git a/UDPProtocol/interface.go b/UDPProtocol/interface.go index 5c27de3..170b1e0 100644 --- a/UDPProtocol/interface.go +++ b/UDPProtocol/interface.go @@ -6,7 +6,7 @@ type Interface interface { ClosedChan() <-chan struct{} Close() error - RemoteServerAddr() net.Addr + ServerAddr() net.Addr LocalHoleAddr() net.Addr - RemoteHoleAddr() net.Addr + NATedAddr() net.Addr } diff --git a/UDPProtocol/mnhv1.go b/UDPProtocol/mnhv1.go index 2eefaf2..fd666b3 100644 --- a/UDPProtocol/mnhv1.go +++ b/UDPProtocol/mnhv1.go @@ -132,7 +132,7 @@ func (s *mnhv1) Close() error { return err } -func (s *mnhv1) RemoteServerAddr() net.Addr { +func (s *mnhv1) ServerAddr() net.Addr { return s.conn.RemoteAddr() } @@ -140,6 +140,6 @@ func (s *mnhv1) LocalHoleAddr() net.Addr { return s.conn.LocalAddr() } -func (s *mnhv1) RemoteHoleAddr() net.Addr { +func (s *mnhv1) NATedAddr() net.Addr { return s.holeAddr } diff --git a/main.go b/main.go index d8ea648..2c3c49d 100644 --- a/main.go +++ b/main.go @@ -168,15 +168,15 @@ func tcp() { } defer protocol.Close() - log.Info("LocalServiceAddr", mode.LocalServiceAddr().String()) - log.Info("RemoteServerAddr", protocol.RemoteServerAddr().String()) - log.Info("RemoteHoleAddr", protocol.RemoteHoleAddr().String()) + log.Info("ServiceAddr", mode.ServiceAddr().String()) + log.Info("ServerAddr", protocol.ServerAddr().String()) + log.Info("NATedAddr", protocol.NATedAddr().String()) log.Info("LocalHoleAddr", protocol.LocalHoleAddr().String()) - log.Info("\n\nNow you can use " + protocol.RemoteHoleAddr().String() + " to access your service") + log.Info("\n\nNow you can use " + protocol.NATedAddr().String() + " to access your service") _, port, _ := net.SplitHostPort(protocol.LocalHoleAddr().String()) - addr := protocol.RemoteHoleAddr().String() + addr := protocol.NATedAddr().String() runHook("success", "", port, addr) defer runHook("disconnected", "", port, addr) @@ -247,15 +247,15 @@ func udp() { } defer protocol.Close() - log.Info("LocalServiceAddr", mode.LocalServiceAddr().String()) - log.Info("RemoteServerAddr", protocol.RemoteServerAddr().String()) - log.Info("RemoteHoleAddr", protocol.RemoteHoleAddr().String()) + log.Info("ServiceAddr", mode.ServiceAddr().String()) + log.Info("ServerAddr", protocol.ServerAddr().String()) + log.Info("NATedAddr", protocol.NATedAddr().String()) log.Info("LocalHoleAddr", protocol.LocalHoleAddr().String()) - log.Info("\n\nNow you can use " + protocol.RemoteHoleAddr().String() + " to access your service") + log.Info("\n\nNow you can use " + protocol.NATedAddr().String() + " to access your service") _, port, _ := net.SplitHostPort(protocol.LocalHoleAddr().String()) - addr := protocol.RemoteHoleAddr().String() + addr := protocol.NATedAddr().String() runHook("success", "", port, addr) defer runHook("disconnected", "", port, addr)