Procházet zdrojové kódy

Update vendored gotapdance

Rod Hynes před 3 roky
rodič
revize
a41c6b2d26

+ 22 - 0
vendor/github.com/refraction-networking/gotapdance/go.mod

@@ -0,0 +1,22 @@
+module github.com/refraction-networking/gotapdance
+
+go 1.16
+
+require (
+	git.torproject.org/pluggable-transports/goptlib.git v1.2.0
+	github.com/golang/protobuf v1.5.2
+	github.com/jinzhu/copier v0.3.5
+	github.com/keltia/ripe-atlas v0.0.0-20211221125000-f6eb808d5dc6
+	github.com/mroth/weightedrand v0.4.1
+	github.com/pelletier/go-toml v1.9.4
+	github.com/pkg/errors v0.9.1
+	github.com/pkg/profile v1.6.0
+	github.com/refraction-networking/utls v1.0.0
+	github.com/sergeyfrolov/bsbuffer v0.0.0-20180903213811-94e85abb8507
+	github.com/sirupsen/logrus v1.8.1
+	github.com/stretchr/testify v1.7.1
+	gitlab.com/yawning/obfs4.git v0.0.0-20220204003609-77af0cba934d
+	golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4
+	golang.org/x/net v0.0.0-20220412020605-290c469a71a5
+	google.golang.org/protobuf v1.28.0
+)

+ 83 - 0
vendor/github.com/refraction-networking/gotapdance/go.sum

@@ -0,0 +1,83 @@
+filippo.io/edwards25519 v1.0.0-rc.1.0.20210721174708-390f27c3be20 h1:iJoUgXvhagsNMrJrvavw7vu1eG8+hm6jLOxlLFcoODw=
+filippo.io/edwards25519 v1.0.0-rc.1.0.20210721174708-390f27c3be20/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
+git.torproject.org/pluggable-transports/goptlib.git v1.0.0/go.mod h1:YT4XMSkuEXbtqlydr9+OxqFAyspUv0Gr9qhM3B++o/Q=
+git.torproject.org/pluggable-transports/goptlib.git v1.2.0 h1:0qRF7Dw5qXd0FtZkjWUiAh5GTutRtDGL4GXUDJ4qMHs=
+git.torproject.org/pluggable-transports/goptlib.git v1.2.0/go.mod h1:4PBMl1dg7/3vMWSoWb46eGWlrxkUyn/CAJmxhDLAlDs=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dchest/siphash v1.2.1 h1:4cLinnzVJDKxTCl9B01807Yiy+W7ZzVHj/KIroQRvT4=
+github.com/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/h2non/gock v1.0.9 h1:17gCehSo8ZOgEsFKpQgqHiR7VLyjxdAG3lkhVvO9QZU=
+github.com/h2non/gock v1.0.9/go.mod h1:CZMcB0Lg5IWnr9bF79pPMg9WeV6WumxQiUJ1UvdO1iE=
+github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
+github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
+github.com/keltia/proxy v0.9.3 h1:Cpv6VA50SXSY+JxQ6q+BHpPMNAfWGZU4Qb5kdwUR1TY=
+github.com/keltia/proxy v0.9.3/go.mod h1:fLU4DmBPG0oh0md9fWggE2oG2m7Lchv3eim+GiO3pZY=
+github.com/keltia/ripe-atlas v0.0.0-20211221125000-f6eb808d5dc6 h1:9bEIiZu9Vonja7prDPBNMJRP9cLqVSKojqqrMhLiTeg=
+github.com/keltia/ripe-atlas v0.0.0-20211221125000-f6eb808d5dc6/go.mod h1:zYa+dM8811qRhclezc/AKX9imyQwPjjSk2cH0xTgTag=
+github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
+github.com/mroth/weightedrand v0.4.1 h1:rHcbUBopmi/3x4nnrvwGJBhX9d0vk+KgoLUZeDP6YyI=
+github.com/mroth/weightedrand v0.4.1/go.mod h1:3p2SIcC8al1YMzGhAIoXD+r9olo/g/cdJgAD905gyNE=
+github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
+github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
+github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
+github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM=
+github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
+github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/profile v1.6.0 h1:hUDfIISABYI59DyeB3OTay/HxSRwTQ8rB/H83k6r5dM=
+github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/refraction-networking/utls v1.0.0 h1:6XQHSjDmeBCF9sPq8p2zMVGq7Ud3rTD2q88Fw8Tz1tA=
+github.com/refraction-networking/utls v1.0.0/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0=
+github.com/sergeyfrolov/bsbuffer v0.0.0-20180903213811-94e85abb8507 h1:ML7ZNtcln5UBo5Wv7RIv9Xg3Pr5VuRCWLFXEwda54Y4=
+github.com/sergeyfrolov/bsbuffer v0.0.0-20180903213811-94e85abb8507/go.mod h1:DbI1gxrXI2jRGw7XGEUZQOOMd6PsnKzRrCKabvvMrwM=
+github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
+github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
+gitlab.com/yawning/edwards25519-extra.git v0.0.0-20211229043746-2f91fcc9fbdb h1:qRSZHsODmAP5qDvb3YsO7Qnf3TRiVbGxNG/WYnlM4/o=
+gitlab.com/yawning/edwards25519-extra.git v0.0.0-20211229043746-2f91fcc9fbdb/go.mod h1:gvdJuZuO/tPZyhEV8K3Hmoxv/DWud5L4qEQxfYjEUTo=
+gitlab.com/yawning/obfs4.git v0.0.0-20220204003609-77af0cba934d h1:tJ8F7ABaQ3p3wjxwXiWSktVDgjZEXkvaRawd2rIq5ws=
+gitlab.com/yawning/obfs4.git v0.0.0-20220204003609-77af0cba934d/go.mod h1:9GcM8QNU9/wXtEEH2q8bVOnPI7FtIF6VVLzZ1l6Hgf8=
+golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA=
+golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4=
+golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 503 - 235
vendor/github.com/refraction-networking/gotapdance/protobuf/signalling.pb.go


+ 29 - 0
vendor/github.com/refraction-networking/gotapdance/protobuf/signalling.proto

@@ -141,6 +141,28 @@ enum TransportType {
     Null = 0;
     Min = 1;   // Send a 32-byte HMAC id to let the station distinguish registrations to same host
     Obfs4 = 2; // Not implemented yet?
+    Webrtc = 99; // UDP transport: WebRTC DataChannel
+}
+
+// Deflated ICE Candidate by seed2sdp package
+message WebRTCICECandidate {
+    // IP is represented in its 16-byte form
+    required uint64 ip_upper = 1;
+    required uint64 ip_lower = 2;
+    // Composed info includes port, tcptype (unset if not tcp), candidate type (host, srflx, prflx), protocol (TCP/UDP), and component (RTP/RTCP)
+    required uint32 composed_info = 3;
+}
+
+// Deflated SDP for WebRTC by seed2sdp package
+message WebRTCSDP {
+    required uint32 type = 1; 
+    repeated WebRTCICECandidate candidates = 2; // there could be multiple candidates
+}
+
+// WebRTCSignal includes a deflated SDP and a seed
+message WebRTCSignal {
+    required string seed = 1;
+    required WebRTCSDP sdp = 2;
 }
 
 message StationToClient {
@@ -218,6 +240,9 @@ message ClientToStation {
     // A collection of optional flags for the registration.
     optional RegistrationFlags flags = 24;
 
+    // Transport Extensions
+    optional WebRTCSignal webrtc_signal = 31;
+    
     // Random-sized junk to defeat packet size fingerprinting.
     optional bytes padding = 100;
 }
@@ -281,4 +306,8 @@ message RegistrationResponse {
 
   // If registration wrong, populate this error string
   optional string error = 5;
+
+  // ClientConf field (optional)
+  optional ClientConf clientConf = 6;
 }
+

+ 5 - 2
vendor/github.com/refraction-networking/gotapdance/tapdance/assets.go

@@ -326,13 +326,16 @@ func (a *assets) SetPubkey(pubkey *pb.PubKey) (err error) {
 	return
 }
 
-// Set ClientConf and store config to disk
+// Set ClientConf and store config to disk - if an error occurs (parse error or
+// write to file error) the error will be logged and the update will be aborted.
 func (a *assets) SetClientConf(conf *pb.ClientConf) (err error) {
 	a.Lock()
 	defer a.Unlock()
 
-	a.config = conf
 	err = a.saveClientConf()
+	if err == nil {
+		a.config = conf
+	}
 	return
 }
 

+ 14 - 0
vendor/github.com/refraction-networking/gotapdance/tapdance/registrar_bidirectional.go

@@ -195,5 +195,19 @@ func (r APIRegistrarBidirectional) unpackRegResp(reg *ConjureReg, regResp *pb.Re
 		reg.phantom6 = &addr6
 	}
 
+	// Client config -- check if not nil in the registration response
+	if regResp.GetClientConf() != nil {
+		currGen := Assets().config.GetGeneration()
+		incomingGen := regResp.GetClientConf().GetGeneration()
+		Logger().Debugf("received clientconf in regResponse w/ gen %d", incomingGen)
+		if currGen < incomingGen {
+			Logger().Debugf("Updating clientconf %d -> %d", currGen, incomingGen)
+			_err := Assets().SetClientConf(regResp.GetClientConf())
+			if _err != nil {
+				Logger().Warnf("could not set ClientConf in bidirectional API: %v", _err.Error())
+			}
+		}
+	}
+
 	return reg
 }

+ 4 - 0
vendor/github.com/refraction-networking/gotapdance/tapdance/tapdance.go

@@ -0,0 +1,4 @@
+/*
+Package tapdance implements a refraction networking client in golang.
+*/
+package tapdance

+ 15 - 15
vendor/vendor.json

@@ -471,40 +471,40 @@
 			"revisionTime": "2016-01-10T10:55:54Z"
 		},
 		{
-			"checksumSHA1": "Tq3U98W2uwIgjWSjH7tqBonGjBE=",
+			"checksumSHA1": "9bOB+Wt4ZtWpkQ2pGs/xOezBAfM=",
 			"path": "github.com/refraction-networking/gotapdance",
-			"revision": "25380c96b147bfc85680f9999f04606fe8092b23",
-			"revisionTime": "2021-10-27T21:33:19Z"
+			"revision": "519c7851c33f0b28ddc72d7741b3d56b4a34a2db",
+			"revisionTime": "2022-04-13T22:02:46Z"
 		},
 		{
 			"checksumSHA1": "ObZZJpjQl2BISlIiES82BW8jbEE=",
 			"path": "github.com/refraction-networking/gotapdance/ed25519/edwards25519",
-			"revision": "25380c96b147bfc85680f9999f04606fe8092b23",
-			"revisionTime": "2021-10-27T21:33:19Z"
+			"revision": "519c7851c33f0b28ddc72d7741b3d56b4a34a2db",
+			"revisionTime": "2022-04-13T22:02:46Z"
 		},
 		{
 			"checksumSHA1": "VoyDh1KIIVE+OJbehDNJ91tf4Vw=",
 			"path": "github.com/refraction-networking/gotapdance/ed25519/extra25519",
-			"revision": "25380c96b147bfc85680f9999f04606fe8092b23",
-			"revisionTime": "2021-10-27T21:33:19Z"
+			"revision": "519c7851c33f0b28ddc72d7741b3d56b4a34a2db",
+			"revisionTime": "2022-04-13T22:02:46Z"
 		},
 		{
-			"checksumSHA1": "1y7Fn9JIVFTobi2TNXZ4Z4i9rAk=",
+			"checksumSHA1": "cR8fSqWLZjlU/ICRhZ3pSB/ZFhk=",
 			"path": "github.com/refraction-networking/gotapdance/protobuf",
-			"revision": "25380c96b147bfc85680f9999f04606fe8092b23",
-			"revisionTime": "2021-10-27T21:33:19Z"
+			"revision": "519c7851c33f0b28ddc72d7741b3d56b4a34a2db",
+			"revisionTime": "2022-04-13T22:02:46Z"
 		},
 		{
-			"checksumSHA1": "MgD1lPRReL44MtvlOpzI/NzPM1k=",
+			"checksumSHA1": "X10aYQktZK23jZEUhiEnyznYV1s=",
 			"path": "github.com/refraction-networking/gotapdance/tapdance",
-			"revision": "25380c96b147bfc85680f9999f04606fe8092b23",
-			"revisionTime": "2021-10-27T21:33:19Z"
+			"revision": "519c7851c33f0b28ddc72d7741b3d56b4a34a2db",
+			"revisionTime": "2022-04-13T22:02:46Z"
 		},
 		{
 			"checksumSHA1": "NiwZ/PirZniVT64D03KOS6UFMGU=",
 			"path": "github.com/refraction-networking/gotapdance/tapdance/phantoms",
-			"revision": "25380c96b147bfc85680f9999f04606fe8092b23",
-			"revisionTime": "2021-10-27T21:33:19Z"
+			"revision": "519c7851c33f0b28ddc72d7741b3d56b4a34a2db",
+			"revisionTime": "2022-04-13T22:02:46Z"
 		},
 		{
 			"checksumSHA1": "jOxlnqvKSKn1SIkA5ldRe5lxqAc=",

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů