mirror of
https://github.com/blacktop/ipsw.git
synced 2026-05-08 12:22:26 +00:00
71 lines
1.1 KiB
Go
71 lines
1.1 KiB
Go
package debugserver
|
|
|
|
import (
|
|
"io"
|
|
"net"
|
|
"testing"
|
|
|
|
"github.com/blacktop/ipsw/pkg/usb"
|
|
)
|
|
|
|
func TestProxy(t *testing.T) {
|
|
conn, err := usb.NewConn()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer func(conn *usb.Conn) {
|
|
_ = conn.Close()
|
|
}(conn)
|
|
|
|
devices, err := conn.ListDevices()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if len(devices) < 1 {
|
|
t.Fatal("not device")
|
|
}
|
|
|
|
device := devices[0]
|
|
|
|
listen, err := net.Listen("tcp", "127.0.0.1:0")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer func(listen net.Listener) {
|
|
_ = listen.Close()
|
|
}(listen)
|
|
|
|
port := listen.Addr().(*net.TCPAddr).Port
|
|
t.Log("debugserver proxy listen on:", port)
|
|
for {
|
|
conn, err := listen.Accept()
|
|
if err != nil {
|
|
t.Log(err)
|
|
continue
|
|
}
|
|
dc, err := NewClient(device.SerialNumber)
|
|
if err != nil {
|
|
conn.Close()
|
|
t.Log(err)
|
|
continue
|
|
}
|
|
|
|
t.Log("new conn from:", conn.RemoteAddr())
|
|
startProxy(dc.Conn(), conn)
|
|
}
|
|
}
|
|
|
|
func startProxy(conn1, conn2 io.ReadWriteCloser) {
|
|
go func() {
|
|
defer conn1.Close()
|
|
defer conn2.Close()
|
|
io.Copy(conn2, conn1)
|
|
}()
|
|
go func() {
|
|
defer conn1.Close()
|
|
defer conn2.Close()
|
|
io.Copy(conn1, conn2)
|
|
}()
|
|
}
|