Skip to content

Commit

Permalink
refactor(oohelperd): use netxlite rather than netx
Browse files Browse the repository at this point in the history
The oohelperd implementation did not actually need using netx because
it was just constructing default types with logging, which is what
netxlite already does. Hence, let's avoid using netx here.

See ooni/probe#2121
  • Loading branch information
bassosimone committed Jun 8, 2022
1 parent 87d35f4 commit f15344f
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 21 deletions.
3 changes: 2 additions & 1 deletion internal/cmd/oohelperd/internal/webconnectivity/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"sync"

"github.com/ooni/probe-cli/v3/internal/engine/experiment/webconnectivity"
"github.com/ooni/probe-cli/v3/internal/model"
"github.com/ooni/probe-cli/v3/internal/netxlite"
"github.com/ooni/probe-cli/v3/internal/tracex"
)
Expand All @@ -18,7 +19,7 @@ type CtrlHTTPResponse = webconnectivity.ControlHTTPRequestResult

// HTTPConfig configures the HTTP check.
type HTTPConfig struct {
Client *http.Client
Client model.HTTPClient
Headers map[string][]string
MaxAcceptableBody int64
Out chan CtrlHTTPResponse
Expand Down
3 changes: 1 addition & 2 deletions internal/cmd/oohelperd/internal/webconnectivity/measure.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package webconnectivity
import (
"context"
"net"
"net/http"
"net/url"
"sync"

Expand All @@ -21,7 +20,7 @@ type (

// MeasureConfig contains configuration for Measure.
type MeasureConfig struct {
Client *http.Client
Client model.HTTPClient
Dialer model.Dialer
MaxAcceptableBody int64
Resolver model.Resolver
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

// Handler implements the Web Connectivity test helper HTTP API.
type Handler struct {
Client *http.Client
Client model.HTTPClient
Dialer model.Dialer
MaxAcceptableBody int64
Resolver model.Resolver
Expand Down
35 changes: 18 additions & 17 deletions internal/cmd/oohelperd/oohelperd.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,32 +10,33 @@ import (

"github.com/apex/log"
"github.com/ooni/probe-cli/v3/internal/cmd/oohelperd/internal/webconnectivity"
"github.com/ooni/probe-cli/v3/internal/engine/netx"
"github.com/ooni/probe-cli/v3/internal/model"
"github.com/ooni/probe-cli/v3/internal/runtimex"
"github.com/ooni/probe-cli/v3/internal/netxlite"
)

const maxAcceptableBody = 1 << 24

var (
dialer model.Dialer
endpoint = flag.String("endpoint", ":8080", "Endpoint where to listen")
httpx *http.Client
resolver model.Resolver
srvcancel context.CancelFunc
srvctx context.Context
srvwg = new(sync.WaitGroup)
dialer model.Dialer
endpoint = flag.String("endpoint", ":8080", "Endpoint where to listen")
httpClient model.HTTPClient
resolver model.Resolver
srvcancel context.CancelFunc
srvctx context.Context
srvwg = new(sync.WaitGroup)
)

func init() {
srvctx, srvcancel = context.WithCancel(context.Background())
dialer = netx.NewDialer(netx.Config{Logger: log.Log})
txp := netx.NewHTTPTransport(netx.Config{Logger: log.Log})
httpx = &http.Client{Transport: txp}
// fix: use 8.8.8.8:53/udp so we pin to a specific resolver.
var err error
resolver, err = netx.NewDNSClient(netx.Config{Logger: log.Log}, "udp://8.8.8.8:53")
runtimex.PanicOnError(err, "NewDNSClient failed")
// Implementation note: pin to a specific resolver so we don't depend upon the
// default resolver configured by the box. Also, use an encrypted transport thus
// we're less vulnerable to any policy implemented by the box's provider.
resolver = netxlite.NewParallelDNSOverHTTPSResolver(log.Log, "https://8.8.8.8/dns-query")
thx := netxlite.NewTLSHandshakerStdlib(log.Log)
dialer = netxlite.NewDialerWithResolver(log.Log, resolver)
tlsDialer := netxlite.NewTLSDialer(dialer, thx)
txp := netxlite.NewHTTPTransport(log.Log, dialer, tlsDialer)
httpClient = netxlite.NewHTTPClient(txp)
}

func shutdown(srv *http.Server) {
Expand All @@ -58,7 +59,7 @@ func main() {
func testableMain() {
mux := http.NewServeMux()
mux.Handle("/", webconnectivity.Handler{
Client: httpx,
Client: httpClient,
Dialer: dialer,
MaxAcceptableBody: maxAcceptableBody,
Resolver: resolver,
Expand Down

0 comments on commit f15344f

Please sign in to comment.