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

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

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

@@ -1,6 +1,7 @@
1 1
 package config
2 2
 
3 3
 import (
4
+	"context"
4 5
 	"io/ioutil"
5 6
 	"net"
6 7
 	"net/http"
@@ -9,16 +10,28 @@ import (
9 10
 	"github.com/juju/errors"
10 11
 )
11 12
 
13
+const ifconfigAddress = "https://ifconfig.co/ip"
14
+
12 15
 func getGlobalIPv4() (net.IP, error) {
13
-	return fetchIP("https://v4.ifconfig.co/ip")
16
+	return fetchIP("tcp4")
14 17
 }
15 18
 
16 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 35
 	if err != nil {
23 36
 		return nil, err
24 37
 	}

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