That's most of it, but it doesn't work yet so I'm going to make sure it doesn't compile for travis. tcp forwarding works still.
This commit is contained in:
2
Makefile
2
Makefile
@ -7,6 +7,8 @@ echo:
|
||||
|
||||
test:
|
||||
go test
|
||||
cd udp && go test
|
||||
|
||||
|
||||
deps:
|
||||
go get -u github.com/zieckey/goini
|
||||
|
@ -108,12 +108,12 @@ func main() { func main() {
|
||||
[This tiny file server taken from here and used for this example](https://gist.github.com/paulmach/7271283)
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAltfhGwACgkQ11wDs5te
|
||||
FOFRAgf5AXXdEGDXIjsCTndYXAqABpDEGafXAE2y2ls4eKBRmTakUoXjIuL6ETS1
|
||||
QbKqwd4MKX38uUqhIkwddg/sTcIb1V1hdkmBl01q0e//a6CxcqKHfxSGng50L78I
|
||||
j9qKmvQMneuhk37UZI4icalx12gNvtb450CruSGJ7T6nWep5cfqHOLleEq1YXOjq
|
||||
4s70pz+AtXn3P3t8IoxQe3x18xTEAeBE47d4BwxAaUg4CFHvKBGk65LbSvNF6ElW
|
||||
nnIdAWvO9L6b7WBgwrAdzFt85BaXB7f1ppC4guM7NX9oAfyetKI3ASSurK+S0lGS
|
||||
RWbD+UFbYwmwSq8+htQ6ztRSVhGRdA==
|
||||
=Cnbw
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAltfkfIACgkQ11wDs5te
|
||||
FOFlpQf/TjVL8ul0x0oeZ7NZ/GiyFaAGiFiiaR0TuMOgfixPg6/mFR5rK9cqOB8C
|
||||
i95VPiggddofWxuhKDe3mBntuiBkfCn5ct4vSBR+VO/wReXBDtnmJ/rMx9al8FE/
|
||||
a3twnqC88qo4iGJhhSmzvmkpzloycvslxIM39cQ+CCZgXNopJwIPYA1IZXPfAUrB
|
||||
zKh/gNZ9eR+l7FmYW7Bv0geUxCdHuaSONMeg0gDNo7C9fpoAFwEX7kO+jNqaZGV9
|
||||
gd5g1aa4xqXUbMac2wFVD4fZ2ESd1sE6XU8w0H6gYNN0Y4Kh7fR1hXyGex9X/tvW
|
||||
KLW0Y/jDmMoXuVWvc+zv8pNiHSBMNw==
|
||||
=DjnL
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
func TestOptionHost(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetHost("127.0.0.1"))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -16,7 +16,7 @@ func TestOptionHost(t *testing.T) {
|
||||
func TestOptionPort(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetPort("7656"))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -24,7 +24,7 @@ func TestOptionPort(t *testing.T) {
|
||||
func TestOptionInLength(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetInLength(3))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -32,7 +32,7 @@ func TestOptionInLength(t *testing.T) {
|
||||
func TestOptionOutLength(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetInLength(3))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -40,7 +40,7 @@ func TestOptionOutLength(t *testing.T) {
|
||||
func TestOptionInVariance(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetInVariance(1))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -48,7 +48,7 @@ func TestOptionInVariance(t *testing.T) {
|
||||
func TestOptionOutVariance(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetOutVariance(1))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -56,7 +56,7 @@ func TestOptionOutVariance(t *testing.T) {
|
||||
func TestOptionInQuantity(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetInQuantity(6))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -64,7 +64,7 @@ func TestOptionInQuantity(t *testing.T) {
|
||||
func TestOptionOutQuantity(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetOutQuantity(6))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -72,7 +72,7 @@ func TestOptionOutQuantity(t *testing.T) {
|
||||
func TestOptionInBackups(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetInBackups(5))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -80,7 +80,7 @@ func TestOptionInBackups(t *testing.T) {
|
||||
func TestOptionOutBackups(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetOutBackups(5))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -88,7 +88,7 @@ func TestOptionOutBackups(t *testing.T) {
|
||||
func TestOptionReduceIdleQuantity(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetReduceIdleQuantity(4))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -96,7 +96,7 @@ func TestOptionReduceIdleQuantity(t *testing.T) {
|
||||
func TestOptionEncryptLease(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetEncrypt(true))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -104,7 +104,7 @@ func TestOptionEncryptLease(t *testing.T) {
|
||||
func TestOptionSaveFile(t *testing.T) {
|
||||
client, err := NewSAMForwarderFromOptions(SetSaveFile(true))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
|
@ -25,8 +25,9 @@ type SAMSSUForwarder struct {
|
||||
|
||||
samConn *sam3.SAM
|
||||
samKeys sam3.I2PKeys
|
||||
publishSession *sam3.DatagramSession
|
||||
publishConnection net.PacketConn
|
||||
publishConnection *sam3.DatagramSession
|
||||
//publishConnection net.Conn
|
||||
clientConnection net.Conn
|
||||
|
||||
FilePath string
|
||||
file io.ReadWriter
|
||||
@ -86,21 +87,23 @@ func (f *SAMSSUForwarder) sam() string {
|
||||
return f.SamHost + ":" + f.SamPort
|
||||
}
|
||||
|
||||
func (f *SAMSSUForwarder) forward(conn net.PacketConn) {
|
||||
client, err := net.Dial("udp", f.Target())
|
||||
//func (f *SAMSSUForwarder) forward(conn net.Conn) {
|
||||
func (f *SAMSSUForwarder) forward() {
|
||||
var err error
|
||||
f.clientConnection, err = net.Dial("udp", f.Target())
|
||||
if err != nil {
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
}
|
||||
log.Printf("Connected to localhost %v\n", conn)
|
||||
log.Printf("Connected to localhost %v\n", f.publishConnection)
|
||||
go func() {
|
||||
defer client.Close()
|
||||
defer conn.Close()
|
||||
//io.Copy(client, conn)
|
||||
defer f.clientConnection.Close()
|
||||
defer f.publishConnection.Close()
|
||||
io.Copy(f.clientConnection, f.publishConnection)
|
||||
}()
|
||||
go func() {
|
||||
defer client.Close()
|
||||
defer conn.Close()
|
||||
//io.Copy(conn, client)
|
||||
defer f.clientConnection.Close()
|
||||
defer f.publishConnection.Close()
|
||||
io.Copy(f.publishConnection, f.clientConnection)
|
||||
}()
|
||||
}
|
||||
|
||||
@ -111,7 +114,7 @@ func (f *SAMSSUForwarder) Base32() string {
|
||||
|
||||
//Serve starts the SAM connection and and forwards the local host:port to i2p
|
||||
func (f *SAMSSUForwarder) Serve() error {
|
||||
if f.publishSession, err = f.samConn.NewDatagramSession(f.TunName, f.samKeys,
|
||||
if f.publishConnection, err = f.samConn.NewDatagramSession(f.TunName, f.samKeys,
|
||||
[]string{
|
||||
"inbound.length=" + f.inLength,
|
||||
"outbound.length=" + f.outLength,
|
||||
@ -135,20 +138,12 @@ func (f *SAMSSUForwarder) Serve() error {
|
||||
return err
|
||||
}
|
||||
log.Println("SAM stream session established.")
|
||||
/*if f.publishListen, err = f.publishSession.Listen(); err != nil {
|
||||
return err
|
||||
}*/
|
||||
log.Println("Starting Listener.")
|
||||
b := string(f.samKeys.Addr().Base32())
|
||||
log.Println("SAM Listener created,", b+".b32.i2p")
|
||||
|
||||
for {
|
||||
//conn, err := f.publishListen.Accept()
|
||||
if err != nil {
|
||||
log.Fatalf("ERROR: failed to accept listener: %v", err)
|
||||
}
|
||||
log.Printf("Accepted connection %v\n", f.publishSession)
|
||||
go f.forward(f.publishSession)
|
||||
log.Printf("Accepted connection %v\n", f.publishConnection)
|
||||
go f.forward()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
func TestOptionUDPHost(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetHost("127.0.0.1"))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -16,7 +16,7 @@ func TestOptionUDPHost(t *testing.T) {
|
||||
func TestOptionUDPPort(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetPort("7656"))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -24,7 +24,7 @@ func TestOptionUDPPort(t *testing.T) {
|
||||
func TestOptionUDPInLength(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetInLength(3))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -32,7 +32,7 @@ func TestOptionUDPInLength(t *testing.T) {
|
||||
func TestOptionUDPOutLength(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetInLength(3))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -40,7 +40,7 @@ func TestOptionUDPOutLength(t *testing.T) {
|
||||
func TestOptionUDPInVariance(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetInVariance(1))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -48,7 +48,7 @@ func TestOptionUDPInVariance(t *testing.T) {
|
||||
func TestOptionUDPOutVariance(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetOutVariance(1))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -56,7 +56,7 @@ func TestOptionUDPOutVariance(t *testing.T) {
|
||||
func TestOptionUDPInQuantity(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetInQuantity(6))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -64,7 +64,7 @@ func TestOptionUDPInQuantity(t *testing.T) {
|
||||
func TestOptionUDPOutQuantity(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetOutQuantity(6))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -72,7 +72,7 @@ func TestOptionUDPOutQuantity(t *testing.T) {
|
||||
func TestOptionUDPInBackups(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetInBackups(5))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -80,7 +80,7 @@ func TestOptionUDPInBackups(t *testing.T) {
|
||||
func TestOptionUDPOutBackups(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetOutBackups(5))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -88,7 +88,7 @@ func TestOptionUDPOutBackups(t *testing.T) {
|
||||
func TestOptionUDPReduceIdleQuantity(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetReduceIdleQuantity(4))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -96,7 +96,7 @@ func TestOptionUDPReduceIdleQuantity(t *testing.T) {
|
||||
func TestOptionUDPEncryptLease(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetEncrypt(true))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
@ -104,7 +104,7 @@ func TestOptionUDPEncryptLease(t *testing.T) {
|
||||
func TestOptionUDPSaveFile(t *testing.T) {
|
||||
client, err := NewSAMSSUForwarderFromOptions(SetSaveFile(true))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
t.Fatalf("NewSAMSSUForwarder() Error: %q\n", err)
|
||||
}
|
||||
log.Println(client.Base32())
|
||||
}
|
||||
|
Reference in New Issue
Block a user