Преглед изворни кода

Minor formatting issues

tags/v2.0.0-rc1
9seconds пре 5 година
родитељ
комит
c0ab254acf

+ 1
- 1
.golangci.toml Прегледај датотеку

10
 
10
 
11
 [linters]
11
 [linters]
12
 enable-all = true
12
 enable-all = true
13
-disable = ["gochecknoglobals", "gas", "gomnd", "goerr113", "exhaustivestruct"]
13
+disable = ["gochecknoglobals", "gas", "goerr113", "exhaustivestruct"]

+ 2
- 8
cli/access.go Прегледај датотеку

44
 		return fmt.Errorf("cannot init config: %w", err)
44
 		return fmt.Errorf("cannot init config: %w", err)
45
 	}
45
 	}
46
 
46
 
47
-	wg := &sync.WaitGroup{}
48
 	resp := &accessResponse{}
47
 	resp := &accessResponse{}
49
 	resp.Secret.Base64 = c.conf.Secret.Base64()
48
 	resp.Secret.Base64 = c.conf.Secret.Base64()
50
 	resp.Secret.Hex = c.conf.Secret.Hex()
49
 	resp.Secret.Hex = c.conf.Secret.Hex()
51
 
50
 
52
-	wg.Add(2)
51
+	wg := &sync.WaitGroup{}
52
+	wg.Add(2) // nolint: gomnd
53
 
53
 
54
 	go func() {
54
 	go func() {
55
 		defer wg.Done()
55
 		defer wg.Done()
56
 
56
 
57
 		ip := c.conf.Network.PublicIP.IPv4.Value(nil)
57
 		ip := c.conf.Network.PublicIP.IPv4.Value(nil)
58
-
59
 		if ip == nil {
58
 		if ip == nil {
60
 			ip = c.getIP("tcp4")
59
 			ip = c.getIP("tcp4")
61
 		}
60
 		}
71
 		defer wg.Done()
70
 		defer wg.Done()
72
 
71
 
73
 		ip := c.conf.Network.PublicIP.IPv4.Value(nil)
72
 		ip := c.conf.Network.PublicIP.IPv4.Value(nil)
74
-
75
 		if ip == nil {
73
 		if ip == nil {
76
 			ip = c.getIP("tcp6")
74
 			ip = c.getIP("tcp6")
77
 		}
75
 		}
86
 	wg.Wait()
84
 	wg.Wait()
87
 
85
 
88
 	encoder := json.NewEncoder(os.Stdout)
86
 	encoder := json.NewEncoder(os.Stdout)
89
-
90
 	encoder.SetEscapeHTML(false)
87
 	encoder.SetEscapeHTML(false)
91
 	encoder.SetIndent("", "  ")
88
 	encoder.SetIndent("", "  ")
92
 
89
 
137
 	}
134
 	}
138
 
135
 
139
 	values := url.Values{}
136
 	values := url.Values{}
140
-
141
 	values.Set("server", ip.String())
137
 	values.Set("server", ip.String())
142
 	values.Set("port", strconv.Itoa(int(c.conf.BindTo.PortValue(0))))
138
 	values.Set("port", strconv.Itoa(int(c.conf.BindTo.PortValue(0))))
143
 
139
 
163
 			RawQuery: urlQuery,
159
 			RawQuery: urlQuery,
164
 		}).String(),
160
 		}).String(),
165
 	}
161
 	}
166
-
167
 	rv.TgQrCode = c.makeQRCode(rv.TgURL)
162
 	rv.TgQrCode = c.makeQRCode(rv.TgURL)
168
 	rv.TmeQrCode = c.makeQRCode(rv.TmeURL)
163
 	rv.TmeQrCode = c.makeQRCode(rv.TmeURL)
169
 
164
 
172
 
167
 
173
 func (c *Access) makeQRCode(data string) string {
168
 func (c *Access) makeQRCode(data string) string {
174
 	values := url.Values{}
169
 	values := url.Values{}
175
-
176
 	values.Set("qzone", "4")
170
 	values.Set("qzone", "4")
177
 	values.Set("format", "svg")
171
 	values.Set("format", "svg")
178
 	values.Set("data", data)
172
 	values.Set("data", data)

+ 6
- 8
config/config.go Прегледај датотеку

122
 
122
 
123
 func Parse(rawData []byte) (*Config, error) {
123
 func Parse(rawData []byte) (*Config, error) {
124
 	rawConf := &configRaw{}
124
 	rawConf := &configRaw{}
125
-
126
-	if err := toml.Unmarshal(rawData, rawConf); err != nil {
127
-		return nil, fmt.Errorf("cannot parse toml config: %w", err)
128
-	}
129
-
130
 	jsonBuf := &bytes.Buffer{}
125
 	jsonBuf := &bytes.Buffer{}
131
-	jsonEncoder := json.NewEncoder(jsonBuf)
126
+	conf := &Config{}
132
 
127
 
128
+	jsonEncoder := json.NewEncoder(jsonBuf)
133
 	jsonEncoder.SetEscapeHTML(false)
129
 	jsonEncoder.SetEscapeHTML(false)
134
 	jsonEncoder.SetIndent("", "")
130
 	jsonEncoder.SetIndent("", "")
135
 
131
 
132
+	if err := toml.Unmarshal(rawData, rawConf); err != nil {
133
+		return nil, fmt.Errorf("cannot parse toml config: %w", err)
134
+	}
135
+
136
 	if err := jsonEncoder.Encode(rawConf); err != nil {
136
 	if err := jsonEncoder.Encode(rawConf); err != nil {
137
 		return nil, fmt.Errorf("cannot dump into interim format: %w", err)
137
 		return nil, fmt.Errorf("cannot dump into interim format: %w", err)
138
 	}
138
 	}
139
 
139
 
140
-	conf := &Config{}
141
-
142
 	if err := json.NewDecoder(jsonBuf).Decode(conf); err != nil {
140
 	if err := json.NewDecoder(jsonBuf).Decode(conf); err != nil {
143
 		return nil, fmt.Errorf("cannot parse final config: %w", err)
141
 		return nil, fmt.Errorf("cannot parse final config: %w", err)
144
 	}
142
 	}

+ 3
- 1
config/type_error_rate.go Прегледај датотеку

5
 	"strconv"
5
 	"strconv"
6
 )
6
 )
7
 
7
 
8
+const typeErrorRateIgnoreLess = 1e-8
9
+
8
 type TypeErrorRate struct {
10
 type TypeErrorRate struct {
9
 	value float64
11
 	value float64
10
 }
12
 }
33
 }
35
 }
34
 
36
 
35
 func (c TypeErrorRate) Value(defaultValue float64) float64 {
37
 func (c TypeErrorRate) Value(defaultValue float64) float64 {
36
-	if c.value < 1e-8 {
38
+	if c.value < typeErrorRateIgnoreLess {
37
 		return defaultValue
39
 		return defaultValue
38
 	}
40
 	}
39
 
41
 

+ 0
- 1
config/type_metric_prefix.go Прегледај датотеку

15
 	}
15
 	}
16
 
16
 
17
 	prefix := string(data)
17
 	prefix := string(data)
18
-
19
 	if ok, err := regexp.MatchString("^[a-z0-9]+$", prefix); !ok || err != nil {
18
 	if ok, err := regexp.MatchString("^[a-z0-9]+$", prefix); !ok || err != nil {
20
 		return fmt.Errorf("incorrect metric prefix: %s", prefix)
19
 		return fmt.Errorf("incorrect metric prefix: %s", prefix)
21
 	}
20
 	}

+ 0
- 2
mtglib/network/circuit_breaker.go Прегледај датотеку

125
 	}
125
 	}
126
 
126
 
127
 	c.failuresCount = 0
127
 	c.failuresCount = 0
128
-
129
 	atomic.StoreUint32(&c.halfOpenAttempts, 0)
128
 	atomic.StoreUint32(&c.halfOpenAttempts, 0)
130
 	atomic.StoreUint32(&c.state, state)
129
 	atomic.StoreUint32(&c.state, state)
131
 }
130
 }
158
 
157
 
159
 func (c *circuitBreakerDialer) stopTimer(timerRef **time.Timer) {
158
 func (c *circuitBreakerDialer) stopTimer(timerRef **time.Timer) {
160
 	timer := *timerRef
159
 	timer := *timerRef
161
-
162
 	if timer == nil {
160
 	if timer == nil {
163
 		return
161
 		return
164
 	}
162
 	}

+ 0
- 2
mtglib/network/circuit_breaker_internal_test.go Прегледај датотеку

51
 		Return(suite.connMock, nil)
51
 		Return(suite.connMock, nil)
52
 
52
 
53
 	wg := &sync.WaitGroup{}
53
 	wg := &sync.WaitGroup{}
54
-
55
 	wg.Add(5)
54
 	wg.Add(5)
56
 
55
 
57
 	go func() {
56
 	go func() {
126
 	time.Sleep(500 * time.Millisecond)
125
 	time.Sleep(500 * time.Millisecond)
127
 
126
 
128
 	conn, err := suite.d.DialContext(suite.ctx, "tcp", "127.0.0.2")
127
 	conn, err := suite.d.DialContext(suite.ctx, "tcp", "127.0.0.2")
129
-
130
 	suite.NoError(err)
128
 	suite.NoError(err)
131
 	suite.Equal("10.0.0.10:80", conn.RemoteAddr().String())
129
 	suite.Equal("10.0.0.10:80", conn.RemoteAddr().String())
132
 
130
 

+ 0
- 6
mtglib/network/default_test.go Прегледај датотеку

20
 	suite.HTTPServerTestSuite.SetupSuite()
20
 	suite.HTTPServerTestSuite.SetupSuite()
21
 
21
 
22
 	d, err := network.NewDefaultDialer(0, 0)
22
 	d, err := network.NewDefaultDialer(0, 0)
23
-
24
 	suite.NoError(err)
23
 	suite.NoError(err)
25
 
24
 
26
 	suite.d = d
25
 	suite.d = d
28
 
27
 
29
 func (suite *DefaultDialerTestSuite) TestNegativeTimeout() {
28
 func (suite *DefaultDialerTestSuite) TestNegativeTimeout() {
30
 	_, err := network.NewDefaultDialer(-1, 0)
29
 	_, err := network.NewDefaultDialer(-1, 0)
31
-
32
 	suite.Error(err)
30
 	suite.Error(err)
33
 }
31
 }
34
 
32
 
35
 func (suite *DefaultDialerTestSuite) TestNegativeBufferSize() {
33
 func (suite *DefaultDialerTestSuite) TestNegativeBufferSize() {
36
 	_, err := network.NewDefaultDialer(0, -1)
34
 	_, err := network.NewDefaultDialer(0, -1)
37
-
38
 	suite.Error(err)
35
 	suite.Error(err)
39
 }
36
 }
40
 
37
 
42
 	_, err := suite.d.DialContext(context.Background(),
39
 	_, err := suite.d.DialContext(context.Background(),
43
 		"udp",
40
 		"udp",
44
 		suite.HTTPServerAddress())
41
 		suite.HTTPServerAddress())
45
-
46
 	suite.Error(err)
42
 	suite.Error(err)
47
 }
43
 }
48
 
44
 
50
 	_, err := suite.d.DialContext(context.Background(),
46
 	_, err := suite.d.DialContext(context.Background(),
51
 		"tcp",
47
 		"tcp",
52
 		suite.HTTPServerAddress()+suite.HTTPServerAddress())
48
 		suite.HTTPServerAddress()+suite.HTTPServerAddress())
53
-
54
 	suite.Error(err)
49
 	suite.Error(err)
55
 }
50
 }
56
 
51
 
58
 	conn, err := suite.d.DialContext(context.Background(),
53
 	conn, err := suite.d.DialContext(context.Background(),
59
 		"tcp",
54
 		"tcp",
60
 		suite.HTTPServerAddress())
55
 		suite.HTTPServerAddress())
61
-
62
 	suite.NoError(err)
56
 	suite.NoError(err)
63
 	suite.NotNil(conn)
57
 	suite.NotNil(conn)
64
 
58
 

+ 0
- 4
mtglib/network/load_balanced_socks5_test.go Прегледај датотеку

28
 
28
 
29
 func (suite *LoadBalancedSocks5TestSuite) SetupTest() {
29
 func (suite *LoadBalancedSocks5TestSuite) SetupTest() {
30
 	baseDialer, _ := network.NewDefaultDialer(0, 0)
30
 	baseDialer, _ := network.NewDefaultDialer(0, 0)
31
-
32
 	lbDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, []*url.URL{
31
 	lbDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, []*url.URL{
33
 		suite.MakeSocks5URL("user", "password"),
32
 		suite.MakeSocks5URL("user", "password"),
34
 		suite.MakeSocks5URL("user2", "password"),
33
 		suite.MakeSocks5URL("user2", "password"),
35
 	})
34
 	})
36
-
37
 	suite.NoError(err)
35
 	suite.NoError(err)
38
 
36
 
39
 	suite.httpClient = suite.MakeHTTPClient(lbDialer)
37
 	suite.httpClient = suite.MakeHTTPClient(lbDialer)
48
 	_, err := network.NewLoadBalancedSocks5Dialer(&DialerMock{}, []*url.URL{
46
 	_, err := network.NewLoadBalancedSocks5Dialer(&DialerMock{}, []*url.URL{
49
 		{Scheme: "http"},
47
 		{Scheme: "http"},
50
 	})
48
 	})
51
-
52
 	suite.Error(err)
49
 	suite.Error(err)
53
 }
50
 }
54
 
51
 
55
 func (suite *LoadBalancedSocks5TestSuite) TestCannotDial() {
52
 func (suite *LoadBalancedSocks5TestSuite) TestCannotDial() {
56
 	baseDialer := &DialerMock{}
53
 	baseDialer := &DialerMock{}
57
-
58
 	baseDialer.On("DialContext", mock.Anything, "tcp", "127.0.0.1:1080").
54
 	baseDialer.On("DialContext", mock.Anything, "tcp", "127.0.0.1:1080").
59
 		Times(network.ProxyDialerOpenThreshold).
55
 		Times(network.ProxyDialerOpenThreshold).
60
 		Return(&net.TCPConn{}, io.EOF)
56
 		Return(&net.TCPConn{}, io.EOF)

+ 0
- 1
mtglib/network/network.go Прегледај датотеку

49
 	}
49
 	}
50
 
50
 
51
 	var conn net.Conn
51
 	var conn net.Conn
52
-
53
 	for _, v := range ips {
52
 	for _, v := range ips {
54
 		conn, err = n.dialer.DialContext(ctx, protocol, net.JoinHostPort(v, port))
53
 		conn, err = n.dialer.DialContext(ctx, protocol, net.JoinHostPort(v, port))
55
 
54
 

+ 4
- 10
mtglib/network/proxy_dialer_internal_test.go Прегледај датотеку

22
 
22
 
23
 func (suite *ProxyDialerTestSuite) TestSetupDefaults() {
23
 func (suite *ProxyDialerTestSuite) TestSetupDefaults() {
24
 	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
24
 	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
25
-
26
 	suite.EqualValues(ProxyDialerOpenThreshold, d.openThreshold)
25
 	suite.EqualValues(ProxyDialerOpenThreshold, d.openThreshold)
27
 	suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
26
 	suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
28
 	suite.EqualValues(ProxyDialerResetFailuresTimeout, d.resetFailuresTimeout)
27
 	suite.EqualValues(ProxyDialerResetFailuresTimeout, d.resetFailuresTimeout)
30
 
29
 
31
 func (suite *ProxyDialerTestSuite) TestSetupValuesAllOk() {
30
 func (suite *ProxyDialerTestSuite) TestSetupValuesAllOk() {
32
 	query := url.Values{}
31
 	query := url.Values{}
33
-
34
 	query.Set("open_threshold", "30")
32
 	query.Set("open_threshold", "30")
35
 	query.Set("reset_failures_timeout", "1s")
33
 	query.Set("reset_failures_timeout", "1s")
36
 	query.Set("half_open_timeout", "2s")
34
 	query.Set("half_open_timeout", "2s")
37
-
38
 	suite.u.RawQuery = query.Encode()
35
 	suite.u.RawQuery = query.Encode()
39
-	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
40
 
36
 
37
+	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
41
 	suite.EqualValues(30, d.openThreshold)
38
 	suite.EqualValues(30, d.openThreshold)
42
 	suite.EqualValues(2*time.Second, d.halfOpenTimeout)
39
 	suite.EqualValues(2*time.Second, d.halfOpenTimeout)
43
 	suite.EqualValues(time.Second, d.resetFailuresTimeout)
40
 	suite.EqualValues(time.Second, d.resetFailuresTimeout)
51
 		param := v
48
 		param := v
52
 		suite.T().Run(v, func(t *testing.T) {
49
 		suite.T().Run(v, func(t *testing.T) {
53
 			query.Set("open_threshold", param)
50
 			query.Set("open_threshold", param)
54
-
55
 			suite.u.RawQuery = query.Encode()
51
 			suite.u.RawQuery = query.Encode()
56
-			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
57
 
52
 
53
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
58
 			assert.EqualValues(t, ProxyDialerOpenThreshold, d.openThreshold)
54
 			assert.EqualValues(t, ProxyDialerOpenThreshold, d.openThreshold)
59
 		})
55
 		})
60
 	}
56
 	}
68
 		param := v
64
 		param := v
69
 		suite.T().Run(v, func(t *testing.T) {
65
 		suite.T().Run(v, func(t *testing.T) {
70
 			query.Set("half_open_timeout", param)
66
 			query.Set("half_open_timeout", param)
71
-
72
 			suite.u.RawQuery = query.Encode()
67
 			suite.u.RawQuery = query.Encode()
73
-			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
74
 
68
 
69
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
75
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
70
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
76
 		})
71
 		})
77
 	}
72
 	}
85
 		param := v
80
 		param := v
86
 		suite.T().Run(v, func(t *testing.T) {
81
 		suite.T().Run(v, func(t *testing.T) {
87
 			query.Set("reset_failures_timeout", param)
82
 			query.Set("reset_failures_timeout", param)
88
-
89
 			suite.u.RawQuery = query.Encode()
83
 			suite.u.RawQuery = query.Encode()
90
-			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
91
 
84
 
85
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
92
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
86
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
93
 		})
87
 		})
94
 	}
88
 	}

+ 0
- 1
mtglib/secret.go Прегледај датотеку

31
 
31
 
32
 func (s *Secret) UnmarshalText(data []byte) error {
32
 func (s *Secret) UnmarshalText(data []byte) error {
33
 	text := string(data)
33
 	text := string(data)
34
-
35
 	if text == "" {
34
 	if text == "" {
36
 		return ErrSecretEmpty
35
 		return ErrSecretEmpty
37
 	}
36
 	}

+ 0
- 5
mtglib/secret_test.go Прегледај датотеку

32
 
32
 
33
 		suite.T().Run(name, func(t *testing.T) {
33
 		suite.T().Run(name, func(t *testing.T) {
34
 			parsed, err := mtglib.ParseSecret(param)
34
 			parsed, err := mtglib.ParseSecret(param)
35
-
36
 			assert.NoError(t, err)
35
 			assert.NoError(t, err)
37
 			assert.Equal(t, s.Key, parsed.Key)
36
 			assert.Equal(t, s.Key, parsed.Key)
38
 			assert.Equal(t, s.Host, parsed.Host)
37
 			assert.Equal(t, s.Host, parsed.Host)
39
 
38
 
40
 			newSecret := mtglib.Secret{}
39
 			newSecret := mtglib.Secret{}
41
-
42
 			assert.NoError(t, newSecret.UnmarshalText([]byte(param)))
40
 			assert.NoError(t, newSecret.UnmarshalText([]byte(param)))
43
 			assert.Equal(t, s.Key, newSecret.Key)
41
 			assert.Equal(t, s.Key, newSecret.Key)
44
 			assert.Equal(t, s.Host, newSecret.Host)
42
 			assert.Equal(t, s.Host, newSecret.Host)
67
 	copy(s.Key[:], secretData)
65
 	copy(s.Key[:], secretData)
68
 
66
 
69
 	data, err := json.Marshal(&s)
67
 	data, err := json.Marshal(&s)
70
-
71
 	suite.NoError(err)
68
 	suite.NoError(err)
72
 	suite.Equal(string(data), `"7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t"`)
69
 	suite.Equal(string(data), `"7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t"`)
73
 }
70
 }
87
 
84
 
88
 		suite.T().Run(param, func(t *testing.T) {
85
 		suite.T().Run(param, func(t *testing.T) {
89
 			_, err := mtglib.ParseSecret(param)
86
 			_, err := mtglib.ParseSecret(param)
90
-
91
 			assert.Error(t, err)
87
 			assert.Error(t, err)
92
 		})
88
 		})
93
 	}
89
 	}
97
 	generated := mtglib.GenerateSecret("google.com")
93
 	generated := mtglib.GenerateSecret("google.com")
98
 
94
 
99
 	parsed, err := mtglib.ParseSecret(generated.Hex())
95
 	parsed, err := mtglib.ParseSecret(generated.Hex())
100
-
101
 	suite.NoError(err)
96
 	suite.NoError(err)
102
 	suite.Equal(generated.Key, parsed.Key)
97
 	suite.Equal(generated.Key, parsed.Key)
103
 	suite.Equal(generated.Host, parsed.Host)
98
 	suite.Equal(generated.Host, parsed.Host)

Loading…
Откажи
Сачувај