Snowflake issueshttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues2020-07-31T14:39:57Zhttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40005Use of http.DefaultTransport can cause the proxy and clients to hang indefini...2020-07-31T14:39:57ZCecylia BocovichUse of http.DefaultTransport can cause the proxy and clients to hang indefinitelyThe [http.DefaultTransport](https://golang.org/pkg/net/http/#RoundTripper) leaves `ResponseHeaderTimeout` unset by default. This means that the proxy and client that use this transport will hang indefinitely if they don't receive a respo...The [http.DefaultTransport](https://golang.org/pkg/net/http/#RoundTripper) leaves `ResponseHeaderTimeout` unset by default. This means that the proxy and client that use this transport will hang indefinitely if they don't receive a response from the broker. This happens rarely in practice, but we've seen it before with #29861. A better thing to do is set a long time out and log an error message if contacting the broker failed.
The timeout for clients should be at least as long as the broker's [ClientTimeout](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/blob/master/broker/broker.go#L31) and likewise the proxies should time out after the broker's [ProxyTimeout](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/blob/master/broker/broker.go#L32) would be triggered.Sponsor 28: Reliable Anonymous Communication Evading Censors and Repressors (RACECAR)Cecylia BocovichCecylia Bocovichhttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40004exporting Go functions make the Android build 4x larger2024-02-27T18:55:47Zeighthaveexporting Go functions make the Android build 4x largerI just noticed that the _snowflakeclient.aar_ that I've been building has ballooned in size from ~5mb to ~25mb by exporting a single function. Perhaps `gomobile bind` stops stripping the binary then? This is the diff that made it happe...I just noticed that the _snowflakeclient.aar_ that I've been building has ballooned in size from ~5mb to ~25mb by exporting a single function. Perhaps `gomobile bind` stops stripping the binary then? This is the diff that made it happen:
```diff
diff --git a/client/snowflake.go b/client/snowflake.go
index 02bbf1e..c024cd2 100644
--- a/client/snowflake.go
+++ b/client/snowflake.go
@@ -93,14 +93,14 @@ func parseIceServers(s string) []webrtc.ICEServer {
return servers
}
-func main() {
- iceServersCommas := flag.String("ice", "", "comma-separated list of ICE servers")
- brokerURL := flag.String("url", "", "URL of signaling broker")
- frontDomain := flag.String("front", "", "front domain")
- logFilename := flag.String("log", "", "name of log file")
- logToStateDir := flag.Bool("log-to-state-dir", false, "resolve the log file relative to tor's pt state dir")
+func Load() {
+ iceServersCommas := flag.String("ice", "stun:stun.l.google.com:19302", "comma-separated list of ICE servers")
+ brokerURL := flag.String("url", "https://snowflake-broker.azureedge.net/", "URL of signaling broker")
+ frontDomain := flag.String("front", "ajax.aspnetcdn.com", "front domain")
+ logFilename := flag.String("log", "snowflakeclient.log", "name of log file")
+ logToStateDir := flag.Bool("log-to-state-dir", true, "resolve the log file relative to tor's pt state dir")
keepLocalAddresses := flag.Bool("keep-local-addresses", false, "keep local LAN address ICE candidates")
- unsafeLogging := flag.Bool("unsafe-logging", false, "prevent logs from being scrubbed")
+ unsafeLogging := flag.Bool("unsafe-logging", true, "prevent logs from being scrubbed")
max := flag.Int("max", DefaultSnowflakeCapacity,
"capacity for number of multiplexed WebRTC peers")
```
Here are two builds with binary artifacts to compare:
* https://gitlab.torproject.org/eighthave/snowflake/-/jobs/659
* https://gitlab.torproject.org/eighthave/snowflake/-/jobs/721
@n8fr8https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40003Make android go builds less painful in .gitlab-ci.yml2020-07-14T13:16:45ZCecylia BocovichMake android go builds less painful in .gitlab-ci.ymlAs discussed in https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/3, the build process for this project on android is painful. We should look into whether we can use Go modules in a more in...As discussed in https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/3, the build process for this project on android is painful. We should look into whether we can use Go modules in a more intuitive way. This is somewhat related to https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/33953, and also to the work the Guardian Project is doing on their pluggable transports pipeline.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40002Create a docker container for running a standalone snowflake proxy2021-12-12T20:02:19ZCecylia BocovichCreate a docker container for running a standalone snowflake proxyWe just had someone request this feature in the Snowbox repository: https://github.com/cohosh/snowbox/issues/2
Seems like it would be low effort and worthwhile.
We also might have to do this for sponsor 28 testing anyway.We just had someone request this feature in the Snowbox repository: https://github.com/cohosh/snowbox/issues/2
Seems like it would be low effort and worthwhile.
We also might have to do this for sponsor 28 testing anyway.HashikDHashikDhttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40001Generating random SID2020-06-23T14:52:54ZHashikDGenerating random SIDGeneration random SID to send it to the server and using the generated SID in subsequent calls to the broker. if the connection terminates re-generating a random SID.Generation random SID to send it to the server and using the generated SID in subsequent calls to the broker. if the connection terminates re-generating a random SID.Cecylia BocovichCecylia Bocovichhttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40000Gitlab Migration Milestone2020-06-15T23:46:47ZTracGitlab Migration MilestoneWe're creating this ticket as a part of the Trac-to-Gitlab migration, so that each project's numbering for new tickets will start with 40001.We're creating this ticket as a part of the Trac-to-Gitlab migration, so that each project's numbering for new tickets will start with 40001.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34435Update bug-reporting links for gitlab2021-07-09T18:26:25ZDavid Fifielddcf@torproject.orgUpdate bug-reporting links for gitlabAfter the [gitlab migration](https://lists.torproject.org/pipermail/tor-project/2020-June/002866.html) we need to update bug-reporting instructions.
* https://snowflake.torproject.org/#bugs<br>
https://gitweb.torproject.org/pluggabl...After the [gitlab migration](https://lists.torproject.org/pipermail/tor-project/2020-June/002866.html) we need to update bug-reporting instructions.
* https://snowflake.torproject.org/#bugs<br>
https://gitweb.torproject.org/pluggable-transports/snowflake-webext.git/tree/static/index.html?h=webext-0.3.1&id=d2a9a8fd136ac6bbba393de3d51fb7ca85e17b8a#n75
* https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/wikis/home#reporting-bugs
I checked in snowflake.git and did not find anything that needs to be changed.Gabagaba@torproject.orgGabagaba@torproject.orghttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34358Implement a browser-compatible NAT behaviour discovery STUN library2020-06-30T16:07:43ZCecylia BocovichImplement a browser-compatible NAT behaviour discovery STUN librarySo far we've been lucky that the npm modules we've been using are available through Firefox and Chrome APIs. That's not the case for [stun](https://www.npmjs.com/package/stun), which we need for legacy/trac#34129.
~~It looks like there ...So far we've been lucky that the npm modules we've been using are available through Firefox and Chrome APIs. That's not the case for [stun](https://www.npmjs.com/package/stun), which we need for legacy/trac#34129.
~~It looks like there are some options for packing node modules for use in web applications: https://www.npmjs.com/package/webpack~~
~~But we might need to modify our build scripts.~~
Now it seems like we'd have to implement our own STUN library from scratch using the UDP socket APIs.
It's questionable how worth it this is at the moment.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34354SDP Serialization.2020-06-27T13:40:06ZHashikDSDP Serialization.SDP Serialization.SDP Serialization.HashikDHashikDhttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34308Creating a new Snowflake Android project.2020-06-27T13:40:06ZHashikDCreating a new Snowflake Android project.Creating a new/fresh project for Snowflake Android with just empty activity.
Project Name: Snowflake-Mobile
Package Name: org.torproject.snowflake
Min-SDK: API-21 - Android 5.0 LollipopCreating a new/fresh project for Snowflake Android with just empty activity.
Project Name: Snowflake-Mobile
Package Name: org.torproject.snowflake
Min-SDK: API-21 - Android 5.0 Lollipophttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34307RxJava library for making asynchronous calls.2020-06-27T13:40:06ZHashikDRxJava library for making asynchronous calls.To be clear it's perfectly fine starting a project without this library by using Android's official inbuild **AsyncTask** class but Google is deprecating the Async task library in favor of RxJava. Async task works for now but might not w...To be clear it's perfectly fine starting a project without this library by using Android's official inbuild **AsyncTask** class but Google is deprecating the Async task library in favor of RxJava. Async task works for now but might not work in future versions of Android.
[Reference](https://www.xda-developers.com/asynctask-deprecate-android-11/)https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34283Requirement of App settings UI.2020-06-30T15:51:19ZHashikDRequirement of App settings UI.Is a settings activity or UI necessary? example of settings like the number of clients the user is willing to serve, start the service on start-up, etc.Is a settings activity or UI necessary? example of settings like the number of clients the user is willing to serve, start the service on start-up, etc.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34282Design for final notification UI.2020-06-30T15:52:17ZHashikDDesign for final notification UI.Making and designing the final notification UI.Making and designing the final notification UI.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34281Design for final application UI.2020-06-30T15:52:29ZHashikDDesign for final application UI.Making and designing the final application UI.Making and designing the final application UI.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34280Building a workable Notification UI Design.2020-06-27T13:40:07ZHashikDBuilding a workable Notification UI Design.Foreground service running requires a notification. In the initial stages a workable temporary UI for notification.Foreground service running requires a notification. In the initial stages a workable temporary UI for notification.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34279Building a workable UI.2020-06-27T13:40:07ZHashikDBuilding a workable UI.Building a simple UI button to launch (start/stop) the background service.Building a simple UI button to launch (start/stop) the background service.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34278Handling connection failures.2020-06-27T13:40:07ZHashikDHandling connection failures.Checking to see if the connection is dropping for any reason like Android OS killing the service, connection time outs, etc.Checking to see if the connection is dropping for any reason like Android OS killing the service, connection time outs, etc.HashikDHashikDhttps://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34277Relaying the data back and forth between WebSocket and WebRTC connection.2020-06-27T13:40:07ZHashikDRelaying the data back and forth between WebSocket and WebRTC connection.Relaying to and from WebRTC <-> WebSocket.Relaying to and from WebRTC <-> WebSocket.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34276Establishing WebSocket connection with the Tor relay.2020-06-27T13:40:07ZHashikDEstablishing WebSocket connection with the Tor relay.In the service, the second part is to establish a connection with the Tor relay to send and receive the data.In the service, the second part is to establish a connection with the Tor relay to send and receive the data.https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/34275Establishing connection with the client and finally check the connection.2020-06-27T13:40:07ZHashikDEstablishing connection with the client and finally check the connection.After getting both remote and local descriptions, checking the client connection by sending some data to the client.After getting both remote and local descriptions, checking the client connection by sending some data to the client.Cecylia BocovichCecylia Bocovich