From d1690dcadf16a704a61cc3a49a2b83c0e14d1856 Mon Sep 17 00:00:00 2001 From: Jason Date: Sun, 1 Sep 2019 15:47:26 +0800 Subject: [PATCH] Update lsof.go --- common/lsof/lsof.go | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/common/lsof/lsof.go b/common/lsof/lsof.go index c6d07bd..8d6300a 100644 --- a/common/lsof/lsof.go +++ b/common/lsof/lsof.go @@ -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