Turn existing `proxy` into an easy-to-embed donor

idk requested to merge idk/snowflake:embeddable-donor-redux into main

I would like to run a Snowflake Proxy on a desktop PC without A) needing Firefox to be open B) needing a console window to be open C) needing to send SIGINT/SIGKILL to the process when I want to stop it and D) introducing a dependency requiring CGO into snowflake somehow. Moreover, I would like to make this easy for other people to do as well. This change would allow applications that want to support Tor by running Snowflake proxies to easily embed a Snowflake in their own applications by constructing a map[string]string containing options to pass to the Snowflake proxy, then starting the Snowflake proxy in it's own goroutine. This way, developers can provide their own UI for the Snowflake without requiring unnecessary changes in ./snowflake/proxy/ that would make just using the library more complicated. I made a very simple example of this here: https://i2pgit.org/idk/blizzard/-/blob/trunk/main.go which places an indicator that the Snowflake is running and and option to stop it in the system tray, and runs as an I2P Plugin.

Edited by idk

Merge request reports