forked from nxenon/port-scanner-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.go
72 lines (55 loc) · 1.57 KB
/
utils.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
package main
import (
"fmt"
"net"
"strconv"
"strings"
)
func nslookup(host string) ([]string, error) {
ips, err := net.LookupIP(host)
if err != nil {
return nil, fmt.Errorf(`error while looking up host "%s" -> %v`, host, err.Error())
}
ipStrings := make([]string, len(ips))
for i, ip := range ips {
ipStrings[i] = ip.String()
}
return ipStrings, nil
}
func getPortsList(portVar string) ([]int, error) {
// if port argument is like : 22,80,23
if strings.Contains(portVar, ",") {
portsList := strings.Split(portVar, ",")
portsIntsList := make([]int, len(portsList))
for p := range portsList {
port, err := strconv.Atoi(portsList[p])
if err != nil {
return nil, fmt.Errorf("invalid Port : %s", portsList[p])
}
portsIntsList[p] = port
}
return portsIntsList, nil
} else if strings.Contains(portVar, "-") {
// if port argument is like : 1-1024
portMinAndMax := strings.Split(portVar, "-")
portMin, err := strconv.Atoi(portMinAndMax[0])
if err != nil {
return nil, fmt.Errorf("invalid Port Min Range : %s", portMinAndMax[0])
}
portMax, err := strconv.Atoi(portMinAndMax[1])
if err != nil {
return nil, fmt.Errorf("invalid Port Max Range : %s", portMinAndMax[1])
}
var portsTempList []int
for pMin := portMin; pMin <= portMax; pMin++ {
portsTempList = append(portsTempList, pMin)
}
return portsTempList, nil
}
// if port is single number like : 80
port, err := strconv.Atoi(portVar) // check if port is correct (int)
if err != nil {
return nil, fmt.Errorf("invalid Port : %s", portVar)
}
return []int{port}, nil
}