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:
idk
2018-07-30 18:32:22 -04:00
parent 2f452fa1ee
commit 227b076f1a
5 changed files with 53 additions and 56 deletions

View File

@ -7,6 +7,8 @@ echo:
test:
go test
cd udp && go test
deps:
go get -u github.com/zieckey/goini

View File

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

View File

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

View File

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

View File

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