fix(geolocate): do resolver lookup with proxy (#306)
The use cases for using a proxy become more clear over time. When I originally wrote the proxy code the idea was to use the proxy to proxy both the communication with the backend and measurements. It become increasingly clear that we _only_ want to proxy the communication with the backends. Therefore, there's no point in skipping the resolver lookup step when we use a proxy. Part of https://github.com/ooni/probe/issues/985
This commit is contained in:
parent
4578df0a2b
commit
54e590b776
3 changed files with 31 additions and 90 deletions
|
|
@ -60,8 +60,8 @@ type Results struct {
|
|||
// CountryCode is the country code
|
||||
CountryCode string
|
||||
|
||||
// DidResolverLookup indicates whether we did a resolver lookup.
|
||||
DidResolverLookup bool
|
||||
// didResolverLookup indicates whether we did a resolver lookup.
|
||||
didResolverLookup bool
|
||||
|
||||
// NetworkName is the network name
|
||||
NetworkName string
|
||||
|
|
@ -109,10 +109,6 @@ type Resolver interface {
|
|||
|
||||
// Config contains configuration for a geolocate Task.
|
||||
type Config struct {
|
||||
// EnableResolverLookup indicates whether we want to
|
||||
// perform the optional resolver lookup.
|
||||
EnableResolverLookup bool
|
||||
|
||||
// Resolver is the resolver we should use when
|
||||
// making requests for discovering the IP. When
|
||||
// this field is not set, we use the stdlib.
|
||||
|
|
@ -147,12 +143,7 @@ func NewTask(config Config) (*Task, error) {
|
|||
}
|
||||
return &Task{
|
||||
countryLookupper: mmdbLookupper{},
|
||||
enableResolverLookup: config.EnableResolverLookup,
|
||||
probeIPLookupper: ipLookupClient{
|
||||
Resolver: config.Resolver,
|
||||
Logger: config.Logger,
|
||||
UserAgent: config.UserAgent,
|
||||
},
|
||||
probeIPLookupper: ipLookupClient(config),
|
||||
probeASNLookupper: mmdbLookupper{},
|
||||
resolverASNLookupper: mmdbLookupper{},
|
||||
resolverIPLookupper: resolverLookupClient{},
|
||||
|
|
@ -163,7 +154,6 @@ func NewTask(config Config) (*Task, error) {
|
|||
// instance of Task using the NewTask factory.
|
||||
type Task struct {
|
||||
countryLookupper countryLookupper
|
||||
enableResolverLookup bool
|
||||
probeIPLookupper probeIPLookupper
|
||||
probeASNLookupper asnLookupper
|
||||
resolverASNLookupper asnLookupper
|
||||
|
|
@ -198,25 +188,23 @@ func (op Task) Run(ctx context.Context) (*Results, error) {
|
|||
return out, fmt.Errorf("lookupProbeCC failed: %w", err)
|
||||
}
|
||||
out.CountryCode = cc
|
||||
if op.enableResolverLookup {
|
||||
out.DidResolverLookup = true
|
||||
// Note: ignoring the result of lookupResolverIP and lookupASN
|
||||
// here is intentional. We don't want this (~minor) failure
|
||||
// to influence the result of the overall lookup. Another design
|
||||
// here could be that of retrying the operation N times?
|
||||
resolverIP, err := op.resolverIPLookupper.LookupResolverIP(ctx)
|
||||
if err != nil {
|
||||
return out, nil
|
||||
}
|
||||
out.ResolverIP = resolverIP
|
||||
resolverASN, resolverNetworkName, err := op.resolverASNLookupper.LookupASN(
|
||||
out.ResolverIP,
|
||||
)
|
||||
if err != nil {
|
||||
return out, nil
|
||||
}
|
||||
out.ResolverASN = resolverASN
|
||||
out.ResolverNetworkName = resolverNetworkName
|
||||
out.didResolverLookup = true
|
||||
// Note: ignoring the result of lookupResolverIP and lookupASN
|
||||
// here is intentional. We don't want this (~minor) failure
|
||||
// to influence the result of the overall lookup. Another design
|
||||
// here could be that of retrying the operation N times?
|
||||
resolverIP, err := op.resolverIPLookupper.LookupResolverIP(ctx)
|
||||
if err != nil {
|
||||
return out, nil // intentional
|
||||
}
|
||||
out.ResolverIP = resolverIP
|
||||
resolverASN, resolverNetworkName, err := op.resolverASNLookupper.LookupASN(
|
||||
out.ResolverIP,
|
||||
)
|
||||
if err != nil {
|
||||
return out, nil // intentional
|
||||
}
|
||||
out.ResolverASN = resolverASN
|
||||
out.ResolverNetworkName = resolverNetworkName
|
||||
return out, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue