mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 22:34:02 +03:00
Update golangci-lint to 1.40.1
This commit is contained in:
@@ -70,7 +70,7 @@ jobs:
|
|||||||
- name: Run linter
|
- name: Run linter
|
||||||
uses: golangci/golangci-lint-action@v2
|
uses: golangci/golangci-lint-action@v2
|
||||||
with:
|
with:
|
||||||
version: v1.39.0
|
version: v1.40.1
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
name: Docker
|
name: Docker
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|||||||
IMAGE_NAME := mtg
|
IMAGE_NAME := mtg
|
||||||
APP_NAME := $(IMAGE_NAME)
|
APP_NAME := $(IMAGE_NAME)
|
||||||
|
|
||||||
GOLANGCI_LINT_VERSION := v1.39.0
|
GOLANGCI_LINT_VERSION := v1.40.1
|
||||||
|
|
||||||
VERSION_GO := $(shell go version)
|
VERSION_GO := $(shell go version)
|
||||||
VERSION_DATE := $(shell date -Ru)
|
VERSION_DATE := $(shell date -Ru)
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ type accessResponse struct {
|
|||||||
type accessResponseURLs struct {
|
type accessResponseURLs struct {
|
||||||
IP net.IP `json:"ip"`
|
IP net.IP `json:"ip"`
|
||||||
Port uint `json:"port"`
|
Port uint `json:"port"`
|
||||||
TgURL string `json:"tg_url"`
|
TgURL string `json:"tg_url"` // nolint: tagliatelle
|
||||||
TgQrCode string `json:"tg_qrcode"`
|
TgQrCode string `json:"tg_qrcode"` // nolint: tagliatelle
|
||||||
TmeURL string `json:"tme_url"`
|
TmeURL string `json:"tme_url"` // nolint: tagliatelle
|
||||||
TmeQrCode string `json:"tme_qrcode"`
|
TmeQrCode string `json:"tme_qrcode"` // nolint: tagliatelle
|
||||||
}
|
}
|
||||||
|
|
||||||
type Access struct {
|
type Access struct {
|
||||||
|
|||||||
+32
-32
@@ -12,23 +12,23 @@ import (
|
|||||||
type Config struct {
|
type Config struct {
|
||||||
Debug bool `json:"debug"`
|
Debug bool `json:"debug"`
|
||||||
Secret mtglib.Secret `json:"secret"`
|
Secret mtglib.Secret `json:"secret"`
|
||||||
BindTo TypeHostPort `json:"bind-to"`
|
BindTo TypeHostPort `json:"bindTo"`
|
||||||
TCPBuffer TypeBytes `json:"tcp-buffer"`
|
TCPBuffer TypeBytes `json:"tcpBuffer"`
|
||||||
PreferIP TypePreferIP `json:"prefer-ip"`
|
PreferIP TypePreferIP `json:"preferIp"`
|
||||||
DomainFrontingPort TypePort `json:"domain-fronting-port"`
|
DomainFrontingPort TypePort `json:"domainFrontingPort"`
|
||||||
TolerateTimeSkewness TypeDuration `json:"tolerate-time-skewness"`
|
TolerateTimeSkewness TypeDuration `json:"tolerateTimeSkewness"`
|
||||||
Concurrency uint `json:"concurrency"`
|
Concurrency uint `json:"concurrency"`
|
||||||
Defense struct {
|
Defense struct {
|
||||||
AntiReplay struct {
|
AntiReplay struct {
|
||||||
Enabled bool `json:"enabled"`
|
Enabled bool `json:"enabled"`
|
||||||
MaxSize TypeBytes `json:"max-size"`
|
MaxSize TypeBytes `json:"maxSize"`
|
||||||
ErrorRate TypeErrorRate `json:"error-rate"`
|
ErrorRate TypeErrorRate `json:"errorRate"`
|
||||||
} `json:"anti-replay"`
|
} `json:"antiReplay"`
|
||||||
Blocklist struct {
|
Blocklist struct {
|
||||||
Enabled bool `json:"enabled"`
|
Enabled bool `json:"enabled"`
|
||||||
DownloadConcurrency uint `json:"download-concurrency"`
|
DownloadConcurrency uint `json:"downloadConcurrency"`
|
||||||
URLs []TypeBlocklistURI `json:"urls"`
|
URLs []TypeBlocklistURI `json:"urls"`
|
||||||
UpdateEach TypeDuration `json:"update-each"`
|
UpdateEach TypeDuration `json:"updateEach"`
|
||||||
} `json:"blocklist"`
|
} `json:"blocklist"`
|
||||||
} `json:"defense"`
|
} `json:"defense"`
|
||||||
Network struct {
|
Network struct {
|
||||||
@@ -37,21 +37,21 @@ type Config struct {
|
|||||||
HTTP TypeDuration `json:"http"`
|
HTTP TypeDuration `json:"http"`
|
||||||
Idle TypeDuration `json:"idle"`
|
Idle TypeDuration `json:"idle"`
|
||||||
} `json:"timeout"`
|
} `json:"timeout"`
|
||||||
DOHIP TypeIP `json:"doh-ip"`
|
DOHIP TypeIP `json:"dohIp"`
|
||||||
Proxies []TypeURL `json:"proxies"`
|
Proxies []TypeURL `json:"proxies"`
|
||||||
} `json:"network"`
|
} `json:"network"`
|
||||||
Stats struct {
|
Stats struct {
|
||||||
StatsD struct {
|
StatsD struct {
|
||||||
Enabled bool `json:"enabled"`
|
Enabled bool `json:"enabled"`
|
||||||
Address TypeHostPort `json:"address"`
|
Address TypeHostPort `json:"address"`
|
||||||
MetricPrefix TypeMetricPrefix `json:"metric-prefix"`
|
MetricPrefix TypeMetricPrefix `json:"metricPrefix"`
|
||||||
TagFormat TypeStatsdTagFormat `json:"tag-format"`
|
TagFormat TypeStatsdTagFormat `json:"tagFormat"`
|
||||||
} `json:"statsd"`
|
} `json:"statsd"`
|
||||||
Prometheus struct {
|
Prometheus struct {
|
||||||
Enabled bool `json:"enabled"`
|
Enabled bool `json:"enabled"`
|
||||||
BindTo TypeHostPort `json:"bind-to"`
|
BindTo TypeHostPort `json:"bindTo"`
|
||||||
HTTPPath TypeHTTPPath `json:"http-path"`
|
HTTPPath TypeHTTPPath `json:"httpPath"`
|
||||||
MetricPrefix TypeMetricPrefix `json:"metric-prefix"`
|
MetricPrefix TypeMetricPrefix `json:"metricPrefix"`
|
||||||
} `json:"prometheus"`
|
} `json:"prometheus"`
|
||||||
} `json:"stats"`
|
} `json:"stats"`
|
||||||
}
|
}
|
||||||
@@ -84,23 +84,23 @@ func (c *Config) String() string {
|
|||||||
type configRaw struct {
|
type configRaw struct {
|
||||||
Debug bool `toml:"debug" json:"debug,omitempty"`
|
Debug bool `toml:"debug" json:"debug,omitempty"`
|
||||||
Secret string `toml:"secret" json:"secret"`
|
Secret string `toml:"secret" json:"secret"`
|
||||||
BindTo string `toml:"bind-to" json:"bind-to"`
|
BindTo string `toml:"bind-to" json:"bindTo"`
|
||||||
TCPBuffer string `toml:"tcp-buffer" json:"tcp-buffer,omitempty"`
|
TCPBuffer string `toml:"tcp-buffer" json:"tcpBuffer,omitempty"`
|
||||||
PreferIP string `toml:"prefer-ip" json:"prefer-ip,omitempty"`
|
PreferIP string `toml:"prefer-ip" json:"preferIp,omitempty"`
|
||||||
DomainFrontingPort uint `toml:"domain-fronting-port" json:"domain-fronting-port,omitempty"`
|
DomainFrontingPort uint `toml:"domain-fronting-port" json:"domainFrontingPort,omitempty"`
|
||||||
TolerateTimeSkewness string `toml:"tolerate-time-skewness" json:"tolerate-time-skewness,omitempty"`
|
TolerateTimeSkewness string `toml:"tolerate-time-skewness" json:"tolerateTimeSkewness,omitempty"`
|
||||||
Concurrency uint `toml:"concurrency" json:"concurrency,omitempty"`
|
Concurrency uint `toml:"concurrency" json:"concurrency,omitempty"`
|
||||||
Defense struct {
|
Defense struct {
|
||||||
AntiReplay struct {
|
AntiReplay struct {
|
||||||
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
||||||
MaxSize string `toml:"max-size" json:"max-size,omitempty"`
|
MaxSize string `toml:"max-size" json:"maxSize,omitempty"`
|
||||||
ErrorRate float64 `toml:"error-rate" json:"error-rate,omitempty"`
|
ErrorRate float64 `toml:"error-rate" json:"errorRate,omitempty"`
|
||||||
} `toml:"anti-replay" json:"anti-replay,omitempty"`
|
} `toml:"anti-replay" json:"antiReplay,omitempty"`
|
||||||
Blocklist struct {
|
Blocklist struct {
|
||||||
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
||||||
DownloadConcurrency uint `toml:"download-concurrency" json:"download-concurrency,omitempty"`
|
DownloadConcurrency uint `toml:"download-concurrency" json:"downloadConcurrency,omitempty"`
|
||||||
URLs []string `toml:"urls" json:"urls,omitempty"`
|
URLs []string `toml:"urls" json:"urls,omitempty"`
|
||||||
UpdateEach string `toml:"update-each" json:"update-each,omitempty"`
|
UpdateEach string `toml:"update-each" json:"updateEach,omitempty"`
|
||||||
} `toml:"blocklist" json:"blocklist,omitempty"`
|
} `toml:"blocklist" json:"blocklist,omitempty"`
|
||||||
} `toml:"defense" json:"defense,omitempty"`
|
} `toml:"defense" json:"defense,omitempty"`
|
||||||
Network struct {
|
Network struct {
|
||||||
@@ -109,21 +109,21 @@ type configRaw struct {
|
|||||||
HTTP string `toml:"http" json:"http,omitempty"`
|
HTTP string `toml:"http" json:"http,omitempty"`
|
||||||
Idle string `toml:"idle" json:"idle,omitempty"`
|
Idle string `toml:"idle" json:"idle,omitempty"`
|
||||||
} `toml:"timeout" json:"timeout,omitempty"`
|
} `toml:"timeout" json:"timeout,omitempty"`
|
||||||
DOHIP string `toml:"doh-ip" json:"doh-ip,omitempty"`
|
DOHIP string `toml:"doh-ip" json:"dohIp,omitempty"`
|
||||||
Proxies []string `toml:"proxies" json:"proxies,omitempty"`
|
Proxies []string `toml:"proxies" json:"proxies,omitempty"`
|
||||||
} `toml:"network" json:"network,omitempty"`
|
} `toml:"network" json:"network,omitempty"`
|
||||||
Stats struct {
|
Stats struct {
|
||||||
StatsD struct {
|
StatsD struct {
|
||||||
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
||||||
Address string `toml:"address" json:"address,omitempty"`
|
Address string `toml:"address" json:"address,omitempty"`
|
||||||
MetricPrefix string `toml:"metric-prefix" json:"metric-prefix,omitempty"`
|
MetricPrefix string `toml:"metric-prefix" json:"metricPrefix,omitempty"`
|
||||||
TagFormat string `toml:"tag-format" json:"tag-format,omitempty"`
|
TagFormat string `toml:"tag-format" json:"tagFormat,omitempty"`
|
||||||
} `toml:"statsd" json:"statsd,omitempty"`
|
} `toml:"statsd" json:"statsd,omitempty"`
|
||||||
Prometheus struct {
|
Prometheus struct {
|
||||||
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
Enabled bool `toml:"enabled" json:"enabled,omitempty"`
|
||||||
BindTo string `toml:"bind-to" json:"bind-to,omitempty"`
|
BindTo string `toml:"bind-to" json:"bindTo,omitempty"`
|
||||||
HTTPPath string `toml:"http-path" json:"http-path,omitempty"`
|
HTTPPath string `toml:"http-path" json:"httpPath,omitempty"`
|
||||||
MetricPrefix string `toml:"metric-prefix" json:"metric-prefix,omitempty"`
|
MetricPrefix string `toml:"metric-prefix" json:"metricPrefix,omitempty"`
|
||||||
} `toml:"prometheus" json:"prometheus,omitempty"`
|
} `toml:"prometheus" json:"prometheus,omitempty"`
|
||||||
} `toml:"stats" json:"stats,omitempty"`
|
} `toml:"stats" json:"stats,omitempty"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,9 +6,20 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// TypePreferIPPreferIPv4 states that you prefer to use IPv4 addresses
|
||||||
|
// but IPv6 is also possible.
|
||||||
TypePreferIPPreferIPv4 = "prefer-ipv4"
|
TypePreferIPPreferIPv4 = "prefer-ipv4"
|
||||||
|
|
||||||
|
// TypePreferIPPreferIPv6 states that you prefer to use IPv6 addresses
|
||||||
|
// but IPv4 is also possible.
|
||||||
TypePreferIPPreferIPv6 = "prefer-ipv6"
|
TypePreferIPPreferIPv6 = "prefer-ipv6"
|
||||||
|
|
||||||
|
// TypePreferOnlyIPv4 states that you prefer to use IPv4 addresses
|
||||||
|
// only.
|
||||||
TypePreferOnlyIPv4 = "only-ipv4"
|
TypePreferOnlyIPv4 = "only-ipv4"
|
||||||
|
|
||||||
|
// TypePreferOnlyIPv6 states that you prefer to use IPv6 addresses
|
||||||
|
// only.
|
||||||
TypePreferOnlyIPv6 = "only-ipv6"
|
TypePreferOnlyIPv6 = "only-ipv6"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,16 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// TypeStatsdTagFormatInfluxdb defines a tag format compatible with
|
||||||
|
// InfluxDB.
|
||||||
TypeStatsdTagFormatInfluxdb = "influxdb"
|
TypeStatsdTagFormatInfluxdb = "influxdb"
|
||||||
|
|
||||||
|
// TypeStatsdTagFormatDatadog defines a tag format compatible with
|
||||||
|
// DataDog.
|
||||||
TypeStatsdTagFormatDatadog = "datadog"
|
TypeStatsdTagFormatDatadog = "datadog"
|
||||||
|
|
||||||
|
// TypeStatsdTagFormatGraphite defines a tag format compatible with
|
||||||
|
// Graphite.
|
||||||
TypeStatsdTagFormatGraphite = "graphite"
|
TypeStatsdTagFormatGraphite = "graphite"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ import (
|
|||||||
type ClientHelloSnapshot struct {
|
type ClientHelloSnapshot struct {
|
||||||
Time int `json:"time"`
|
Time int `json:"time"`
|
||||||
Random string `json:"random"`
|
Random string `json:"random"`
|
||||||
SessionID string `json:"session-id"`
|
SessionID string `json:"sessionId"`
|
||||||
Host string `json:"host"`
|
Host string `json:"host"`
|
||||||
CipherSuite int `json:"cipher-suite"`
|
CipherSuite int `json:"cipherSuite"`
|
||||||
Full string `json:"full"`
|
Full string `json:"full"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,25 +6,43 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// RandomLen defines a size of the random digest in TLS Hellos.
|
||||||
RandomLen = 32
|
RandomLen = 32
|
||||||
|
|
||||||
|
// ClientHelloRandomOffset is an offset in ClientHello record where
|
||||||
|
// random digest is started.
|
||||||
ClientHelloRandomOffset = 6
|
ClientHelloRandomOffset = 6
|
||||||
|
|
||||||
|
// ClientHelloSessionIDOffset is an offset in ClientHello record where
|
||||||
|
// SessionID is started.
|
||||||
ClientHelloSessionIDOffset = ClientHelloRandomOffset + RandomLen
|
ClientHelloSessionIDOffset = ClientHelloRandomOffset + RandomLen
|
||||||
|
|
||||||
|
// ClientHelloMinLen is a minimal possible length of
|
||||||
|
// ClientHello record.
|
||||||
ClientHelloMinLen = 4
|
ClientHelloMinLen = 4
|
||||||
|
|
||||||
|
// WelcomePacketRandomOffset is an offset of random in ServerHello
|
||||||
|
// packet (including record envelope).
|
||||||
WelcomePacketRandomOffset = 11
|
WelcomePacketRandomOffset = 11
|
||||||
|
|
||||||
|
// HandshakeTypeClient is a value representing a client handshake.
|
||||||
HandshakeTypeClient = 0x01
|
HandshakeTypeClient = 0x01
|
||||||
|
|
||||||
|
// HandshakeTypeServer is a value representing a server handshake.
|
||||||
HandshakeTypeServer = 0x02
|
HandshakeTypeServer = 0x02
|
||||||
|
|
||||||
|
// ChangeCipherValue is a value representing a change cipher
|
||||||
|
// specification record.
|
||||||
ChangeCipherValue = 0x01
|
ChangeCipherValue = 0x01
|
||||||
|
|
||||||
|
// ExtensionSNI is a value for TLS extension 'SNI'.
|
||||||
ExtensionSNI = 0x00
|
ExtensionSNI = 0x00
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
// ErrBadDigest is returned if given TLS Client Hello mismatches with a
|
||||||
|
// derived one.
|
||||||
ErrBadDigest = errors.New("bad digest")
|
ErrBadDigest = errors.New("bad digest")
|
||||||
ErrAntiReplayAttack = errors.New("antireplay attack was detected")
|
|
||||||
|
|
||||||
serverHelloSuffix = []byte{
|
serverHelloSuffix = []byte{
|
||||||
0x00, // no compression
|
0x00, // no compression
|
||||||
|
|||||||
@@ -7,8 +7,17 @@ const TLSMaxRecordSize = 65535 // max uint16
|
|||||||
type Type uint8
|
type Type uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// TypeChangeCipherSpec defines a byte value of the TLS record when a
|
||||||
|
// peer wants to change a specifications of the chosen cipher.
|
||||||
TypeChangeCipherSpec Type = 0x14
|
TypeChangeCipherSpec Type = 0x14
|
||||||
|
|
||||||
|
// TypeHandshake defines a byte value of the TLS record when a peer
|
||||||
|
// initiates a new TLS connection and wants to make a handshake
|
||||||
|
// ceremony.
|
||||||
TypeHandshake Type = 0x16
|
TypeHandshake Type = 0x16
|
||||||
|
|
||||||
|
// TypeApplicationData defines a byte value of the TLS record when a
|
||||||
|
// peer sends an user data, not a control frames.
|
||||||
TypeApplicationData Type = 0x17
|
TypeApplicationData Type = 0x17
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -37,9 +46,16 @@ func (t Type) Valid() error {
|
|||||||
type Version uint16
|
type Version uint16
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// Version10 defines a TLS1.0.
|
||||||
Version10 Version = 769 // 0x03 0x01
|
Version10 Version = 769 // 0x03 0x01
|
||||||
|
|
||||||
|
// Version11 defines a TLS1.1.
|
||||||
Version11 Version = 770 // 0x03 0x02
|
Version11 Version = 770 // 0x03 0x02
|
||||||
|
|
||||||
|
// Version12 defines a TLS1.2.
|
||||||
Version12 Version = 771 // 0x03 0x03
|
Version12 Version = 771 // 0x03 0x03
|
||||||
|
|
||||||
|
// Version13 defines a TLS1.3.
|
||||||
Version13 Version = 772 // 0x03 0x04
|
Version13 Version = 772 // 0x03 0x04
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"time": 1617181365,
|
"time": 1617181365,
|
||||||
"random": "XvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPs=",
|
"random": "XvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPs=",
|
||||||
"session-id": "St2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCMCq4=",
|
"sessionId": "St2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCMCq4=",
|
||||||
"host": "storage.googleapis.com",
|
"host": "storage.googleapis.com",
|
||||||
"cipher-suite": 4867,
|
"cipherSuite": 4867,
|
||||||
"full": "AQAB/AMDXvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPsgSt2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCACq4ANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFANAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgB/7oLx9JElIALsLJS91H2QNyU1H0osKwIUelVndsLyIALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"full": "AQAB/AMDXvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPsgSt2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCACq4ANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFANAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgB/7oLx9JElIALsLJS91H2QNyU1H0osKwIUelVndsLyIALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"time": 1617181365,
|
"time": 1617181365,
|
||||||
"random": "XvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPs=",
|
"random": "XvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPs=",
|
||||||
"session-id": "St2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCMCq4=",
|
"sessionId": "St2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCMCq4=",
|
||||||
"host": "storage.googleapis.com",
|
"host": "storage.googleapis.com",
|
||||||
"cipher-suite": 4867,
|
"cipherSuite": 4867,
|
||||||
"full": "AQAB/AMDXvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPsgSt2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCMCq4ANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgB/7oLx9JElIALsLJS91H2QNyU1H0osKwIUelVndsLyIALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"full": "AQAB/AMDXvCPc3aAbHbhRLv0kUmy6BfPZOGvsused5/HNsKXEPsgSt2BZ2uHMFn3B2trD1jfdtpjoJOOg6JBeLhFcyCMCq4ANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgB/7oLx9JElIALsLJS91H2QNyU1H0osKwIUelVndsLyIALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"time": 1617181352,
|
"time": 1617181352,
|
||||||
"random": "oYEu33jl+zQbUKMtQbV1OHB0gXIM2y2aq9iY0QX12os=",
|
"random": "oYEu33jl+zQbUKMtQbV1OHB0gXIM2y2aq9iY0QX12os=",
|
||||||
"session-id": "FGqA3ZFYrSlj//xl7lammNn64K9/MK2mQ3HJUGvP+8g=",
|
"sessionId": "FGqA3ZFYrSlj//xl7lammNn64K9/MK2mQ3HJUGvP+8g=",
|
||||||
"host": "storage.googleapis.com",
|
"host": "storage.googleapis.com",
|
||||||
"cipher-suite": 4867,
|
"cipherSuite": 4867,
|
||||||
"full": "AQAB/AMDoYEu33jl+zQbUKMtQbV1OHB0gXIM2y2aq9iY0QX12osgFGqA3ZFYrSlj//xl7lammNn64K9/MK2mQ3HJUGvP+8gANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAga6CocpFP8Qd4YCFR9pkaCr97po2ALj0P5nI9Nnb3UWMALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"full": "AQAB/AMDoYEu33jl+zQbUKMtQbV1OHB0gXIM2y2aq9iY0QX12osgFGqA3ZFYrSlj//xl7lammNn64K9/MK2mQ3HJUGvP+8gANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAga6CocpFP8Qd4YCFR9pkaCr97po2ALj0P5nI9Nnb3UWMALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"time": 1617181352,
|
"time": 1617181352,
|
||||||
"random": "5V5sSprk/tFIgy+x1BeKNGhLlFkqfggLpgN7GYOA1ro=",
|
"random": "5V5sSprk/tFIgy+x1BeKNGhLlFkqfggLpgN7GYOA1ro=",
|
||||||
"session-id": "jxr4d6PXPDk+Lwx3WUp9wvj8TGlOxEdrRJ0ydyJ9+H8=",
|
"sessionId": "jxr4d6PXPDk+Lwx3WUp9wvj8TGlOxEdrRJ0ydyJ9+H8=",
|
||||||
"host": "storage.googleapis.com",
|
"host": "storage.googleapis.com",
|
||||||
"cipher-suite": 4867,
|
"cipherSuite": 4867,
|
||||||
"full": "AQAB/AMD5V5sSprk/tFIgy+x1BeKNGhLlFkqfggLpgN7GYOA1rogjxr4d6PXPDk+Lwx3WUp9wvj8TGlOxEdrRJ0ydyJ9+H8ANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgrulAaqUdKeVYM0F+pu6on/h6LBpOyzOKG4xFIKcoFk4ALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"full": "AQAB/AMD5V5sSprk/tFIgy+x1BeKNGhLlFkqfggLpgN7GYOA1rogjxr4d6PXPDk+Lwx3WUp9wvj8TGlOxEdrRJ0ydyJ9+H8ANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgrulAaqUdKeVYM0F+pu6on/h6LBpOyzOKG4xFIKcoFk4ALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"time": 1617181365,
|
"time": 1617181365,
|
||||||
"random": "8xljlOhkDlkafEF5vu3e1r3fWvh8AX548wC3hLZ3szQ=",
|
"random": "8xljlOhkDlkafEF5vu3e1r3fWvh8AX548wC3hLZ3szQ=",
|
||||||
"session-id": "00uvDYKnFyZFKyf3HlLwWGCOyeHsPFiU5UZ+Fs5pDAU=",
|
"sessionId": "00uvDYKnFyZFKyf3HlLwWGCOyeHsPFiU5UZ+Fs5pDAU=",
|
||||||
"host": "storage.googleapis.com",
|
"host": "storage.googleapis.com",
|
||||||
"cipher-suite": 4867,
|
"cipherSuite": 4867,
|
||||||
"full": "AQAB/AMD8xljlOhkDlkafEF5vu3e1r3fWvh8AX548wC3hLZ3szQg00uvDYKnFyZFKyf3HlLwWGCOyeHsPFiU5UZ+Fs5pDAUANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAg/9P7140NtKzjyDwBf99mOy1+FjRPAPHTNQ9WxHOKpV4ALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"full": "AQAB/AMD8xljlOhkDlkafEF5vu3e1r3fWvh8AX548wC3hLZ3szQg00uvDYKnFyZFKyf3HlLwWGCOyeHsPFiU5UZ+Fs5pDAUANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAg/9P7140NtKzjyDwBf99mOy1+FjRPAPHTNQ9WxHOKpV4ALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"time": 1617181352,
|
"time": 1617181352,
|
||||||
"random": "zja3MLZ8WGSfsQRtPV75+tY6gbK3zKPi1Sy7SBBafg4=",
|
"random": "zja3MLZ8WGSfsQRtPV75+tY6gbK3zKPi1Sy7SBBafg4=",
|
||||||
"session-id": "qPut2yMqXa9zGLII/872SQ3d4Tfqo0uoDb7tpkRfBnA=",
|
"sessionId": "qPut2yMqXa9zGLII/872SQ3d4Tfqo0uoDb7tpkRfBnA=",
|
||||||
"host": "storage.googleapis.com",
|
"host": "storage.googleapis.com",
|
||||||
"cipher-suite": 4867,
|
"cipherSuite": 4867,
|
||||||
"full": "AQAB/AMDzja3MLZ8WGSfsQRtPV75+tY6gbK3zKPi1Sy7SBBafg4gqPut2yMqXa9zGLII/872SQ3d4Tfqo0uoDb7tpkRfBnAANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgXviLRAqAYJ8xOLdlcsUhldI4Xl0g/s9+y2Qrd8raPEgALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"full": "AQAB/AMDzja3MLZ8WGSfsQRtPV75+tY6gbK3zKPi1Sy7SBBafg4gqPut2yMqXa9zGLII/872SQ3d4Tfqo0uoDb7tpkRfBnAANBMDEwETAsAswCvAJMAjwArACcypwDDAL8AowCfAFMATzKgAnQCcAD0APAA1AC/ACMASAAoBAAF//wEAAQAAAAAbABkAABZzdG9yYWdlLmdvb2dsZWFwaXMuY29tABcAAAANABgAFgQDCAQEAQUDAgMIBQgFBQEIBgYBAgEABQAFAQAAAAAzdAAAABIAAAAQADAALgJoMgVoMi0xNgVoMi0xNQVoMi0xNAhzcGR5LzMuMQZzcGR5LzMIaHR0cC8xLjEACwACAQAAMwAmACQAHQAgXviLRAqAYJ8xOLdlcsUhldI4Xl0g/s9+y2Qrd8raPEgALQACAQEAKwAJCAMEAwMDAgMBAAoACgAIAB0AFwAYABkAFQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
package obfuscated2
|
package obfuscated2
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// DefaultDC defines a number of the default DC to use. This value used
|
||||||
|
// only if a value from obfuscated2 handshake frame is 0 (default).
|
||||||
DefaultDC = 2
|
DefaultDC = 2
|
||||||
|
|
||||||
handshakeFrameLen = 64
|
handshakeFrameLen = 64
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ func (suite *ProxyTestSuite) TestHTTPSRequest() {
|
|||||||
|
|
||||||
jsonStruct := struct {
|
jsonStruct := struct {
|
||||||
Headers struct {
|
Headers struct {
|
||||||
TraceID string `json:"X-Amzn-Trace-Id"`
|
TraceID string `json:"X-Amzn-Trace-Id"` // nolint: tagliatelle
|
||||||
} `json:"headers"`
|
} `json:"headers"`
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ func (s Secret) MarshalText() ([]byte, error) {
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalText is to support text.Unmarshaller interface.
|
// UnmarshalText is to support text.Unmarshaller interface.
|
||||||
func (s *Secret) UnmarshalText(data []byte) error {
|
func (s *Secret) UnmarshalText(data []byte) error {
|
||||||
text := string(data)
|
text := string(data)
|
||||||
if text == "" {
|
if text == "" {
|
||||||
|
|||||||
@@ -54,7 +54,13 @@ const (
|
|||||||
// When circuit breaker is closed, it clears an error states each
|
// When circuit breaker is closed, it clears an error states each
|
||||||
// ProxyDialerResetFailuresTimeout.
|
// ProxyDialerResetFailuresTimeout.
|
||||||
ProxyDialerOpenThreshold = 5
|
ProxyDialerOpenThreshold = 5
|
||||||
|
|
||||||
|
// ProxyDialerHalfOpenTimeout defines a halfopen timeout for circuit
|
||||||
|
// breaker.
|
||||||
ProxyDialerHalfOpenTimeout = time.Minute
|
ProxyDialerHalfOpenTimeout = time.Minute
|
||||||
|
|
||||||
|
// ProxyDialerResetFailuresTimeout defines a timeout for resetting a
|
||||||
|
// failure.
|
||||||
ProxyDialerResetFailuresTimeout = 10 * time.Second
|
ProxyDialerResetFailuresTimeout = 10 * time.Second
|
||||||
|
|
||||||
// DefaultDOHHostname defines a default IP address for DOH host.
|
// DefaultDOHHostname defines a default IP address for DOH host.
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ func (suite *NetworkTestSuite) TestLocalHTTPRequest() {
|
|||||||
|
|
||||||
jsonStruct := struct {
|
jsonStruct := struct {
|
||||||
Headers struct {
|
Headers struct {
|
||||||
UserAgent []string `json:"User-Agent"`
|
UserAgent []string `json:"User-Agent"` // nolint: tagliatelle
|
||||||
} `json:"headers"`
|
} `json:"headers"`
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ func (suite *NetworkTestSuite) TestRealHTTPRequest() {
|
|||||||
|
|
||||||
jsonStruct := struct {
|
jsonStruct := struct {
|
||||||
Headers struct {
|
Headers struct {
|
||||||
UserAgent string `json:"User-Agent"`
|
UserAgent string `json:"User-Agent"` // nolint: tagliatelle
|
||||||
} `json:"headers"`
|
} `json:"headers"`
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,11 @@ const (
|
|||||||
|
|
||||||
// TagIPFamily defines a name of the 'ip_family' tag and all values.
|
// TagIPFamily defines a name of the 'ip_family' tag and all values.
|
||||||
TagIPFamily = "ip_family"
|
TagIPFamily = "ip_family"
|
||||||
|
|
||||||
|
// TagIPFamilyIPv4 defines a value of 'ip_family' of IPv4.
|
||||||
TagIPFamilyIPv4 = "ipv4"
|
TagIPFamilyIPv4 = "ipv4"
|
||||||
|
|
||||||
|
// TagIPFamilyIPv6 defines a value of 'ip_family' of IPv6.
|
||||||
TagIPFamilyIPv6 = "ipv6"
|
TagIPFamilyIPv6 = "ipv6"
|
||||||
|
|
||||||
// TagTelegramIP defines a name of the 'telegram_ip' tag.
|
// TagTelegramIP defines a name of the 'telegram_ip' tag.
|
||||||
@@ -102,6 +106,12 @@ const (
|
|||||||
|
|
||||||
// TagDirection defines a name of the 'direction' tag.
|
// TagDirection defines a name of the 'direction' tag.
|
||||||
TagDirection = "direction"
|
TagDirection = "direction"
|
||||||
|
|
||||||
|
// TagDirectionToClient defines that traffic is sent from Telegram to a
|
||||||
|
// client.
|
||||||
TagDirectionToClient = "to_client"
|
TagDirectionToClient = "to_client"
|
||||||
|
|
||||||
|
// TagDirectionFromClient defines that traffic is sent from a client to
|
||||||
|
// Telegram.
|
||||||
TagDirectionFromClient = "from_client"
|
TagDirectionFromClient = "from_client"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user