Try again to extract the request from the net.conn safely.

This commit is contained in:
idk
2018-09-10 04:50:07 -04:00
parent 8386d0e215
commit 67991ebe4f
2 changed files with 32 additions and 29 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/311wDs5teFOEFAluWLncACgkQ11wDs5te
FOEZ2Qf/aVBzNpVXzIq1MId381mKwspU2XjzJClox5eFMbFYVEq9xuGAOv81bewG
RRcFYAR6UQT/Aai4iqOf1arhQFpEEJDT8KR3KoVnDgcCd8lzn/WvIeAN+qqGXg8i
LQ2oIE+F4Wj8/WjgF3EGU7QRmSkE9X58rAvofQ6z/J8gF++xi/E6bU3IdXeU2Q06
X9/XCVbJ5YfeG9kafvXi+h3g5iTlsbfIjqdKyN/2+1bDZM1M5sA+ze0BoOBGfphI
KJ1GV/D002cMcyepE4IGHgnRPNButE1KiiRe0FKqIEWse4ern7sKpFIdnazW98IX
KQzopSZubLUG0Ge0lf/EVRX9yCY0ZA==
=p+A6
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAluWMD4ACgkQ11wDs5te
FOGQPwf/X19Gz2AoRWv7XIsUAv8hSDv9DGoXOMEOOzi2tD1WTDVEtcjYUu8MWaOU
7y36hAMJcuVgUef0Al3da/+lzVbDWeQG++hXpwlsnSqcQpxi6nnbzZKOGezlIk5t
/dqIlMWjATZa6xE0+UfytZJvBCyndBlqu8OSYcR+eaFTwUHiP6IwNUn0M4qpjFc8
olDVq19TdALsZ9P8d9ClZ4sGvenPmLOCymxpRrGe1DXVC6xO8LqFCxEk24AJzrMB
avuaUj02u5i49O2o3NgYjowbQ0mCF4jlBhdx4z2KW8boAWXQt0wvEHJDrz2k3/jF
RBoG0CJ9hwCr66sBkyQsFgzl9AbWlQ==
=5cbn
-----END PGP SIGNATURE-----

View File

@ -103,23 +103,23 @@ func (f *SAMForwarder) sam() string {
}
func (f *SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, error) {
var request *http.Request
var retrequest []byte
var err error
request, err = http.ReadRequest(bufio.NewReader(conn))
if err != nil {
return nil, err
}
dest := conn.RemoteAddr().(sam3.I2PAddr)
log.Printf("Adding headers to http connection\n\tX-I2p-Dest-Base64=%s\n\tX-I2p-Dest-Base32=%s\n\tX-I2p-Dest-Hash=%s",
dest.Base64(), dest.Base32(), dest.DestHash().String())
request.Header.Add("X-I2p-Dest-Base64", dest.Base64())
request.Header.Add("X-I2p-Dest-Base32", dest.Base32())
request.Header.Add("X-I2p-Dest-Hash", dest.DestHash().String())
if retrequest, err = httputil.DumpRequest(request, true); err != nil {
return nil, err
}
return retrequest, nil
var request *http.Request
var retrequest []byte
var err error
request, err = http.ReadRequest(bufio.NewReader(conn))
if err != nil {
return nil, err
}
dest := conn.RemoteAddr().(sam3.I2PAddr)
log.Printf("Adding headers to http connection\n\tX-I2p-Dest-Base64=%s\n\tX-I2p-Dest-Base32=%s\n\tX-I2p-Dest-Hash=%s",
dest.Base64(), dest.Base32(), dest.DestHash().String())
request.Header.Add("X-I2p-Dest-Base64", dest.Base64())
request.Header.Add("X-I2p-Dest-Base32", dest.Base32())
request.Header.Add("X-I2p-Dest-Hash", dest.DestHash().String())
if retrequest, err = httputil.DumpRequest(request, true); err != nil {
return nil, err
}
return retrequest, nil
}
func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
@ -132,8 +132,12 @@ func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
defer client.Close()
defer conn.Close()
if f.Type == "http" {
/**/
io.Copy(client, conn)
if b, e := f.HTTPRequestBytes(conn); e != nil {
client.Write(b)
} else {
log.Println(e)
}
//io.Copy(client, conn)
} else {
io.Copy(client, conn)
}
@ -142,8 +146,7 @@ func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
defer client.Close()
defer conn.Close()
if f.Type == "http" {
/**/
io.Copy(conn, client)
io.Copy(conn, client)
} else {
io.Copy(conn, client)
}