more uniformity for http mode

This commit is contained in:
idk
2018-09-10 19:32:53 -04:00
parent 29cc1dc5de
commit 5176224668
2 changed files with 48 additions and 46 deletions

View File

@ -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-----

View File

@ -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)
}
}
}()
}