refactor: move TH structs and definitions to model (#894)
This commit moves the TH structs and definitions to model. We don't want oohelperd to depend on web_connectivity@v0.4. Part of https://github.com/ooni/probe/issues/2240
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
package model
|
||||
|
||||
// THDNSNameError is the error returned by the control on NXDOMAIN
|
||||
const THDNSNameError = "dns_name_error"
|
||||
|
||||
// THRequest is the request that we send to the control
|
||||
type THRequest struct {
|
||||
HTTPRequest string `json:"http_request"`
|
||||
HTTPRequestHeaders map[string][]string `json:"http_request_headers"`
|
||||
TCPConnect []string `json:"tcp_connect"`
|
||||
}
|
||||
|
||||
// THTCPConnectResult is the result of the TCP connect
|
||||
// attempt performed by the control vantage point.
|
||||
type THTCPConnectResult struct {
|
||||
Status bool `json:"status"`
|
||||
Failure *string `json:"failure"`
|
||||
}
|
||||
|
||||
// THTLSHandshakeResult is the result of the TLS handshake
|
||||
// attempt performed by the control vantage point.
|
||||
type THTLSHandshakeResult struct {
|
||||
ServerName string `json:"server_name"`
|
||||
Status bool `json:"status"`
|
||||
Failure *string `json:"failure"`
|
||||
}
|
||||
|
||||
// THHTTPRequestResult is the result of the HTTP request
|
||||
// performed by the control vantage point.
|
||||
type THHTTPRequestResult struct {
|
||||
BodyLength int64 `json:"body_length"`
|
||||
Failure *string `json:"failure"`
|
||||
Title string `json:"title"`
|
||||
Headers map[string]string `json:"headers"`
|
||||
StatusCode int64 `json:"status_code"`
|
||||
}
|
||||
|
||||
// TODO(bassosimone): ASNs is a private implementation detail of v0.4
|
||||
// that is actually ~annoying because we are mixing the data model with fields used
|
||||
// by just the v0.4 client implementation. We should avoid repeating this mistake
|
||||
// when implementing v0.5 of the client and eventually remove ASNs.
|
||||
|
||||
// THDNSResult is the result of the DNS lookup
|
||||
// performed by the control vantage point.
|
||||
type THDNSResult struct {
|
||||
Failure *string `json:"failure"`
|
||||
Addrs []string `json:"addrs"`
|
||||
ASNs []int64 `json:"-"` // not visible from the JSON
|
||||
}
|
||||
|
||||
// THIPInfo contains information about IP addresses resolved either
|
||||
// by the probe or by the TH and processed by the TH.
|
||||
type THIPInfo struct {
|
||||
// ASN contains the address' AS number.
|
||||
ASN int64 `json:"asn"`
|
||||
|
||||
// Flags contains flags describing this address.
|
||||
Flags int64 `json:"flags"`
|
||||
}
|
||||
|
||||
const (
|
||||
// THIPInfoFlagResolvedByProbe indicates that the probe has
|
||||
// resolved this IP address.
|
||||
THIPInfoFlagResolvedByProbe = 1 << iota
|
||||
|
||||
// THIPInfoFlagResolvedByTH indicates that the test helper
|
||||
// has resolved this IP address.
|
||||
THIPInfoFlagResolvedByTH
|
||||
|
||||
// THIPInfoFlagIsBogon indicates that the address is a bogon
|
||||
THIPInfoFlagIsBogon
|
||||
|
||||
// THIPInfoFlagValidForDomain indicates that an IP address
|
||||
// is valid for the domain because it works with TLS
|
||||
THIPInfoFlagValidForDomain
|
||||
)
|
||||
|
||||
// THResponse is the response from the control service.
|
||||
type THResponse struct {
|
||||
TCPConnect map[string]THTCPConnectResult `json:"tcp_connect"`
|
||||
TLSHandshake map[string]THTLSHandshakeResult `json:"tls_handshake"`
|
||||
HTTPRequest THHTTPRequestResult `json:"http_request"`
|
||||
DNS THDNSResult `json:"dns"`
|
||||
IPInfo map[string]*THIPInfo `json:"ip_info"`
|
||||
}
|
||||
Reference in New Issue
Block a user