mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2024-12-30 02:37:01 +00:00
Update lsof.go
This commit is contained in:
+29
-4
@@ -11,14 +11,39 @@ var (
|
||||
ErrNotImplemented = errors.New("not implemented")
|
||||
)
|
||||
|
||||
func isLocalIP(ip net.IP) bool {
|
||||
interfaces, _ := net.Interfaces()
|
||||
// all ip addresses
|
||||
for _, i := range interfaces {
|
||||
addrs, _ := i.Addrs()
|
||||
for _, addr := range addrs {
|
||||
var ifIP net.IP
|
||||
switch v := addr.(type) {
|
||||
case *net.IPNet:
|
||||
ifIP = v.IP
|
||||
case *net.IPAddr:
|
||||
ifIP = v.IP
|
||||
}
|
||||
if ifIP != nil && ip.Equal(ifIP) {
|
||||
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
|
||||
localIP, localPort, _ := net.SplitHostPort(addr.String())
|
||||
ip := net.ParseIP(localIP)
|
||||
// ignore non-local IP
|
||||
if ip.IsUnspecified() || ip.IsLoopback() || isLocalIP(ip) {
|
||||
port, _ := strconv.Atoi(localPort)
|
||||
if cmd, _ := GetCommandNameBySocket(addr.Network(), localIP, uint16(port)); cmd != "" {
|
||||
process = cmd
|
||||
}
|
||||
}
|
||||
}
|
||||
return process
|
||||
|
||||
Reference in New Issue
Block a user