Documentation
¶
Index ¶
- Constants
- Variables
- func AddCommonHeaders(uc UserConfig, req *http.Request)
- func AddCommonHeadersWithOptions(uc UserConfig, req *http.Request, overwriteAuth bool)
- func AddCommonNonUserHeaders(uc UserConfig, req *http.Request)
- func CORSMiddleware(next http.Handler) http.Handler
- func GetHTTPClient() *http.Client
- func InitVersion(compileTimeApplicationVersion string)
- func ProcessCORS(responseHeaders http.Header, r *http.Request) bool
- func SetConfigDir(dir string)
- func SetDNSTTConfig(cfg *DNSTTConfig)
- func SupportsProxyless() bool
- func SupportsTransport(transport string) bool
- type AuthConfig
- type DNSTTConfig
- type NullAuthConfig
- type NullUserConfig
- type UserConfig
- type UserConfigData
- func (uc *UserConfigData) GetAppName() string
- func (uc *UserConfigData) GetDeviceID() string
- func (uc *UserConfigData) GetEnabledExperiments() []string
- func (uc *UserConfigData) GetInternalHeaders() map[string]string
- func (uc *UserConfigData) GetLanguage() string
- func (uc *UserConfigData) GetTimeZone() (string, error)
- func (uc *UserConfigData) GetToken() string
- func (uc *UserConfigData) GetUserID() int64
Constants ¶
const ( // UserConfigURL is the URL for fetching the per user proxy config. UserConfigURL = "https://df.iantem.io/api/v1/config" // UpdateServerURL is the URL of the update server. Different applications // hit the server on separate paths "/update/<AppName>". UpdateServerURL = "https://update.getlantern.org/" )
const ( AppHeader = "X-Lantern-App" LibraryVersionHeader = "X-Lantern-Version" AppVersionHeader = "X-Lantern-App-Version" DeviceIdHeader = "X-Lantern-Device-Id" SupportedDataCapsHeader = "X-Lantern-Supported-Data-Caps" TimeZoneHeader = "X-Lantern-Time-Zone" TokenHeader = "X-Lantern-Auth-Token" UserIdHeader = "X-Lantern-User-Id" ProTokenHeader = "X-Lantern-Pro-Token" CfgSvrAuthTokenHeader = "X-Lantern-Config-Auth-Token" CfgSvrClientIPHeader = "X-Lantern-Config-Client-IP" BBRBytesSentHeader = "X-BBR-Sent" BBRAvailableBandwidthEstimateHeader = "X-BBR-ABE" EtagHeader = "X-Lantern-Etag" KernelArchHeader = "X-Lantern-KernelArch" IfNoneMatchHeader = "X-Lantern-If-None-Match" PingHeader = "X-Lantern-Ping" PlatformHeader = "X-Lantern-Platform" PlatformVersionHeader = "X-Lantern-PlatVer" ClientCountryHeader = "X-Lantern-Client-Country" RandomNoiseHeader = "X-Lantern-Rand" SleepHeader = "X-Lantern-Sleep" LocaleHeader = "X-Lantern-Locale" XBQHeader = "XBQ" XBQHeaderv2 = "XBQv2" )
const ( // The default name for this app (used if no client-supplied name is passed at initialization) DefaultAppName = "Lantern" // ProAvailable specifies whether the user can purchase pro with this version. ProAvailable = true // TrackingID is the Google Analytics tracking ID. TrackingID = "UA-21815217-12" PROXYLESS = "proxyless" )
const Platform = runtime.GOOS
Variables ¶
var ( EnvironmentDevelopment = "development" EnvironmentProduction = "production" )
var ( // GlobalURL URL for fetching the global config. GlobalURL = "https://globalconfig.flashlightproxy.com/global.yaml.gz" ProAPIHost = "api.getiantem.org" // Set by the linker using -ldflags in the project's Makefile. // Defaults to 'production' so as not to mistakingly push development work // to a production environment Environment = "production" )
var ( // CompileTimeApplicationVersion is set at compile-time by application production builds CompileTimeApplicationVersion string = "" // LibraryVersion is determined at runtime based on the version of the lantern library that's been included. LibraryVersion = "" )
Functions ¶
func AddCommonHeaders ¶
func AddCommonHeaders(uc UserConfig, req *http.Request)
AddCommonHeaders sets standard http headers on a request bound for an internal service, representing auth and other configuration metadata.
func AddCommonHeadersWithOptions ¶
func AddCommonHeadersWithOptions(uc UserConfig, req *http.Request, overwriteAuth bool)
AddCommonHeadersWithOptions sets standard http headers on a request bound for an internal service, representing auth and other configuration metadata. The caller may specify overwriteAuth=false to prevent overwriting any of the common 'auth' headers (DeviceIdHeader, ProTokenHeader, UserIdHeader) that are already present in the given request.
func AddCommonNonUserHeaders ¶
func AddCommonNonUserHeaders(uc UserConfig, req *http.Request)
AddCommonNonUserHeaders adds all common headers that are not user or device specific.
func CORSMiddleware ¶
CORSMiddleware is HTTP middleware used to process CORS requests on localhost
func GetHTTPClient ¶ added in v7.6.185
func InitVersion ¶ added in v7.6.182
func InitVersion(compileTimeApplicationVersion string)
func ProcessCORS ¶
ProcessCORS processes CORS requests on localhost. It returns true if the request is a valid CORS request from an allowed origin and false otherwise.
func SetConfigDir ¶ added in v7.6.199
func SetConfigDir(dir string)
The config directory on some platforms, such as Android, can only be determined in native code, so we need to set it externally.
func SetDNSTTConfig ¶ added in v7.6.237
func SetDNSTTConfig(cfg *DNSTTConfig)
func SupportsProxyless ¶ added in v7.6.236
func SupportsProxyless() bool
func SupportsTransport ¶ added in v7.6.230
SupportsTransport reads the LANTERN_TRANSPORTS environment variable and returns whether or not the specified transport is supported. If there is no LANTERN_TRANSPORTS environment variable defined, all transports are supported.
Types ¶
type AuthConfig ¶
type AuthConfig interface {
GetAppName() string
GetDeviceID() string
GetUserID() int64
GetToken() string
}
AuthConfig retrieves any custom info for interacting with internal services.
type DNSTTConfig ¶ added in v7.6.237
type DNSTTConfig struct {
Domain string `yaml:"domain"` // DNS tunnel domain, e.g., "t.iantem.io"
PublicKey string `yaml:"publicKey"` // DNSTT server public key
DoHResolver string `yaml:"dohResolver,omitempty"`
DoTResolver string `yaml:"dotResolver,omitempty"`
UTLSDistribution string `yaml:"utlsDistribution,omitempty"`
}
func (*DNSTTConfig) Validate ¶ added in v7.6.237
func (c *DNSTTConfig) Validate() error
type NullAuthConfig ¶
type NullAuthConfig struct{}
NullAuthConfig is useful for testing
func (NullAuthConfig) GetAppName ¶
func (a NullAuthConfig) GetAppName() string
func (NullAuthConfig) GetDeviceID ¶
func (a NullAuthConfig) GetDeviceID() string
func (NullAuthConfig) GetEnabledExperiments ¶
func (a NullAuthConfig) GetEnabledExperiments() []string
func (NullAuthConfig) GetToken ¶
func (a NullAuthConfig) GetToken() string
func (NullAuthConfig) GetUserID ¶
func (a NullAuthConfig) GetUserID() int64
type NullUserConfig ¶
type NullUserConfig struct{ NullAuthConfig }
NullUserConfig is useful for testing
func (NullUserConfig) GetInternalHeaders ¶
func (s NullUserConfig) GetInternalHeaders() map[string]string
func (NullUserConfig) GetLanguage ¶
func (s NullUserConfig) GetLanguage() string
func (NullUserConfig) GetTimeZone ¶
func (s NullUserConfig) GetTimeZone() (string, error)
type UserConfig ¶
type UserConfig interface {
AuthConfig
GetLanguage() string
GetTimeZone() (string, error)
GetInternalHeaders() map[string]string
GetEnabledExperiments() []string
}
UserConfig retrieves auth and other metadata passed to internal services.
type UserConfigData ¶
type UserConfigData struct {
AppName string
DeviceID string
UserID int64
Token string
Language string
Headers map[string]string
}
an implementation of common.UserConfig
func NewUserConfigData ¶
func NewUserConfigData(appName string, deviceID string, userID int64, token string, headers map[string]string, lang string) *UserConfigData
NewUserConfigData constucts a new UserConfigData (common.UserConfig) with the given options.
func (*UserConfigData) GetAppName ¶
func (uc *UserConfigData) GetAppName() string
func (*UserConfigData) GetDeviceID ¶
func (uc *UserConfigData) GetDeviceID() string
func (*UserConfigData) GetEnabledExperiments ¶
func (uc *UserConfigData) GetEnabledExperiments() []string
func (*UserConfigData) GetInternalHeaders ¶
func (uc *UserConfigData) GetInternalHeaders() map[string]string
func (*UserConfigData) GetLanguage ¶
func (uc *UserConfigData) GetLanguage() string
func (*UserConfigData) GetTimeZone ¶
func (uc *UserConfigData) GetTimeZone() (string, error)
func (*UserConfigData) GetToken ¶
func (uc *UserConfigData) GetToken() string
func (*UserConfigData) GetUserID ¶
func (uc *UserConfigData) GetUserID() int64