Commit graph

362 commits

Author SHA1 Message Date
Cecylia Bocovich
54ab79384f Unify broker/bridge domains to torproject.net 2021-10-14 11:14:22 -04:00
meskio
cbd863d6b1
Fix proxy test
The broker is a global object.
2021-09-02 12:49:00 +02:00
meskio
e3d376ca43
Wait pollInterval between proxy offers
Closes: #40055
2021-07-21 16:38:29 +02:00
meskio
099f4127ea
Refactor the poll offer to use a ticker
Simplify the code to use a ticker. Using a pattern to allow a first run
of the loop before hitting the ticker:
https://github.com/golang/go/issues/17601#issuecomment-311955879
2021-07-21 16:38:27 +02:00
Cecylia Bocovich
c1b0fdd8cf Cleaned up and reorganized READMEs 2021-07-19 10:16:26 -04:00
meskio
ced539f234
Refactor webRTCConn to its own file 2021-07-07 19:36:24 +02:00
meskio
7a1857c42f
Make the proxy to report the number of clients to the broker
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
2021-07-07 19:36:20 +02:00
Cecylia Bocovich
7187f1009e Log a throughput summary for each connection
This will increase transparency for people running standalone proxies
and help us debug any potential issues with proxies behaving unreliably.
2021-02-02 11:21:16 -05:00
Cecylia Bocovich
1b29ad7de1 Bump version of pion/sdp
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.
2021-01-25 10:28:17 -05:00
Cecylia Bocovich
83c01565ef Update webrtc library to v3.0.0
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.
2021-01-12 10:37:26 -05:00
Cecylia Bocovich
00f8f85f41 Use remote probe to determine proxy NAT type
Rather than having standalone proxies determine their NAT type by
conducting the NAT behaviour checks in RFC 5780, use the remote probe
service instead.
2020-11-20 01:13:18 -05:00
Cecylia Bocovich
61beb9d996 Revert accidentally merged code
Some temporary testing code for the proxy got accidentally merged into
the latest changes. This commit undoes that mistake.
2020-11-05 19:28:20 -05:00
Cecylia Bocovich
4663599382 Make probetest wait for a datachannel to open 2020-11-05 16:48:00 -05:00
Cecylia Bocovich
7a0428e3b1 Refactor proxy to reuse signaling code
Simplify proxy interactions with the broker signaling server and prepare
for the introduction of an additional signaling server.
2020-10-29 11:03:51 -04:00
David Fifield
912bcae24e Don't log io.ErrClosedPipe in proxy.
We expect one of these at the end of just about every proxy session, as
the Conns in both directions are closed as soon as the copy loop
finishes in one direction.

Closes #40016.
2020-10-22 23:01:45 -06:00
Cecylia Bocovich
d7aa9b8356 Extract remote address from ICE candidates
Parse the received ICE candidates as well as the Connection Data
field for a non-local IP address to pass to the bridge. This fixes
bug #33157.
2020-10-05 17:02:57 -04:00
Cecylia Bocovich
d5ae7562ac Add response header timeouts to broker transports
The client and proxy use the net/http default transport to make round
trip connecitons to the broker. These by default don't time out and can
wait indefinitely for the broker to respond if the broker hangs and
doesn't terminate the connection.
2020-07-30 17:54:28 -04:00
Cecylia Bocovich
8c875f0ba7 Use STUN server compatable with RFC 5780 in proxy 2020-07-09 09:55:41 -04:00
Cecylia Bocovich
046dab865f Have broker pass client NAT type to proxy
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.
2020-07-06 13:16:03 -04:00
Cecylia Bocovich
f6cf9a453b Implement NAT discover for go standalone proxies 2020-07-06 13:16:03 -04:00
Cecylia Bocovich
5e8f9ac538 Update proxy tests to check serialization errors 2020-04-28 13:01:32 -04:00
Cecylia Bocovich
1d2df3cd71 Update calls to session description utils in proxy 2020-04-28 12:55:58 -04:00
Cecylia Bocovich
20180dcb04 Rename proxy-go/ directory to proxy/
Now that the web proxies are in a different repository, no need to
distinguish the two.
2020-04-22 11:11:16 -04:00
Cecylia Bocovich
51b0b7ed2e Remove proxy/ subdirectory
We're moving all web proxy code to a different repsitory.
2020-04-16 10:01:18 -04:00
Cecylia Bocovich
6f89fc14f6 Remove proxy/translation submodule
We're moving all web proxy code to another repository.
2020-04-16 10:01:18 -04:00
Cecylia Bocovich
03315dde02 bump version to 0.2.2 2020-03-04 16:20:34 -05:00
Cecylia Bocovich
310890aa14 bump version to 0.2.1 2020-02-03 09:49:34 -05:00
Jascha
37aaaffa15 proxy/make.js: add help output 2019-12-13 16:17:43 -07:00
Arlo Breault
1e45d48a3c Document setting the proxyType for metrics
Trac: 32499
2019-12-06 17:54:54 -05:00
Arlo Breault
af4cc52dc2 Add a build step / documentation for code reuse
Trac: 32499
2019-12-06 17:19:46 -05:00
Cecylia Bocovich
07f2cd8073 bump version to 0.2.0 2019-12-03 14:09:05 -05:00
Cecylia Bocovich
8ab81fc6cd Update proxy config to take proxy type
This allows badge and standalone proxies to tell the broker what proxy
type they are.
2019-11-28 13:52:58 -05:00
Cecylia Bocovich
2f37a73e71 bump version to 0.1.0 2019-11-13 13:36:30 -05:00
Cecylia Bocovich
b4b538a17f Implemented new broker messages for browser proxy 2019-11-13 10:54:48 -05:00
Cecylia Bocovich
c4ae64905b Redo protocol for proxy--broker messages
Switch to containing all communication between the proxy and the broker
in the HTTP response body. This will make things easier if we ever use
something other than HTTP communicate between different actors in the
snowflake system.

Other changes to the protocol are as follows:
- requests are accompanied by a version number so the broker can be
backwards compatable if desired in the future
- all responses are 200 OK unless the request was badly formatted
2019-11-13 10:54:48 -05:00
Cecylia Bocovich
300a23c6a0 Changed variable name for multiplexed clients
The variable maxNumClients was unused, while connectionsPerClient was
used for spawning multiple proxyPairs. The former is a more appropriate
name for the multiplexing behaviour we use it for.

Multiplexing now just works thanks to implementing ticket #31310.
2019-10-31 12:08:43 -04:00
Cecylia Bocovich
64b66c855f Moved function comments to their definitions
Increase readability of code a bit, the function descriptions were
automatically placed in the constructor when we moved from coffeescript.
2019-10-31 11:59:13 -04:00
Cecylia Bocovich
789285e0df Remove "active" property of proxyPairs
Use their existence in the proxy pair list to indicate they are active.
2019-10-31 11:59:13 -04:00
Cecylia Bocovich
d186fcd401 Remove property "running" from proxy-pair
We don't need it, and already have a function webrtcIsReady that tells
us what we need to know (whether a datachannel was opened before the
timeout period).
2019-10-31 11:59:13 -04:00
Cecylia Bocovich
9b470fbe4b Removed "janky" snowflake state machine
The only place it was used was in window.onpageunload, and we have a
better way of determining if the proxy is active there (through the ui).

I also removed that code from the webextension since the proxy won't
stop running unless you close the browser and after testing it looks
like that code doesn't notify the user anyway.
2019-10-31 11:59:13 -04:00
Cecylia Bocovich
338f1792b8 bump version to 0.0.13 2019-10-28 10:55:51 -04:00
David Fifield
e408988387 Increase proxy poll interval to 300 s.
https://bugs.torproject.org/32129
2019-10-28 10:51:49 -04:00
Cecylia Bocovich
da8b98d090 Include language name with along with code
Use npm cldr package to get the language name that corresponds to the
country code for the language switcher
2019-10-16 12:32:45 -04:00
Cecylia Bocovich
93d3564109 A few minor fixes to website
- cut down on size of bootstrap.css file
- remove unecessary styles
- fixed typo in javascript comment
2019-10-16 12:32:45 -04:00
Cecylia Bocovich
ab96817381 Added a language switcher for snowflake.tp.o
Also modified the styling of the page to match the main tp.o page a bit
more
2019-10-16 12:32:45 -04:00
Cecylia Bocovich
f6517f60ce Hook up localized messages.json to website
Right now we use the navigator language to determine localization and
replace the website contents with translated strings.
2019-10-16 12:32:45 -04:00
Cecylia Bocovich
9140c7648c Switched to absolute paths for resources
This will make it easier to have translated copies of the site in
subdirectories
2019-10-16 12:32:45 -04:00
Cecylia Bocovich
7fe4e2910c Translate snowflake@tp.o website
Switched to using messages.json for translation strings for
snowflake@tp.o
2019-10-16 12:32:45 -04:00
Cecylia Bocovich
d064e54db9 bump version to 0.0.12 2019-10-16 10:30:20 -04:00
Cecylia Bocovich
b9138d0c7e Make sure we close peer connections in proxy
Not closing peer connections was causing UDP sockets to remain open
indefinitely (as reported in ticket #31285).
2019-10-16 10:26:51 -04:00