fix(oonimkall): allow Android app to set proxy (#303)
Part of https://github.com/ooni/probe/issues/985
This commit is contained in:
parent
7172e750dd
commit
5d8cf60f55
3 changed files with 52 additions and 0 deletions
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/url"
|
||||
"runtime"
|
||||
"sync"
|
||||
|
||||
|
|
@ -65,6 +66,19 @@ type SessionConfig struct {
|
|||
// then the session will not emit any log message.
|
||||
Logger Logger
|
||||
|
||||
// Proxy allows you to optionally force a specific proxy
|
||||
// rather than using no proxy (the default).
|
||||
//
|
||||
// Use `psiphon:///` to force using Psiphon with the
|
||||
// embedded configuration file. Not all builds have
|
||||
// an embedded configuration file, but OONI builds have
|
||||
// such a file, so they can use this functionality.
|
||||
//
|
||||
// Use `socks5://10.0.0.1:9050/` to connect to a SOCKS5
|
||||
// proxy running on 10.0.0.1:9050. This could be, for
|
||||
// example, a suitably configured `tor` instance.
|
||||
Proxy string
|
||||
|
||||
// ProbeServicesURL allows you to optionally force the
|
||||
// usage of an alternative probe service instance. This setting
|
||||
// should only be used for implementing integration tests.
|
||||
|
|
@ -153,10 +167,22 @@ func newSessionWithContext(ctx context.Context, config *SessionConfig) (*Session
|
|||
Type: "https",
|
||||
})
|
||||
}
|
||||
|
||||
// TODO(bassosimone): write tests for this functionality.
|
||||
var proxyURL *url.URL
|
||||
if config.Proxy != "" {
|
||||
var err error
|
||||
proxyURL, err = url.Parse(config.Proxy)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
engineConfig := engine.SessionConfig{
|
||||
AvailableProbeServices: availableps,
|
||||
KVStore: kvstore,
|
||||
Logger: newLogger(config.Logger, config.Verbose),
|
||||
ProxyURL: proxyURL,
|
||||
SoftwareName: config.SoftwareName,
|
||||
SoftwareVersion: config.SoftwareVersion,
|
||||
TempDir: config.TempDir,
|
||||
|
|
|
|||
Loading…
Reference in a new issue