commit baf34b96cf3969eb0a517d5993a39632e98c2f26
Author: David Fifield <[email protected]>
Date:   Sat Mar 22 00:13:11 2014 -0700

    Move helper code to its own file.
---
 meek-client/helper.go      |  104 ++++++++++++++++++++++++++++++++++++++++++++
 meek-client/meek-client.go |   90 --------------------------------------
 2 files changed, 104 insertions(+), 90 deletions(-)

diff --git a/meek-client/helper.go b/meek-client/helper.go
new file mode 100644
index 0000000..98fd771
--- /dev/null
+++ b/meek-client/helper.go
@@ -0,0 +1,104 @@
+package main
+
+import (
+       "bytes"
+       "encoding/binary"
+       "encoding/json"
+       "errors"
+       "fmt"
+       "io"
+       "io/ioutil"
+       "net"
+       "net/http"
+       "time"
+)
+
+// The code in this file has to do communicating with the meek-http-helper
+// browser extension.
+
+type JSONRequest struct {
+       Method string            `json:"method,omitempty"`
+       URL    string            `json:"url,omitempty"`
+       Header map[string]string `json:"header,omitempty"`
+       Body   []byte            `json:"body,omitempty"`
+}
+
+type JSONResponse struct {
+       Error  string `json:"error,omitempty"`
+       Status int    `json:"status"`
+       Body   []byte `json:"body"`
+}
+
+// Ask a locally running browser extension to make the request for us.
+func roundTripWithHelper(buf []byte, info *RequestInfo) (*http.Response, 
error) {
+       s, err := net.DialTCP("tcp", nil, options.HelperAddr)
+       if err != nil {
+               return nil, err
+       }
+       defer s.Close()
+
+       // Encode our JSON.
+       req := JSONRequest{
+               Method: "POST",
+               URL:    info.URL.String(),
+               Header: make(map[string]string),
+               Body:   buf,
+       }
+       req.Header["X-Session-Id"] = info.SessionID
+       if info.Host != "" {
+               req.Header["Host"] = info.Host
+       }
+       encReq, err := json.Marshal(&req)
+       if err != nil {
+               return nil, err
+       }
+       // log.Printf("encoded %s", encReq)
+
+       // Send the request.
+       s.SetWriteDeadline(time.Now().Add(helperWriteTimeout))
+       err = binary.Write(s, binary.BigEndian, uint32(len(encReq)))
+       if err != nil {
+               return nil, err
+       }
+       _, err = s.Write(encReq)
+       if err != nil {
+               return nil, err
+       }
+
+       // Read the response.
+       var length uint32
+       s.SetReadDeadline(time.Now().Add(helperReadTimeout))
+       err = binary.Read(s, binary.BigEndian, &length)
+       if err != nil {
+               return nil, err
+       }
+       if length > maxHelperResponseLength {
+               return nil, errors.New(fmt.Sprintf("helper's returned data is 
too big (%d > %d)",
+                       length, maxHelperResponseLength))
+       }
+       encResp := make([]byte, length)
+       _, err = io.ReadFull(s, encResp)
+       if err != nil {
+               return nil, err
+       }
+       // log.Printf("received %s", encResp)
+
+       // Decode their JSON.
+       var jsonResp JSONResponse
+       err = json.Unmarshal(encResp, &jsonResp)
+       if err != nil {
+               return nil, err
+       }
+       if jsonResp.Error != "" {
+               return nil, errors.New(fmt.Sprintf("helper returned error: %s", 
jsonResp.Error))
+       }
+
+       // Mock up an HTTP response.
+       resp := http.Response{
+               Status:        http.StatusText(jsonResp.Status),
+               StatusCode:    jsonResp.Status,
+               Body:          ioutil.NopCloser(bytes.NewReader(jsonResp.Body)),
+               ContentLength: int64(len(jsonResp.Body)),
+       }
+       return &resp, nil
+}
diff --git a/meek-client/meek-client.go b/meek-client/meek-client.go
index 930b123..6ce95f0 100644
--- a/meek-client/meek-client.go
+++ b/meek-client/meek-client.go
@@ -4,13 +4,10 @@ import (
        "bytes"
        "crypto/rand"
        "encoding/base64"
-       "encoding/binary"
-       "encoding/json"
        "errors"
        "flag"
        "fmt"
        "io"
-       "io/ioutil"
        "log"
        "net"
        "net/http"
@@ -82,93 +79,6 @@ func roundTripWithHTTP(buf []byte, info *RequestInfo) 
(*http.Response, error) {
        return tr.RoundTrip(req)
 }
 
-type JSONRequest struct {
-       Method string            `json:"method,omitempty"`
-       URL    string            `json:"url,omitempty"`
-       Header map[string]string `json:"header,omitempty"`
-       Body   []byte            `json:"body,omitempty"`
-}
-
-type JSONResponse struct {
-       Error  string `json:"error,omitempty"`
-       Status int    `json:"status"`
-       Body   []byte `json:"body"`
-}
-
-// Ask a locally running browser extension to make the request for us.
-func roundTripWithHelper(buf []byte, info *RequestInfo) (*http.Response, 
error) {
-       s, err := net.DialTCP("tcp", nil, options.HelperAddr)
-       if err != nil {
-               return nil, err
-       }
-       defer s.Close()
-
-       // Encode our JSON.
-       req := JSONRequest{
-               Method: "POST",
-               URL:    info.URL.String(),
-               Header: make(map[string]string),
-               Body:   buf,
-       }
-       req.Header["X-Session-Id"] = info.SessionID
-       if info.Host != "" {
-               req.Header["Host"] = info.Host
-       }
-       encReq, err := json.Marshal(&req)
-       if err != nil {
-               return nil, err
-       }
-       // log.Printf("encoded %s", encReq)
-
-       // Send the request.
-       s.SetWriteDeadline(time.Now().Add(helperWriteTimeout))
-       err = binary.Write(s, binary.BigEndian, uint32(len(encReq)))
-       if err != nil {
-               return nil, err
-       }
-       _, err = s.Write(encReq)
-       if err != nil {
-               return nil, err
-       }
-
-       // Read the response.
-       var length uint32
-       s.SetReadDeadline(time.Now().Add(helperReadTimeout))
-       err = binary.Read(s, binary.BigEndian, &length)
-       if err != nil {
-               return nil, err
-       }
-       if length > maxHelperResponseLength {
-               return nil, errors.New(fmt.Sprintf("helper's returned data is 
too big (%d > %d)",
-                       length, maxHelperResponseLength))
-       }
-       encResp := make([]byte, length)
-       _, err = io.ReadFull(s, encResp)
-       if err != nil {
-               return nil, err
-       }
-       // log.Printf("received %s", encResp)
-
-       // Decode their JSON.
-       var jsonResp JSONResponse
-       err = json.Unmarshal(encResp, &jsonResp)
-       if err != nil {
-               return nil, err
-       }
-       if jsonResp.Error != "" {
-               return nil, errors.New(fmt.Sprintf("helper returned error: %s", 
jsonResp.Error))
-       }
-
-       // Mock up an HTTP response.
-       resp := http.Response{
-               Status:        http.StatusText(jsonResp.Status),
-               StatusCode:    jsonResp.Status,
-               Body:          ioutil.NopCloser(bytes.NewReader(jsonResp.Body)),
-               ContentLength: int64(len(jsonResp.Body)),
-       }
-       return &resp, nil
-}
-
 func sendRecv(buf []byte, conn net.Conn, info *RequestInfo) (int64, error) {
        roundTrip := roundTripWithHTTP
        if options.HelperAddr != nil {



_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to