Update lsof.go

This commit is contained in:
Jason
2019-09-01 15:47:26 +08:00
parent ecaf1d632a
commit d1690dcadf

View File

@@ -11,14 +11,43 @@ var (
ErrNotImplemented = errors.New("not implemented")
)
func isLocalIP(host string) bool {
interfaces, err := net.Interfaces()
if err != nil {
return false
}
// all ip addresses
for _, i := range interfaces {
addrs, err := i.Addrs()
if err != nil {
break
}
for _, addr := range addrs {
var ip net.IP
switch v := addr.(type) {
case *net.IPNet:
ip = v.IP
case *net.IPAddr:
ip = v.IP
}
if ip != nil && host == ip.String() {
return true
}
}
}
return false
}
func GetProcessName(addr net.Addr) string {
// set default value
var process = "N/A"
if addr != nil {
localHost, localPortStr, _ := net.SplitHostPort(addr.String())
localPortInt, _ := strconv.Atoi(localPortStr)
if cmd, _ := GetCommandNameBySocket(addr.Network(), localHost, uint16(localPortInt)); cmd != "" {
process = cmd
if isLocalIP(localHost) {
localPortInt, _ := strconv.Atoi(localPortStr)
if cmd, _ := GetCommandNameBySocket(addr.Network(), localHost, uint16(localPortInt)); cmd != "" {
process = cmd
}
}
}
return process