Просмотр исходного кода

Merge pull request #30 from 9seconds/ipv6-fix

Fix ipv6/ipv4 name resolution
tags/0.11
Sergey Arkhipov 7 лет назад
Родитель
Сommit
6253c21615
Аккаунт пользователя с таким Email не найден
2 измененных файлов: 25 добавлений и 12 удалений
  1. 8
    8
      Gopkg.lock
  2. 17
    4
      config/global_ips.go

+ 8
- 8
Gopkg.lock Просмотреть файл

3
 
3
 
4
 [[projects]]
4
 [[projects]]
5
   branch = "master"
5
   branch = "master"
6
-  digest = "1:45a787c1adea69a03a5384865b307c7a72bb28bd5844bd57679d889a726a588b"
6
+  digest = "1:315c5f2f60c76d89b871c73f9bd5fe689cad96597afd50fb9992228ef80bdd34"
7
   name = "github.com/alecthomas/template"
7
   name = "github.com/alecthomas/template"
8
   packages = [
8
   packages = [
9
     ".",
9
     ".",
46
 
46
 
47
 [[projects]]
47
 [[projects]]
48
   branch = "master"
48
   branch = "master"
49
-  digest = "1:70107cf7ee5eb9e3c3dabe65bcb220bff22ee42e32d9b7fca988e16b8727cacc"
49
+  digest = "1:53bd4347b151fcbedcdda527f7ebf4924f0e21d672131812f857175d8c7a1051"
50
   name = "github.com/juju/errors"
50
   name = "github.com/juju/errors"
51
   packages = ["."]
51
   packages = ["."]
52
   pruneopts = "UT"
52
   pruneopts = "UT"
53
-  revision = "c7d06af17c68cd34c835053720b21f6549d9b0ee"
53
+  revision = "812b06ada1776ad4dd95d575e18ffffe3a9ac34a"
54
 
54
 
55
 [[projects]]
55
 [[projects]]
56
   digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe"
56
   digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe"
93
   version = "v1.1.0"
93
   version = "v1.1.0"
94
 
94
 
95
 [[projects]]
95
 [[projects]]
96
-  digest = "1:e6d865f90ef1178c14bdb49ea9f244bfcb28c06ea9773dc077492032632de0b8"
96
+  digest = "1:d9a420eae5f76973feeb733fbf58f6a89173255b63b27a7ae4b2124a73dc6c5b"
97
   name = "go.uber.org/zap"
97
   name = "go.uber.org/zap"
98
   packages = [
98
   packages = [
99
     ".",
99
     ".",
104
     "zapcore",
104
     "zapcore",
105
   ]
105
   ]
106
   pruneopts = "UT"
106
   pruneopts = "UT"
107
-  revision = "eeedf312bc6c57391d84767a4cd413f02a917974"
108
-  version = "v1.8.0"
107
+  revision = "4d45f9617f7d90f7a663ff21c7a4321dbe78098b"
108
+  version = "v1.9.0"
109
 
109
 
110
 [[projects]]
110
 [[projects]]
111
   branch = "master"
111
   branch = "master"
112
-  digest = "1:656046288ed20c53157025a0915f176cad9340ac515501c427806a6f76023d75"
112
+  digest = "1:becb2131aece71c64ebca5ddfd38cf631784fbb3a678d73ead3b42107c9f41ce"
113
   name = "golang.org/x/net"
113
   name = "golang.org/x/net"
114
   packages = [
114
   packages = [
115
     "bpf",
115
     "bpf",
118
     "ipv4",
118
     "ipv4",
119
   ]
119
   ]
120
   pruneopts = "UT"
120
   pruneopts = "UT"
121
-  revision = "d0887baf81f4598189d4e12a37c6da86f0bba4d0"
121
+  revision = "3673e40ba22529d22c3fd7c93e97b0ce50fa7bdd"
122
 
122
 
123
 [[projects]]
123
 [[projects]]
124
   digest = "1:c06d9e11d955af78ac3bbb26bd02e01d2f61f689e1a3bce2ef6fb683ef8a7f2d"
124
   digest = "1:c06d9e11d955af78ac3bbb26bd02e01d2f61f689e1a3bce2ef6fb683ef8a7f2d"

+ 17
- 4
config/global_ips.go Просмотреть файл

1
 package config
1
 package config
2
 
2
 
3
 import (
3
 import (
4
+	"context"
4
 	"io/ioutil"
5
 	"io/ioutil"
5
 	"net"
6
 	"net"
6
 	"net/http"
7
 	"net/http"
9
 	"github.com/juju/errors"
10
 	"github.com/juju/errors"
10
 )
11
 )
11
 
12
 
13
+const ifconfigAddress = "https://ifconfig.co/ip"
14
+
12
 func getGlobalIPv4() (net.IP, error) {
15
 func getGlobalIPv4() (net.IP, error) {
13
-	return fetchIP("https://v4.ifconfig.co/ip")
16
+	return fetchIP("tcp4")
14
 }
17
 }
15
 
18
 
16
 func getGlobalIPv6() (net.IP, error) {
19
 func getGlobalIPv6() (net.IP, error) {
17
-	return fetchIP("https://v6.ifconfig.co/ip")
20
+	return fetchIP("tcp6")
18
 }
21
 }
19
 
22
 
20
-func fetchIP(url string) (net.IP, error) {
21
-	resp, err := http.Get(url)
23
+func fetchIP(network string) (net.IP, error) {
24
+	dialer := &net.Dialer{DualStack: false}
25
+	client := &http.Client{
26
+		Jar: nil,
27
+		Transport: &http.Transport{
28
+			DialContext: func(ctx context.Context, _, addr string) (net.Conn, error) {
29
+				return dialer.DialContext(ctx, network, addr)
30
+			},
31
+		},
32
+	}
33
+
34
+	resp, err := client.Get(ifconfigAddress)
22
 	if err != nil {
35
 	if err != nil {
23
 		return nil, err
36
 		return nil, err
24
 	}
37
 	}

Загрузка…
Отмена
Сохранить