Skip to content

Commit

Permalink
fix: socks5 support for new reverse listener
Browse files Browse the repository at this point in the history
  • Loading branch information
shoriwe committed May 27, 2023
1 parent 0abff36 commit ea116f5
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 15 deletions.
33 changes: 18 additions & 15 deletions proxies/socks5_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,23 +50,26 @@ func TestSocks5_Listener(t *testing.T) {
}

func TestSocks5_Reverse(t *testing.T) {
listener := network.ListenAny()
defer listener.Close()
controlListener := network.ListenAny()
defer controlListener.Close()
slaveConn := network.Dial(controlListener.Addr().String())
defer slaveConn.Close()
data := network.ListenAny()
defer data.Close()
control := network.ListenAny()
defer control.Close()
master := network.Dial(control.Addr().String())
defer master.Close()
doneChan := make(chan struct{}, 1)
defer close(doneChan)
go func() {
slave, err := reverse.NewSlave(slaveConn)
assert.Nil(t, err)
defer slave.Close()
go slave.Serve()
s := &reverse.Slave{
Master: master,
}
defer s.Close()
go s.Serve()
<-doneChan
}()
master, mErr := reverse.NewMaster(listener, controlListener)
assert.Nil(t, mErr)
m := &reverse.Master{
Data: data,
Control: control,
}
service := network.ListenAny()
defer service.Close()
msg := []byte("HELLO")
Expand All @@ -77,11 +80,11 @@ func TestSocks5_Reverse(t *testing.T) {
assert.Nil(t, wErr)
}()
s := Socks5{
Listener: master,
Dial: master.Dial,
Listener: m,
Dial: m.SlaveDial,
}
go s.Serve()
dialer, sErr := proxy.SOCKS5(listener.Addr().Network(), listener.Addr().String(), nil, nil)
dialer, sErr := proxy.SOCKS5(data.Addr().Network(), data.Addr().String(), nil, nil)
assert.Nil(t, sErr)
conn, dErr := dialer.Dial(service.Addr().Network(), service.Addr().String())
assert.Nil(t, dErr)
Expand Down
4 changes: 4 additions & 0 deletions reverse/master.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ func (m *Master) Accept() (net.Conn, error) {
return m.Data.Accept()
}

func (m *Master) Addr() net.Addr {
return m.Data.Addr()
}

func (m *Master) Close() error {
m.Data.Close()
m.Control.Close()
Expand Down

0 comments on commit ea116f5

Please sign in to comment.