-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathsearch.go
93 lines (72 loc) · 1.71 KB
/
search.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package main
import (
"encoding/csv"
"fmt"
"io"
"os"
"regexp"
"strings"
)
func readCsvCn(srcStr string, fp *os.File, outfile string) {
f, err := os.Create(outfile + ".txt")
checkErr(err)
db := csv.NewReader(fp)
for {
db, err := db.Read()
if err == io.EOF {
break
}
matchedCn, err := regexp.MatchString(strings.ToLower(srcStr),
strings.ToLower(db[2]))
checkErr(err)
if matchedCn == true {
fmt.Println(string(ColorGreen), db[0], "AS"+db[1], db[2])
_, err := f.WriteString(db[0] + "\n")
checkErr(err)
}
}
defer fp.Close()
}
func readCsvAsn(srcStr string, fp *os.File, outfile string) {
f, err := os.Create(outfile + ".txt")
checkErr(err)
db := csv.NewReader(fp)
for {
db, err := db.Read()
if err == io.EOF {
break
}
matchedCn, err := regexp.MatchString(strings.ToLower(srcStr),
strings.ToLower(db[1]))
checkErr(err)
if matchedCn == true {
fmt.Println(string(ColorGreen), db[0], "AS"+db[1], db[2])
_, err := f.WriteString(db[0] + "\n")
checkErr(err)
}
}
defer fp.Close()
}
func searchCn(srcStr string, mode string, outfile string) {
//colorGreen := "\033[32m"
if mode == "ipv4" {
file, err := os.Open("GeoLite2-ASN-Blocks-IPv4.csv")
checkErr(err)
readCsvCn(srcStr, file, outfile)
} else if mode == "ipv6" {
file, err := os.Open("GeoLite2-ASN-Blocks-IPv6.csv")
checkErr(err)
readCsvCn(srcStr, file, outfile)
}
}
func searchAsn(srcStr string, mode string, outfile string) {
if mode == "ipv4" {
file, err := os.Open("GeoLite2-ASN-Blocks-IPv4.csv")
checkErr(err)
readCsvAsn(srcStr, file, outfile)
} else if mode == "ipv6" {
file, err := os.Open("GeoLite2-ASN-Blocks-IPv6.csv")
checkErr(err)
readCsvAsn(srcStr, file, outfile)
}
}