diff --git a/transports/Dust/v3/Dust.go b/transports/Dust/v3/Dust.go index 6d4a7b8..85de4e6 100644 --- a/transports/Dust/v3/Dust.go +++ b/transports/Dust/v3/Dust.go @@ -64,6 +64,22 @@ func (transport Transport) Dial() (net.Conn, error) { return conn, nil } } + +func (transport Transport) Listen() (net.Listener, error) { + addr, resolveErr := pt.ResolveAddr(transport.Address) + if resolveErr != nil { + fmt.Println(resolveErr.Error()) + return nil, resolveErr + } + + ln, err := net.ListenTCP("tcp", addr) + if err != nil { + fmt.Println(err.Error()) + return nil, err + } +//TODO do we need to write an initializer function that imitates newDustTransportListener or add a parameter to Transport? + return ln, nil +} //end optimizer code func newDustTransportListener(listener *net.TCPListener, transport *dustServer) *dustTransportListener { diff --git a/transports/Optimizer/v3/go.mod b/transports/Optimizer/v3/go.mod index 9630b6e..c754734 100644 --- a/transports/Optimizer/v3/go.mod +++ b/transports/Optimizer/v3/go.mod @@ -3,9 +3,9 @@ module github.com/OperatorFoundation/shapeshifter-transports/transports/Optimize go 1.12 require ( - github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite/v3 v3.0.2 - github.com/OperatorFoundation/shapeshifter-transports/transports/obfs2/v3 v3.0.2 - github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4/v3 v3.0.2 - github.com/OperatorFoundation/shapeshifter-transports/transports/shadow/v3 v3.0.2 + github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite/v3 v3.0.3 + github.com/OperatorFoundation/shapeshifter-transports/transports/obfs2/v3 v3.0.3 + github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4/v3 v3.0.3 + github.com/OperatorFoundation/shapeshifter-transports/transports/shadow/v3 v3.0.3 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b ) diff --git a/transports/Replicant/v3/Optimizer.go b/transports/Replicant/v3/Optimizer.go index 9af583c..90fce50 100644 --- a/transports/Replicant/v3/Optimizer.go +++ b/transports/Replicant/v3/Optimizer.go @@ -1,6 +1,7 @@ package replicant import ( + pt "github.com/OperatorFoundation/shapeshifter-ipc" "golang.org/x/net/proxy" "net" ) @@ -8,11 +9,13 @@ import ( // This makes Replicant compliant with Optimizer type Transport struct { Config ClientConfig + Sconfig ServerConfig + //TODO was adding Sconfig the right move? after running the tests, nothing in the initial code was broken or failing + //TODO Do we need to add a test for the dial and listen that take nothing? Address string Dialer proxy.Dialer } -// TODO: the dial we call currently does not return an error func (transport Transport) Dial() (net.Conn, error) { conn, dialErr := transport.Dialer.Dial("tcp", transport.Address) if dialErr != nil { @@ -27,7 +30,21 @@ func (transport Transport) Dial() (net.Conn, error) { } return transportConn, nil + } + +func (transport Transport) Listen() (net.Listener, error) { + addr, resolveErr := pt.ResolveAddr(transport.Address) + if resolveErr != nil { + return nil, resolveErr + } + + ln, err := net.ListenTCP("tcp", addr) + if err != nil { + return nil, err + } + return newReplicantTransportListener(ln, transport.Sconfig), nil +} //replicantTransport := New(transport.Config, transport.Dialer) //conn := replicantTransport.Dial(transport.Address) //conn, err:= replicantTransport.Dial(transport.Address), errors.New("connection failed") @@ -37,5 +54,5 @@ func (transport Transport) Dial() (net.Conn, error) { // return conn, nil //} //return conn, nil -} + diff --git a/transports/Replicant/v3/ReplicantClientConfig.json b/transports/Replicant/v3/ReplicantClientConfig.json index c75cf9e..9851ff3 100644 --- a/transports/Replicant/v3/ReplicantClientConfig.json +++ b/transports/Replicant/v3/ReplicantClientConfig.json @@ -1 +1 @@ -{"config":"M/+BAwEBDENsaWVudENvbmZpZwH/ggABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4IBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YyL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gG5/45jAQEBATxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mQMBAQlCeXRlc1BhcnQB/5oAAQEBBUl0ZW1zAf+cAAAAIf+bAgEBE1tdbW9ub2xpdGguQnl0ZVR5cGUB/5wAARAAAHn/mmcBAUBnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5GaXhlZEJ5dGVUeXBl/50DAQENRml4ZWRCeXRlVHlwZQH/ngABAQEEQnl0ZQEGAAAAB/+eAwETAAAAAQAAAgEAAW1naXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9zaGFwZXNoaWZ0ZXItdHJhbnNwb3J0cy90cmFuc3BvcnRzL1JlcGxpY2FudC92Mi9wb2xpc2guU2lsdmVyUG9saXNoQ2xpZW50Q29uZmln/4cDAQEYU2lsdmVyUG9saXNoQ2xpZW50Q29uZmlnAf+IAAECAQ9TZXJ2ZXJQdWJsaWNLZXkBCgABCUNodW5rU2l6ZQEEAAAATP+ISAFBBOC0bmC6fLUPXiHE00MxBSHmK8AuL74xhbkrKm1ClLjNGFBVahobB3nWq06TEl/GmGC72MbHk2RAb4s5bIBYqv8B/go+AAA="} \ No newline at end of file +{"config":"M/+BAwEBDENsaWVudENvbmZpZwH/ggABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4IBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YzL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gG5/45jAQEBATxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mQMBAQlCeXRlc1BhcnQB/5oAAQEBBUl0ZW1zAf+cAAAAIf+bAgEBE1tdbW9ub2xpdGguQnl0ZVR5cGUB/5wAARAAAHn/mmcBAUBnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5GaXhlZEJ5dGVUeXBl/50DAQENRml4ZWRCeXRlVHlwZQH/ngABAQEEQnl0ZQEGAAAAB/+eAwETAAAAAQAAAgEAAW1naXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9zaGFwZXNoaWZ0ZXItdHJhbnNwb3J0cy90cmFuc3BvcnRzL1JlcGxpY2FudC92My9wb2xpc2guU2lsdmVyUG9saXNoQ2xpZW50Q29uZmln/4cDAQEYU2lsdmVyUG9saXNoQ2xpZW50Q29uZmlnAf+IAAECAQ9TZXJ2ZXJQdWJsaWNLZXkBCgABCUNodW5rU2l6ZQEEAAAATP+ISAFBBP/v79qkXCOE7ekcRqXYyEoCP6f1orHF1aegFLQtXNgEhe7udVJ72f3sMHAhN8sqJyzMdPWz7ZPRi5gmvNwrEPEB/griAAA="} \ No newline at end of file diff --git a/transports/Replicant/v3/ReplicantClientConfig1.json b/transports/Replicant/v3/ReplicantClientConfig1.json index ba436ee..5ff8337 100644 --- a/transports/Replicant/v3/ReplicantClientConfig1.json +++ b/transports/Replicant/v3/ReplicantClientConfig1.json @@ -1 +1 @@ -{"config":"M/+BAwEBDENsaWVudENvbmZpZwH/ggABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4IBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YyL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gUJ/45jAQEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mQMBAQlCeXRlc1BhcnQB/5oAAQEBBUl0ZW1zAf+cAAAAIf+bAgEBE1tdbW9ub2xpdGguQnl0ZVR5cGUB/5wAARAAAP4Dx/+a/4YBAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/nwMBARhSYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGUB/6AAAQEBDVJhbmRvbU9wdGlvbnMBCgAAAGH/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAPGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkJ5dGVzUGFydP+a/68BAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAAAEAAAEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAADxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAAAABAQABbWdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YyL3BvbGlzaC5TaWx2ZXJQb2xpc2hDbGllbnRDb25maWf/hwMBARhTaWx2ZXJQb2xpc2hDbGllbnRDb25maWcB/4gAAQIBD1NlcnZlclB1YmxpY0tleQEKAAEJQ2h1bmtTaXplAQQAAABM/4hIAUEEQWfb8pahGIPAueYdNyrFn/Bpl/tk+2kA/lzW7syF7AbqMIT0kGD8UskSh15h4mADnffIfwQZwfHMHdDl4zLewAH+DAgAAA=="} \ No newline at end of file +{"config":"M/+BAwEBDENsaWVudENvbmZpZwH/ggABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4IBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YzL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gUJ/45jAQEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mQMBAQlCeXRlc1BhcnQB/5oAAQEBBUl0ZW1zAf+cAAAAIf+bAgEBE1tdbW9ub2xpdGguQnl0ZVR5cGUB/5wAARAAAP4Dx/+a/4YBAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/nwMBARhSYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGUB/6AAAQEBDVJhbmRvbU9wdGlvbnMBCgAAAGH/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAPGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkJ5dGVzUGFydP+a/68BAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAAAEAAAEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAADxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAAAABAQABbWdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YzL3BvbGlzaC5TaWx2ZXJQb2xpc2hDbGllbnRDb25maWf/hwMBARhTaWx2ZXJQb2xpc2hDbGllbnRDb25maWcB/4gAAQIBD1NlcnZlclB1YmxpY0tleQEKAAEJQ2h1bmtTaXplAQQAAABM/4hIAUEE8wZLWH4yDW4+tpUCzzP3Z6NnVPFfL35CCvSD8ScVrsyZCICzmuViswQ2A4yp+amV53sC5gPz15FJ8fv8mjR7SwH+CdgAAA=="} \ No newline at end of file diff --git a/transports/Replicant/v3/ReplicantServerConfig.json b/transports/Replicant/v3/ReplicantServerConfig.json index 3a551f7..b6082a4 100644 --- a/transports/Replicant/v3/ReplicantServerConfig.json +++ b/transports/Replicant/v3/ReplicantServerConfig.json @@ -1 +1 @@ -{"Replicant":{"config":"M/+JAwEBDFNlcnZlckNvbmZpZwH/igABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4oBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YyL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gHI/45iAgEBPGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkJ5dGVzUGFydP+ZAwEBCUJ5dGVzUGFydAH/mgABAQEFSXRlbXMB/5wAAAAh/5sCAQETW11tb25vbGl0aC5CeXRlVHlwZQH/nAABEAAAdP+aZwEBQGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkZpeGVkQnl0ZVR5cGX/nQMBAQ1GaXhlZEJ5dGVUeXBlAf+eAAEBAQRCeXRlAQYAAAAH/54DARMAAAAAAW1naXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9zaGFwZXNoaWZ0ZXItdHJhbnNwb3J0cy90cmFuc3BvcnRzL1JlcGxpY2FudC92Mi9wb2xpc2guU2lsdmVyUG9saXNoU2VydmVyQ29uZmln/4sDAQEYU2lsdmVyUG9saXNoU2VydmVyQ29uZmlnAf+MAAEDAQ9TZXJ2ZXJQdWJsaWNLZXkBCgABEFNlcnZlclByaXZhdGVLZXkBCgABCUNodW5rU2l6ZQEEAAAAbv+MagFBBOC0bmC6fLUPXiHE00MxBSHmK8AuL74xhbkrKm1ClLjNGFBVahobB3nWq06TEl/GmGC72MbHk2RAb4s5bIBYqv8BIFAdzShgbHE2q5BpC39qq3rjM8fq5VTxcnx8IcH1XbqwAf4KPgAA"}} \ No newline at end of file +{"Replicant":{"config":"M/+JAwEBDFNlcnZlckNvbmZpZwH/igABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4oBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YzL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gHI/45iAgEBPGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkJ5dGVzUGFydP+ZAwEBCUJ5dGVzUGFydAH/mgABAQEFSXRlbXMB/5wAAAAh/5sCAQETW11tb25vbGl0aC5CeXRlVHlwZQH/nAABEAAAdP+aZwEBQGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkZpeGVkQnl0ZVR5cGX/nQMBAQ1GaXhlZEJ5dGVUeXBlAf+eAAEBAQRCeXRlAQYAAAAH/54DARMAAAAAAW1naXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9zaGFwZXNoaWZ0ZXItdHJhbnNwb3J0cy90cmFuc3BvcnRzL1JlcGxpY2FudC92My9wb2xpc2guU2lsdmVyUG9saXNoU2VydmVyQ29uZmln/4sDAQEYU2lsdmVyUG9saXNoU2VydmVyQ29uZmlnAf+MAAEDAQ9TZXJ2ZXJQdWJsaWNLZXkBCgABEFNlcnZlclByaXZhdGVLZXkBCgABCUNodW5rU2l6ZQEEAAAAbv+MagFBBP/v79qkXCOE7ekcRqXYyEoCP6f1orHF1aegFLQtXNgEhe7udVJ72f3sMHAhN8sqJyzMdPWz7ZPRi5gmvNwrEPEBIO842+Q4BCDUNO4PFisyuhjqRO/WUi+3f8hpAhiO/yHYAf4K4gAA"}} \ No newline at end of file diff --git a/transports/Replicant/v3/ReplicantServerConfig1.json b/transports/Replicant/v3/ReplicantServerConfig1.json index 322368d..a34a20c 100644 --- a/transports/Replicant/v3/ReplicantServerConfig1.json +++ b/transports/Replicant/v3/ReplicantServerConfig1.json @@ -1 +1 @@ -{"Replicant":{"config":"M/+JAwEBDFNlcnZlckNvbmZpZwH/igABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4oBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YyL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gUc/45jAQEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mQMBAQlCeXRlc1BhcnQB/5oAAQEBBUl0ZW1zAf+cAAAAIf+bAgEBE1tdbW9ub2xpdGguQnl0ZVR5cGUB/5wAARAAAP4Dxf+a/4YBAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/nwMBARhSYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGUB/6AAAQEBDVJhbmRvbU9wdGlvbnMBCgAAAGH/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAPGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkJ5dGVzUGFydP+a/68BAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAAAEAAAEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAADxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAAAAAAW1naXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9zaGFwZXNoaWZ0ZXItdHJhbnNwb3J0cy90cmFuc3BvcnRzL1JlcGxpY2FudC92Mi9wb2xpc2guU2lsdmVyUG9saXNoU2VydmVyQ29uZmln/4sDAQEYU2lsdmVyUG9saXNoU2VydmVyQ29uZmlnAf+MAAEDAQ9TZXJ2ZXJQdWJsaWNLZXkBCgABEFNlcnZlclByaXZhdGVLZXkBCgABCUNodW5rU2l6ZQEEAAAAbv+MagFBBEFn2/KWoRiDwLnmHTcqxZ/waZf7ZPtpAP5c1u7MhewG6jCE9JBg/FLJEodeYeJgA533yH8EGcHxzB3Q5eMy3sABILO3MRLki0bDKBvrchjhDV4R/RJWZpj7NngFWTIdDW7PAf4MCAAA"}} \ No newline at end of file +{"Replicant":{"config":"M/+JAwEBDFNlcnZlckNvbmZpZwH/igABAgEJVG9uZWJ1cnN0ARAAAQZQb2xpc2gBEAAAAP+8/4oBZmdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL3NoYXBlc2hpZnRlci10cmFuc3BvcnRzL3RyYW5zcG9ydHMvUmVwbGljYW50L3YzL3RvbmVidXJzdC5Nb25vdG9uZUNvbmZpZ/+NAwEBDk1vbm90b25lQ29uZmlnAf+OAAEDAQxBZGRTZXF1ZW5jZXMB/5AAAQ9SZW1vdmVTZXF1ZW5jZXMB/5IAAQpTcGVha0ZpcnN0AQIAAAAq/48DAQEISW5zdGFuY2UB/5AAAQIBBERlc2MB/5IAAQRBcmdzAf+WAAAAJP+RAwEBC0Rlc2NyaXB0aW9uAf+SAAEBAQVQYXJ0cwH/lAAAACH/kwIBARNbXW1vbm9saXRoLk1vbm9saXRoAf+UAAEQAAAo/5UDAQEEQXJncwH/lgABAgEGVmFsdWVzAf+YAAEFSW5kZXgBBAAAABz/lwIBAQ5bXWludGVyZmFjZSB7fQH/mAABEAAA/gUc/45jAQEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mQMBAQlCeXRlc1BhcnQB/5oAAQEBBUl0ZW1zAf+cAAAAIf+bAgEBE1tdbW9ub2xpdGguQnl0ZVR5cGUB/5wAARAAAP4Dxf+a/4YBAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/nwMBARhSYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGUB/6AAAQEBDVJhbmRvbU9wdGlvbnMBCgAAAGH/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAPGdpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLkJ5dGVzUGFydP+a/68BAktnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAS2dpdGh1Yi5jb20vT3BlcmF0b3JGb3VuZGF0aW9uL21vbm9saXRoLWdvL21vbm9saXRoLlJhbmRvbUVudW1lcmF0ZWRCeXRlVHlwZf+gBwEEERITFAAAAAEAAAEBAjxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAADxnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5CeXRlc1BhcnT/mv+vAQJLZ2l0aHViLmNvbS9PcGVyYXRvckZvdW5kYXRpb24vbW9ub2xpdGgtZ28vbW9ub2xpdGguUmFuZG9tRW51bWVyYXRlZEJ5dGVUeXBl/6AHAQQREhMUAEtnaXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9tb25vbGl0aC1nby9tb25vbGl0aC5SYW5kb21FbnVtZXJhdGVkQnl0ZVR5cGX/oAcBBBESExQAAAAAAW1naXRodWIuY29tL09wZXJhdG9yRm91bmRhdGlvbi9zaGFwZXNoaWZ0ZXItdHJhbnNwb3J0cy90cmFuc3BvcnRzL1JlcGxpY2FudC92My9wb2xpc2guU2lsdmVyUG9saXNoU2VydmVyQ29uZmln/4sDAQEYU2lsdmVyUG9saXNoU2VydmVyQ29uZmlnAf+MAAEDAQ9TZXJ2ZXJQdWJsaWNLZXkBCgABEFNlcnZlclByaXZhdGVLZXkBCgABCUNodW5rU2l6ZQEEAAAAbv+MagFBBPMGS1h+Mg1uPraVAs8z92ejZ1TxXy9+Qgr0g/EnFa7MmQiAs5rlYrMENgOMqfmpled7AuYD89eRSfH7/Jo0e0sBILX69hSt+cQzUYAPLKn/16JJ7h/0vcIecMdpA5PomnfHAf4J2AAA"}} \ No newline at end of file diff --git a/transports/meekserver/v3/pt21.go b/transports/meekserver/v3/pt21.go index 072b63e..ef550df 100644 --- a/transports/meekserver/v3/pt21.go +++ b/transports/meekserver/v3/pt21.go @@ -50,6 +50,13 @@ type MeekServer struct { AcmeHostname string CertManager *autocert.Manager } +//TODO I added this struct imitating MeekServer struct that has only the bare minimum parameters that the listener uses with the addition of Address +//TODO Was this a 'pro-gamer move'? +type Transport struct { + DisableTLS bool + CertManager *autocert.Manager + Address string +} //Config contains arguments formatted for a json file type Config struct { @@ -109,8 +116,8 @@ func (conn meekServerConn) Read(b []byte) (n int, err error) { if len(conn.session.Or.readBuffer) == 0 { return 0, nil } - copy(b, conn.session.Or.readBuffer) - conn.session.Or.readBuffer = conn.session.Or.readBuffer[:0] + copy(b, conn.session.Or.readBuffer) + conn.session.Or.readBuffer = conn.session.Or.readBuffer[:0] return len(b), nil } @@ -223,3 +230,39 @@ func (transport *MeekServer) Listen(address string) (net.Listener, error) { } return meekListener{server, state}, nil } + +func (transport *Transport) Listen() (net.Listener, error) { + var ln net.Listener + var state *State + var err error + addr, resolverr := net.ResolveTCPAddr("tcp", transport.Address) + if resolverr != nil { + return ln, resolverr + } + acmeAddr := net.TCPAddr{ + IP: addr.IP, + Port: 80, + Zone: "", + } + acmeAddr.Port = 80 + log.Printf("starting HTTP-01 ACME listener on %s", acmeAddr.String()) + lnHTTP01, err := net.ListenTCP("tcp", &acmeAddr) + if err != nil { + log.Printf("error opening HTTP-01 ACME listener: %s", err) + return nil, err + } + go func() { + log.Fatal(http.Serve(lnHTTP01, transport.CertManager.HTTPHandler(nil))) + }() + var server *http.Server + if transport.DisableTLS { + server, state, err = startServer(addr) + } else { + server, state, err = startServerTLS(addr, transport.CertManager.GetCertificate) + } + if err != nil { + + return nil, err + } + return meekListener{server, state}, nil +} diff --git a/transports/obfs2/v3/obfs2.go b/transports/obfs2/v3/obfs2.go index 58f9c22..e485e88 100644 --- a/transports/obfs2/v3/obfs2.go +++ b/transports/obfs2/v3/obfs2.go @@ -88,6 +88,22 @@ func (transport OptimizerTransport) Dial() (net.Conn, error) { return transportConn, nil } +func (transport OptimizerTransport) Listen() (net.Listener, error) { + addr, resolveErr := pt.ResolveAddr(transport.Address) + if resolveErr != nil { + fmt.Println(resolveErr.Error()) + return nil, resolveErr + } + + ln, err := net.ListenTCP("tcp", addr) + if err != nil { + fmt.Println(err.Error()) + return nil, err + } + + return newObfs2TransportListener(ln), nil +} + // Transport is the obfs2 implementation of the base.Transport interface. type Transport struct { dialer proxy.Dialer diff --git a/transports/obfs4/v3/obfs4.go b/transports/obfs4/v3/obfs4.go index 7773462..2f76824 100644 --- a/transports/obfs4/v3/obfs4.go +++ b/transports/obfs4/v3/obfs4.go @@ -245,6 +245,22 @@ func (transport *Transport) Listen(address string) (net.Listener, error) { return newObfs4TransportListener(transport.serverFactory, ln), nil } +func (transport *OptimizerTransport) Listen() (net.Listener, error) { + addr, resolveErr := pt.ResolveAddr(transport.Address) + if resolveErr != nil { + fmt.Println(resolveErr.Error()) + return nil, resolveErr + } + + ln, err := net.ListenTCP("tcp", addr) + if err != nil { + fmt.Println(err.Error()) + return nil, err + } +//TODO Do we need to write a function to imitate newObfs4TransportListener or add another parameter to OptimizerTransport? + return ln, nil +} + // Close closes the transport listener. func (transport *Transport) Close() error { return nil