Commit graph

114 commits

Author SHA1 Message Date
KokaKiwi
7142fa3ddb
fix(proxy): Correctly close connection pipe when dealing with error 2023-10-12 15:52:43 +01:00
WofWca
a615e8b1ab
fix(proxy): remove _potential_ deadlock
The `dc.Send()` should increase the `bufferedAmount` value,
so there is no need to add the message length a second time.

Also replace GT with GE, for the case where
`BufferedAmountLowThreshold === maxBufferedAmount`

Currently the deadlock cannot happen because `maxBufferedAmount`
and `BufferedAmountLowThreshold` are too far apart, in fact
the former is 2x the latter.

See
- https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/144#note_2902956
- https://github.com/pion/webrtc/pull/2473
- https://github.com/pion/webrtc/pull/2474
2023-10-09 15:15:45 +01:00
Cecylia Bocovich
3a050c6bb3
Use ShouldBeNil to check for nil values 2023-09-20 12:34:51 -04:00
David Fifield
8104732114 Change DefaultRelayURL back to wss://snowflake.torproject.net/.
Fixes #40283. Compare to #31522.
2023-07-29 22:33:26 +00:00
am3o
d932cb2744
feat: add option to expose the stats by using metrics 2023-07-28 14:23:22 +01:00
Vort
ea01c92cf1
Implement DataChannel flow control 2023-06-19 17:44:45 +01:00
meskio
82cc0f38f7
Move the development to gitlab
Related: tpo/anti-censorship/team#86
2023-05-31 10:01:47 +02:00
itchyonion
07b5f07452
Validate SDP offers and answers 2023-05-29 10:12:48 -07:00
KokaKiwi
1ef43a0dde
Use latest Pion WebRTC libs version
- webrtc and dtls libs got the "Skip Hello Verify" patches applied

Link: https://github.com/pion/dtls/pull/513
Link: https://github.com/pion/webrtc/pull/2433
2023-03-22 12:19:03 +00:00
itchyonion
5dd0a31d95
Add comments and improve logging 2023-03-14 12:43:00 -07:00
itchyonion
fb35e80b0a
Proxy: add outbound-address config 2023-03-14 12:42:59 -07:00
WofWca
5cc849e186
fix: up/down traffic stats being mixed up 2023-02-09 11:45:09 -08:00
Cecylia Bocovich
f6fa51d749
Switch default proxy STUN server to stun.l.google.com
This is the same default that the web-based proxies use. Proxies do not
need RFC 5780 compatible STUN servers.
2022-12-31 12:23:27 -05:00
Cecylia Bocovich
b547d449cb
Refactor timeout loop to use a context and reuse timers 2022-11-28 17:30:05 -05:00
Cecylia Bocovich
b010de5abb
Terminate timeoutLoop when conn is closed 2022-11-28 17:11:20 -05:00
Cecylia Bocovich
5c23fcf14a
Add timeout for webRTCConn 2022-11-28 17:11:18 -05:00
Cecylia Bocovich
6007d5e08e
Refactor creation of webRTCConn in proxy 2022-11-28 17:10:49 -05:00
luciole
2c599f8827
change bandwidth type from int to int64 to prevent overflow 2022-11-21 10:33:21 -05:00
itchyonion
768b80dbdf
Use event logger for proxy starting message and NAT info 2022-11-16 10:08:10 -08:00
luciole
3185487aea update formatTraffic so that bandwidth unit is always KB 2022-11-10 15:12:46 +01:00
KokaKiwi
10c8173120
proxy: Fix ephemeral ports range CLI flag (again) 2022-10-12 19:48:24 +02:00
meskio
56063efbba
Merge remote-tracking branch 'gitlab/mr/102' 2022-10-11 18:47:47 +02:00
trinity-1686a
5ef5142bb0 format using go-1.19 2022-10-09 21:15:50 +02:00
KokaKiwi
47f9392645
proxy: Add ICE ephemeral ports range setting CLI flag 2022-09-30 17:55:08 +02:00
KokaKiwi
5e564f36ff
proxy: Add a SnowflakeProxy.makeWebRTCAPI() method 2022-09-30 17:55:06 +02:00
Tommaso Gragnato
9ce1de4eee Use Pion's Setting Engine to reduce Multicast DNS noise
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40123

The purpose of the patch is to prevent Pion from opening the mDNS port,
thus preventing snowflake from directly leaking .local candidates.

What this doesn't prevent is the resolution of .local candidates
once they are passed on to the system DNS.
2022-09-26 08:52:23 -07:00
Shelikhoo
97dea533da
Update Relay Pattern format to include dollar sign 2022-06-16 14:06:58 +01:00
Shelikhoo
3ebb5a4186
Show relay URL when connecting to relay 2022-06-16 14:06:57 +01:00
Shelikhoo
2ebdc89c42
Add Allowed Relay Hostname Pattern Indication 2022-06-16 14:06:57 +01:00
Shelikhoo
b09a2e09b3
Add Relay URL Check in Snowflake Proxy 2022-06-16 14:06:56 +01:00
Shelikhoo
c961b07459
Add Detailed Error Output for datachannelHandler 2022-06-16 14:06:56 +01:00
Shelikhoo
d5a87c3c02
Guard Proxy Relay URL Acceptance with Pattern Check 2022-06-16 13:57:33 +01:00
Shelikhoo
863a8296e8
Add RelayURL support in proxy 2022-06-16 13:57:33 +01:00
Cecylia Bocovich
6310ca4381
Avoid performing two NAT probe tests at startup
After the initial NAT probe test, a full interval before starting the
recurring NAT retests.
2022-05-27 10:01:19 -04:00
itchyonion
9757784c5a
Wait some time before displaying the proxy usage log 2022-05-25 11:01:01 -04:00
meskio
b73add1550
Make the proxy type configurable for users of the library
Closes: #40104
2022-03-21 19:24:51 +01:00
Arlo Breault
6fd0f1ae5d Rename *PollRequest methods to distinguish client/proxy 2022-03-16 15:43:10 -04:00
Jake Vossen
99eb794a20
Fixed up/downstream metrics 2022-03-02 11:27:33 -05:00
pjsier
df22114fce Fix proxy logging verb tense 2022-02-28 18:38:17 -06:00
Shelikhoo
00e8415d8e
Add verbosity switch to suppress diagnostic output 2022-02-03 13:38:48 +00:00
Shelikhoo
e828b06076
Use log instead of fmt in proxy event logger
See also:
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/72#note_2772839
2022-01-28 14:46:45 +00:00
Shelikhoo
eb229d512b
Fix ProxyEventLogger output 2022-01-25 13:03:19 +00:00
Shelikhoo
88af9da4a2
Fix ProxyEventLogger output 2022-01-25 13:03:19 +00:00
Shelikhoo
1116bc81c8
Add Proxy Event Logger 2022-01-25 13:03:19 +00:00
Shelikhoo
9208364475
Extract traffic formatter 2022-01-25 13:03:19 +00:00
Shelikhoo
f12cfe6a9f
Add proxy event logger state propagate 2022-01-25 13:03:18 +00:00
Shelikhoo
e4305a4d2b
Add EventOnProxyConnectionOver Reporting 2022-01-25 13:03:18 +00:00
Shelikhoo
91379a42f3
Add Raw Data Output for bytesLogger 2022-01-25 13:03:14 +00:00
Shelikhoo
0c62d806a4
Represent NATTypeMeasurementInterval in time.Duration
Adopted the change in according to the recommendation from

https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/62#note_2761566
2021-11-16 19:25:27 +00:00
Shelikhoo
59af9927a5
Refactor state transfer logic to simplify it
Adopted the change in according to the recommendation from

https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/62#note_2760514
2021-11-12 10:49:32 +00:00