Skip to content

Commit 2494e5e

Browse files
committed
add domains model
1 parent 6af6817 commit 2494e5e

File tree

7 files changed

+267
-5
lines changed

7 files changed

+267
-5
lines changed

HISTORY.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## v0.1.16 add domains mode
2+
3+
- add domains mode to extend domains from domain, through certs ```./fofa domains -s 1000 -withCount baidu.com```
4+
15
## v0.1.15 update fixUrl
26

37
- support redis/socks5/mysql ```./fofa --fixUrl --size 1000 --fields host 'protocol=socks5 || protocol=redis'```

README.md

+27-1
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,31 @@ port=23455
190190
2023/08/09 10:05:37 size: 499/499, 100.00%
191191
```
192192

193+
### Domains
194+
195+
- domain subcommand 主要用于最简单的拓线
196+
197+
add domains mode to extend domains from domain, through certs
198+
```shell
199+
fofa domains -s 1000 -withCount baidu.com
200+
baidu.com 660
201+
dwz.cn 620
202+
dlnel.com 614
203+
bcehost.com 614
204+
bdstatic.com 614
205+
......
206+
......
207+
```
208+
209+
withCount mean with domain count value, you can also use `-uniqByIP` to uniq by ip:
210+
```shell
211+
fofa domains -s 1000 -withCount -uniqByIP baidu.com
212+
baidu.com 448
213+
dwz.cn 410
214+
aipage.cn 406
215+
216+
```
217+
193218
### Utils
194219

195220
- random subcommand
@@ -261,7 +286,8 @@ every 500ms generate one line, never stop
261286
- ☑ stats
262287
- ☑ icon
263288
- ☐ web
264-
- dump https://en.fofa.info/api/batches_pages large-scale data retrieval
289+
- ☑ dump https://en.fofa.info/api/batches_pages large-scale data retrieval
290+
- ☑ domains
265291
- ☑ Terminal color
266292
- ☑ Global Config
267293
- ☑ fofaURL

cmd/fofa/cmd/cmd.go

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ var GlobalCommands = []*cli.Command{
2626
randomCmd,
2727
hostCmd,
2828
dumpCmd,
29+
domainsCmd,
2930
}
3031

3132
// IsValidCommand valid command name

cmd/fofa/cmd/domains.go

+158
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
package cmd
2+
3+
import (
4+
"errors"
5+
"fmt"
6+
"github.com/LubyRuffy/gofofa"
7+
"github.com/urfave/cli/v2"
8+
"github.com/weppos/publicsuffix-go/publicsuffix"
9+
"io"
10+
"log"
11+
"os"
12+
"slices"
13+
"sort"
14+
"strings"
15+
)
16+
17+
var (
18+
withCount = false
19+
)
20+
21+
// domains subcommand
22+
var domainsCmd = &cli.Command{
23+
Name: "domains",
24+
Usage: "extend domains from a domain",
25+
UseShortOptionHandling: true,
26+
Flags: []cli.Flag{
27+
&cli.StringFlag{
28+
Name: "outFile",
29+
Aliases: []string{"o"},
30+
Usage: "if not set, wirte to stdout",
31+
Destination: &outFile,
32+
},
33+
&cli.IntFlag{
34+
Name: "size",
35+
Aliases: []string{"s"},
36+
Value: 100,
37+
Usage: "if DeductModeFree set, select free limit size automatically",
38+
Destination: &size,
39+
},
40+
&cli.StringFlag{
41+
Name: "deductMode",
42+
Value: "DeductModeFree",
43+
Usage: "DeductModeFree or DeductModeFCoin",
44+
Destination: &deductMode,
45+
},
46+
&cli.BoolFlag{
47+
Name: "full",
48+
Value: false,
49+
Usage: "search result for over a year",
50+
Destination: &full,
51+
},
52+
&cli.BoolFlag{
53+
Name: "uniqByIP",
54+
Value: false,
55+
Usage: "uniq by ip",
56+
Destination: &uniqByIP,
57+
},
58+
&cli.BoolFlag{
59+
Name: "withCount",
60+
Value: false,
61+
Usage: "domain with count",
62+
Destination: &withCount,
63+
},
64+
},
65+
Action: DomainsAction,
66+
}
67+
68+
type kv struct {
69+
Key string
70+
Value int
71+
}
72+
73+
func sortByValue(m map[string]int) []kv {
74+
pairs := make([]kv, 0, len(m))
75+
for k, v := range m {
76+
pairs = append(pairs, kv{k, v})
77+
}
78+
sort.Slice(pairs, func(i, j int) bool {
79+
return pairs[i].Value > pairs[j].Value
80+
})
81+
return pairs
82+
}
83+
84+
// DomainsAction extend domains action
85+
func DomainsAction(ctx *cli.Context) error {
86+
// valid same config
87+
for _, arg := range ctx.Args().Slice() {
88+
if arg[0] == '-' {
89+
return errors.New(fmt.Sprintln("there is args after fofa query:", arg))
90+
}
91+
}
92+
93+
domain := ctx.Args().First()
94+
if len(domain) == 0 {
95+
return errors.New("domain cannot be empty")
96+
}
97+
98+
// gen output
99+
var outTo io.Writer
100+
if len(outFile) > 0 {
101+
var f *os.File
102+
var err error
103+
if f, err = os.Create(outFile); err != nil {
104+
return fmt.Errorf("create outFile %s failed: %w", outFile, err)
105+
}
106+
outTo = f
107+
defer f.Close()
108+
} else {
109+
outTo = os.Stdout
110+
}
111+
112+
// do search
113+
res, err := fofaCli.HostSearch(`domain="`+domain+`" && status_code="200" && cert.is_valid=true && cert.is_match=true`, size, []string{"certs_domains"}, gofofa.SearchOptions{
114+
Full: full,
115+
UniqByIP: uniqByIP,
116+
})
117+
if err != nil {
118+
return err
119+
}
120+
121+
domainMap := make(map[string]int)
122+
for _, hosts := range res {
123+
if hosts[0] == "" {
124+
continue
125+
}
126+
127+
ns := strings.Split(strings.ReplaceAll(hosts[0], "*", "www"), ",")
128+
var domains []string
129+
for _, hostname := range ns {
130+
// 提取有效的hostname
131+
domain, err := publicsuffix.Domain(hostname)
132+
if err != nil {
133+
log.Println("parse domain failed:", hostname)
134+
}
135+
136+
if domain == "" {
137+
continue
138+
}
139+
140+
if !slices.Contains(domains, domain) {
141+
domains = append(domains, domain)
142+
143+
domainMap[domain]++
144+
}
145+
}
146+
}
147+
148+
// output
149+
for _, kv := range sortByValue(domainMap) {
150+
if withCount {
151+
outTo.Write([]byte(fmt.Sprintf("%s\t%d\n", kv.Key, kv.Value)))
152+
} else {
153+
outTo.Write([]byte(kv.Key + "\n"))
154+
}
155+
156+
}
157+
return nil
158+
}

cmd/fofa/main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
)
1010

1111
var (
12-
version = "v0.1.15"
12+
version = "v0.1.16"
1313
commit = "none"
1414
date = "unknown"
1515
builtBy = "unknown" // goreleaser fill
@@ -27,7 +27,7 @@ func main() {
2727
Authors: []*cli.Author{
2828
{
2929
Name: "LubyRuffy",
30-
Email: "LubyRuffy@gmail.com",
30+
Email: "lubyruffy@gmail.com",
3131
},
3232
},
3333
Flags: cmd.GlobalOptions,

go.mod

+4-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/twmb/murmur3 v1.1.6
1111
github.com/urfave/cli/v2 v2.6.0
1212
github.com/vincent-petithory/dataurl v1.0.0
13-
golang.org/x/net v0.0.0-20220517181318-183a9ca12b87
13+
golang.org/x/net v0.12.0
1414
)
1515

1616
require (
@@ -22,7 +22,9 @@ require (
2222
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
2323
github.com/pmezard/go-difflib v1.0.0 // indirect
2424
github.com/russross/blackfriday/v2 v2.1.0 // indirect
25-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
25+
github.com/weppos/publicsuffix-go v0.30.1 // indirect
26+
golang.org/x/sys v0.10.0 // indirect
27+
golang.org/x/text v0.11.0 // indirect
2628
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect
2729
gopkg.in/yaml.v3 v3.0.0-20210106172901-c476de37821d // indirect
2830
)

go.sum

+71
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
2+
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
3+
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
4+
github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
15
github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU=
26
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
37
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@@ -6,6 +10,15 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
610
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
711
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
812
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
13+
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
14+
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
15+
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
16+
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
17+
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
18+
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
19+
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
20+
github.com/google/go-github/v50 v50.2.0/go.mod h1:VBY8FB6yPIjrtKhozXv4FQupxKLS6H4m6xFZlT43q8Q=
21+
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
922
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
1023
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
1124
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -35,15 +48,73 @@ github.com/urfave/cli/v2 v2.6.0 h1:yj2Drkflh8X/zUrkWlWlUjZYHyWN7WMmpVxyxXIUyv8=
3548
github.com/urfave/cli/v2 v2.6.0/go.mod h1:oDzoM7pVwz6wHn5ogWgFUU1s4VJayeQS+aEZDqXIEJs=
3649
github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8AbShPRpg2CI=
3750
github.com/vincent-petithory/dataurl v1.0.0/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U=
51+
github.com/weppos/publicsuffix-go v0.30.1 h1:8q+QwBS1MY56Zjfk/50ycu33NN8aa1iCCEQwo/71Oos=
52+
github.com/weppos/publicsuffix-go v0.30.1/go.mod h1:s41lQh6dIsDWIC1OWh7ChWJXLH0zkJ9KHZVqA7vHyuQ=
53+
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
54+
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
55+
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
56+
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
57+
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
58+
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
59+
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
60+
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
61+
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
62+
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
3863
golang.org/x/net v0.0.0-20220517181318-183a9ca12b87 h1:cCR+9mKLOGyX4Zx+uBZDXEDAQsvKQ/XbW4vreG5v1jU=
3964
golang.org/x/net v0.0.0-20220517181318-183a9ca12b87/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
65+
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
66+
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
67+
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
68+
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
69+
golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
70+
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
71+
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
72+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
73+
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
74+
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
75+
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
4076
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
4177
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
4278
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
79+
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
80+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
4381
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
4482
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
83+
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
4584
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
4685
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
86+
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
87+
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
88+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
89+
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
90+
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
91+
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
92+
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
93+
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
94+
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
95+
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
96+
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
97+
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
98+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
99+
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
100+
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
101+
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
102+
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
103+
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
104+
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
105+
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
106+
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
107+
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
108+
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
109+
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
110+
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
111+
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
112+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
113+
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
114+
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
115+
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
116+
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
117+
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
47118
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
48119
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=
49120
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

0 commit comments

Comments
 (0)