- Jan 12, 2022
-
-
Cecylia Bocovich authored
Malicious clients and proxies can provide potentially malicious strings in the polls. This validates the NAT type and proxy type strings to ensure that malformed strings are not displayed on a web page or passed to any of our monitoring infrastructure. If a client or proxy supplies an invalid NAT type, we return an error message. If a proxy supplies an unknown proxy type, we set the proxy type to unknown.
-
- Nov 19, 2021
-
-
shelikhoo authored
-
- Nov 12, 2021
-
-
shelikhoo authored
Adopted the change in according to the recommendation from tpo/anti-censorship/pluggable-transports/snowflake!62 (comment 2759815)
-
shelikhoo authored
This is a mature implementation of periodic task that run a function at given interval. It allows task to be stopped, and deals with edge case like interval too short gracefully. V2Ray/V2Fly is MIT licensed.
-
- Nov 11, 2021
-
- Aug 10, 2021
-
-
Cecylia Bocovich authored
This should increase the maximum amount of inflight data and hopefully the performance of Snowflake, especially for clients geographically distant from proxies and the server.
-
- Aug 05, 2021
-
-
David Fifield authored
This package contains a CacheURL function that modifies a URL to be accessed through an AMP cache, and the "AMP armor" data encoding scheme for encoding data into the AMP subset of HTML.
-
- Jul 08, 2021
-
-
Arlo Breault authored
The legacy code does case matching on these exact strings so it's better to ensure they're constant.
-
Arlo Breault authored
Move the logic for the legacy version into the http handlers and use a shim when doing ipc.
-
Arlo Breault authored
Introduces an IPC struct and moves the logic out of the http handlers and into methods on that.
-
- Jul 07, 2021
-
-
meskio authored
So the assignment of proxies is based on the load. The number of clients is ronded down to 8. Existing proxies that doesn't report the number of clients will be distributed equaly to new proxies until they get 8 clients, that is okish as the existing proxies do have a maximum capacity of 10. Fixes #40048
-
- Jun 02, 2021
-
-
Cecylia Bocovich authored
Send the client poll request and response in a json-encoded format in the HTTP request body rather than sending the data in HTTP headers. This will pave the way for using domain-fronting alternatives for the Snowflake rendezvous.
-
- May 12, 2021
-
-
Cecylia Bocovich authored
Introduce a waitgroup and done channel to ensure that both the read and write gorouting for turbotunnel connections terminate when the connection is closed.
-
- Jan 25, 2021
-
-
Cecylia Bocovich authored
Update our dependency on pion/sdp from v2 to v3, to match pion/webrtc v3. This requires some changes in how we parse out addresses from ice candidates. This will ease tor browser builds of snowflake since we are now only relying on one version of pion/sdp instead of two different ones.
-
- Jan 12, 2021
-
-
Cecylia Bocovich authored
This update required two main changes to how we use the library. First, we had to make sure we created the datachannel on the offering peer side before creating the offer. Second, we had to make sure we wait for the gathering of all candidates to complete since trickle-ice is enabled by default. See the release notes for more details: https://github.com/pion/webrtc/wiki/Release-WebRTC@v3.0.0.
-
- Nov 20, 2020
-
-
Cecylia Bocovich authored
-
- Nov 18, 2020
-
-
Cecylia Bocovich authored
-
- Sep 21, 2020
-
-
Peter Gerber authored
-
- Jul 06, 2020
-
-
Cecylia Bocovich authored
This will allow browser-based proxies that are unable to determine their NAT type to conservatively label themselves as restricted NATs if they fail to work with clients that have restricted NATs.
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
Snowflake clients will now attempt NAT discovery using the provided STUN servers and report their NAT type to the Snowflake broker for matching. The three possibilities for NAT types are: - unknown (the client was unable to determine their NAT type), - restricted (the client has a restrictive NAT and can only be paired with unrestricted NATs) - unrestricted (the client can be paired with any other NAT).
-
- Apr 28, 2020
-
- Apr 23, 2020
-
-
David Fifield authored
The client opts into turbotunnel mode by sending a magic token at the beginning of each WebSocket connection (before sending even the ClientID). The token is just a random byte string I generated. The server peeks at the token and, if it matches, uses turbotunnel mode. Otherwise, it unreads the token and continues in the old one-session-per-WebSocket mode.
-
David Fifield authored
Copied and slightly modified from https://gitweb.torproject.org/pluggable-transports/meek.git/log/?h=turbotunnel&id=7eb94209f857fc71c2155907b0462cc587fc76cc https://github.com/net4people/bbs/issues/21 RedialPacketConn is adapted from clientPacketConn in https://dip.torproject.org/dcf/obfs4/blob/c64a61c6da3bf1c2f98221bb1e1af8a358f22b87/obfs4proxy/turbotunnel_client.go https://github.com/net4people/bbs/issues/14#issuecomment-544747519
-
- Mar 26, 2020
-
-
Arlo Breault authored
Trac: 19026
-
- Mar 18, 2020
-
-
Arlo Breault authored
-
- Feb 18, 2020
-
-
David Fifield authored
Unless something externally called Write after Close, the writeLoop(ws, pr2) goroutine would run forever, because nothing would ever close pw2/pr2. https://bugs.torproject.org/33367#comment:4
-
- Feb 08, 2020
-
-
Arlo Breault authored
go vet was complaining, common/websocketconn/websocketconn.go:56:2: unreachable code
-
- Feb 04, 2020
-
-
David Fifield authored
We had already implemented Read, Write, and Close. Pass RemoteAddr, LocalAddr, SetReadDeadline, and SetWriteDeadline through to the underlying *websocket.Conn. Implement SetDeadline by calling both SetReadDeadline and SetWriteDeadline. https://bugs.torproject.org/33144
-
David Fifield authored
Makes the following changes: * permits concurrent Read/Write/Close * converts certain CloseErrors into io.EOF https://bugs.torproject.org/33144
-
- Jan 30, 2020
-
-
David Fifield authored
This makes the return type satisfy the io.ReadWriteCloser interface directly.
-
David Fifield authored
Rename websocketconn.WebSocketConn to websocketconn.Conn, and websocketconn.NewWebSocketConn to websocketconn.New Following the guidelines at https://blog.golang.org/package-names#TOC_3%2e
-
- Dec 06, 2019
-
-
Cecylia Bocovich authored
-
- Nov 28, 2019
-
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
Proxies now include information about what type they are when they poll for client offers. The broker saves this information along with snowflake ids and outputs it on the /debug page.
-
- Nov 22, 2019
-
-
Arlo Breault authored
-
- Nov 21, 2019
-
-
Arlo Breault authored
Trac: 32465
-
- Nov 13, 2019
-
-
Cecylia Bocovich authored
-