commit b2f25343be7fac172d8327f8d7e5c3df6b14c5a7 Author: David Fifield david@bamsoftware.com Date: Tue Mar 18 10:40:31 2014 -0700
Add --helper option.
Controls whether to use a browser extension helper and what address to connect to it on. --- meek-client/meek-client.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/meek-client/meek-client.go b/meek-client/meek-client.go index cfb475f..1f64d9e 100644 --- a/meek-client/meek-client.go +++ b/meek-client/meek-client.go @@ -37,6 +37,7 @@ var options struct { URL string Front string HTTPProxyURL *url.URL + HelperAddr *net.TCPAddr }
// When a connection handler starts, +1 is written to this channel; when it @@ -60,7 +61,7 @@ type RequestInfo struct { HTTPProxyURL *url.URL }
-func roundTrip(buf []byte, info *RequestInfo) (*http.Response, error) { +func roundTripWithHTTP(buf []byte, info *RequestInfo) (*http.Response, error) { tr := http.DefaultTransport if info.HTTPProxyURL != nil { tr = &http.Transport{ @@ -94,7 +95,7 @@ type JSONResponse struct {
// Ask a locally running browser extension to make the request for us. func roundTripWithHelper(buf []byte, info *RequestInfo) (*http.Response, error) { - s, err := net.Dial("tcp", "127.0.0.1:7000") + s, err := net.DialTCP("tcp", nil, options.HelperAddr) if err != nil { return nil, err } @@ -165,7 +166,11 @@ func roundTripWithHelper(buf []byte, info *RequestInfo) (*http.Response, error) }
func sendRecv(buf []byte, conn net.Conn, info *RequestInfo) (int64, error) { - resp, err := roundTripWithHelper(buf, info) + roundTrip := roundTripWithHTTP + if options.HelperAddr != nil { + roundTrip = roundTripWithHelper + } + resp, err := roundTrip(buf, info) if err != nil { return 0, err } @@ -303,11 +308,13 @@ func acceptLoop(ln *pt.SocksListener) error { }
func main() { + var helperAddr string var httpProxy string var logFilename string var err error
flag.StringVar(&options.Front, "front", "", "front domain name if no front= SOCKS arg") + flag.StringVar(&helperAddr, "helper", "", "address of HTTP helper (browser extension)") flag.StringVar(&httpProxy, "http-proxy", "", "HTTP proxy URL (default from HTTP_PROXY environment variable") flag.StringVar(&logFilename, "log", "", "name of log file") flag.StringVar(&options.URL, "url", "", "URL to request if no url= SOCKS arg") @@ -322,6 +329,17 @@ func main() { log.SetOutput(f) }
+ if helperAddr != "" && httpProxy != "" { + log.Fatalf("--helper and --http-proxy can't be used together") + } + + if helperAddr != "" { + options.HelperAddr, err = net.ResolveTCPAddr("tcp", helperAddr) + if err != nil { + log.Fatalf("can't resolve helper address: %s", err) + } + } + if httpProxy != "" { options.HTTPProxyURL, err = url.Parse(httpProxy) if err != nil {
tor-commits@lists.torproject.org