more uniformity for http mode
This commit is contained in:
@ -179,12 +179,12 @@ TLS configuration is experimental. It might not be possible(To multiplex http
|
||||
and https on the same SAM tunnel).
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAluW+EkACgkQ11wDs5te
|
||||
FOGz7Qf/ZUE8/OEkFSB+7pPq8eolg/N5gZgLbBkdoyKiAeMrLUSFHlXQtdxG9K+L
|
||||
HHZW7KD69TTOBUoCkzwLaV/US5TFPuAop7jn7vyK/scoDsvZSFtQZoTbh6ycCJ4Q
|
||||
lsIDPktT9yW49SD7gNlrnX0DXVyTZ1BfEJhnArLpX07rFWsmCuCnwKi2ocx9D3Ye
|
||||
k6Rmqalw0G6h7ObpnSn6BvM8neDQOd9bKHVm5UZ1wcMZoIMHxdq8b8j49gsoenxv
|
||||
SPZ6+2ES0PSxOTFCu6RxPO2F/hIViouCSjCEtTifaAX82hmHy0dx1+bgshbxZCCb
|
||||
vc4/gBNGEsdNOZRxoef1Zk7s5mqYFQ==
|
||||
=OSDJ
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAluW/yIACgkQ11wDs5te
|
||||
FOFd7Qf9EhYFvu1ZkerMaHKUNbCj+5WmO8q9Frwpeu1c5l0nnW44mW2KeCGGGZTD
|
||||
77rtnfrewNSzOk/f//ku1gl9/vYTPBz1neoW2ApgX+yWJVxSwr/5n0OITlmCn6YT
|
||||
cJ9SpcdU/sdGRWv8zRnWKAwOa1cc5lIifCNR3RytbrpSfyuC48exrufhEivmAh/a
|
||||
uHfu24lbos45S+ox3QG4eK2/JVGJQap5sKCgwTfKwXaDZKA9U+FYD3twpOCXCzt1
|
||||
pKqzPKCMjwHa+LjZZjtkcTvBWwuq6FgLlwK/bBlEyZzwUN/hexfNweHOVw0tFHSB
|
||||
ljn1el9A02PcUEYZWiTU1mYy99q1QA==
|
||||
=r3wz
|
||||
-----END PGP SIGNATURE-----
|
||||
|
78
forwarder.go
78
forwarder.go
@ -138,52 +138,54 @@ func (f *SAMForwarder) HTTPResponseBytes(conn net.Conn, req *http.Request) ([]by
|
||||
|
||||
func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
var request *http.Request
|
||||
var requestbytes []byte
|
||||
var err error
|
||||
var client net.Conn
|
||||
defer client.Close()
|
||||
defer conn.Close()
|
||||
go func() {
|
||||
defer conn.Close()
|
||||
if f.Type == "http" {
|
||||
if client, err := net.Dial("tcp", f.Target()); err == nil {
|
||||
defer client.Close()
|
||||
var b []byte
|
||||
var e error
|
||||
if b, request, e = f.HTTPRequestBytes(conn); e == nil {
|
||||
log.Printf("Forwarding modified request: \n\t %s", string(b))
|
||||
client.Write(b)
|
||||
} else {
|
||||
log.Println("Error: ", b, e)
|
||||
}
|
||||
}else{
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
}
|
||||
} else {
|
||||
if client, err := net.Dial("tcp", f.Target()); err == nil {
|
||||
defer client.Close()
|
||||
io.Copy(client, conn)
|
||||
}else{
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
defer conn.Close()
|
||||
if f.Type == "http" {
|
||||
if client, err := net.Dial("tcp", f.Target()); err == nil {
|
||||
defer client.Close()
|
||||
if b, e := f.HTTPResponseBytes(client, request); e == nil {
|
||||
log.Printf("Forwarding modified response: \n\t%s", string(b))
|
||||
conn.Write(b)
|
||||
if client, err = net.Dial("tcp", f.Target()); err == nil {
|
||||
//defer client.Close()
|
||||
if requestbytes, request, err = f.HTTPRequestBytes(conn); err == nil {
|
||||
log.Printf("Forwarding modified request: \n\t %s", string(requestbytes))
|
||||
client.Write(requestbytes)
|
||||
} else {
|
||||
log.Println("Error: ", b, e)
|
||||
log.Println("Error: ", requestbytes, err)
|
||||
}
|
||||
} else {
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
}
|
||||
} else {
|
||||
if client, err := net.Dial("tcp", f.Target()); err == nil {
|
||||
defer client.Close()
|
||||
io.Copy(conn, client)
|
||||
}else{
|
||||
log.Println("Error:", err)
|
||||
}
|
||||
if client, err := net.Dial("tcp", f.Target()); err == nil {
|
||||
//defer client.Close()
|
||||
io.Copy(client, conn)
|
||||
} else {
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
//defer conn.Close()
|
||||
if f.Type == "http" {
|
||||
if client, err = net.Dial("tcp", f.Target()); err == nil {
|
||||
//defer client.Close()
|
||||
if requestbytes, err = f.HTTPResponseBytes(client, request); err == nil {
|
||||
log.Printf("Forwarding modified response: \n\t%s", string(requestbytes))
|
||||
conn.Write(requestbytes)
|
||||
} else {
|
||||
log.Println("Error: ", requestbytes, err)
|
||||
}
|
||||
} else {
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
}
|
||||
} else {
|
||||
if client, err := net.Dial("tcp", f.Target()); err == nil {
|
||||
//defer client.Close()
|
||||
io.Copy(conn, client)
|
||||
} else {
|
||||
log.Println("Error:", err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
Reference in New Issue
Block a user