mirror of
https://github.com/inspec/inspec
synced 2024-11-23 21:23:29 +00:00
fix remaining rubocop complaints
This commit is contained in:
parent
420aef7cb9
commit
94a286929f
1 changed files with 0 additions and 92 deletions
|
@ -138,7 +138,6 @@ end
|
||||||
# extracts udp and tcp ports from the lsof command
|
# extracts udp and tcp ports from the lsof command
|
||||||
class LsofPorts < PortsInfo
|
class LsofPorts < PortsInfo
|
||||||
attr_reader :lsof
|
attr_reader :lsof
|
||||||
<<<<<<< HEAD
|
|
||||||
|
|
||||||
def initialize(inspec, lsofpath = nil)
|
def initialize(inspec, lsofpath = nil)
|
||||||
@lsof = lsofpath || 'lsof'
|
@lsof = lsofpath || 'lsof'
|
||||||
|
@ -164,97 +163,6 @@ class LsofPorts < PortsInfo
|
||||||
protocol: ipv == 'ipv6' ? proto + '6' : proto,
|
protocol: ipv == 'ipv6' ? proto + '6' : proto,
|
||||||
process: cmd,
|
process: cmd,
|
||||||
pid: pid.to_i })
|
pid: pid.to_i })
|
||||||
=======
|
|
||||||
|
|
||||||
def initialize(inspec, lsofpath = nil)
|
|
||||||
@lsof = lsofpath || 'lsof'
|
|
||||||
super(inspec)
|
|
||||||
end
|
|
||||||
|
|
||||||
def info
|
|
||||||
ports = []
|
|
||||||
# -F p=pid, c=command, P=protocol name, t=type, n=internet addresses
|
|
||||||
# see 'OUTPUT FOR OTHER PROGRAMS' in LSOF(8)
|
|
||||||
lsof_cmd = inspec.command("#{@lsof} -nP -iTCP -iUDP -FpctPn")
|
|
||||||
return nil if lsof_cmd.exit_status.to_i != 0
|
|
||||||
|
|
||||||
# build this with formatted output (-F) from lsof
|
|
||||||
procs = {}
|
|
||||||
# procs = {
|
|
||||||
# '123:sshd' => [
|
|
||||||
# 'ipv4:tcp:22:127.0.0.1',
|
|
||||||
# 'ipv6:tcp:22:::1',
|
|
||||||
# 'ipv4:tcp:*',
|
|
||||||
# 'ipv6:tcp:*',
|
|
||||||
# ],
|
|
||||||
# '456:ntpd' => [
|
|
||||||
# 'ipv4:udp:123:*',
|
|
||||||
# 'ipv6:udp:123:*',
|
|
||||||
# ]
|
|
||||||
# }
|
|
||||||
proc_id = port_id = nil
|
|
||||||
pid = cmd = ipv = proto = port = host = nil
|
|
||||||
lsof_cmd.stdout.each_line do |line|
|
|
||||||
line.chomp!
|
|
||||||
key = line.slice!(0)
|
|
||||||
case key
|
|
||||||
when 'p'
|
|
||||||
proc_id = line
|
|
||||||
port_id = nil
|
|
||||||
when 'c'
|
|
||||||
proc_id += ':' + line
|
|
||||||
when 't'
|
|
||||||
port_id = line.downcase
|
|
||||||
when 'P'
|
|
||||||
port_id += ':' + line.downcase
|
|
||||||
when 'n'
|
|
||||||
src, dst = line.split('->')
|
|
||||||
|
|
||||||
# skip active comm streams
|
|
||||||
next if dst
|
|
||||||
|
|
||||||
host, port = /^(\S+):(\d+|\*)$/.match(src)[1,2]
|
|
||||||
|
|
||||||
# skip channels from port 0 - what does this mean?
|
|
||||||
next if port == '*'
|
|
||||||
|
|
||||||
# create new array stub if !exist?
|
|
||||||
procs[proc_id] = [] unless procs.key?(proc_id)
|
|
||||||
|
|
||||||
# change address '*' to zero
|
|
||||||
host = (port_id =~ /^ipv6:/) ? '[::]' : '0.0.0.0' if host == '*'
|
|
||||||
# entrust URI to scrub the host and port
|
|
||||||
begin
|
|
||||||
uri = URI("addr://#{host}:#{port}")
|
|
||||||
uri.host && uri.port
|
|
||||||
rescue Exception => e
|
|
||||||
warn "could not parse uri addr://#{host}:#{port} - #{e}"
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
# e.g. 'ipv4:tcp:22:127.0.0.1' or
|
|
||||||
# strip ipv6 squares for inspec
|
|
||||||
port_id += ':' + port + ':' + host.gsub(/^\[|\]$/, '')
|
|
||||||
|
|
||||||
# lsof will give us another port or it's done
|
|
||||||
procs[proc_id] << port_id
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# map to desired return struct
|
|
||||||
procs.each do |proc_id, port_ids|
|
|
||||||
pid, cmd = proc_id.split(':')
|
|
||||||
port_ids.each do |port_id|
|
|
||||||
# should not break on ipv6 addresses
|
|
||||||
ipv, proto, port, host = port_id.split(':', 4)
|
|
||||||
ports.push({
|
|
||||||
port: port.to_i,
|
|
||||||
address: host,
|
|
||||||
protocol: ipv == 'ipv6' ? proto + '6' : proto,
|
|
||||||
process: cmd,
|
|
||||||
pid: pid.to_i,
|
|
||||||
})
|
|
||||||
>>>>>>> 476d5d8... use formmated lsof output to ensure accuracy and consistency across platforms
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue