Class: Inspec::Resources::SolarisPorts

Inherits:
FreeBsdPorts show all
Includes:
SolarisNetstatParser
Defined in:
lib/resources/port.rb

Instance Attribute Summary

Attributes inherited from PortsInfo

#inspec

Instance Method Summary collapse

Methods included from SolarisNetstatParser

#parse_netstat

Methods inherited from FreeBsdPorts

#parse_net_address, #parse_sockstat_line

Methods inherited from PortsInfo

#initialize

Constructor Details

This class inherits a constructor from Inspec::Resources::PortsInfo

Instance Method Details

#infoObject



529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
# File 'lib/resources/port.rb', line 529

def info
  # extract all port info
  cmd = inspec.command('netstat -an -f inet -f inet6')
  return nil if cmd.exit_status.to_i != 0

  # parse the content
  netstat_ports = parse_netstat(cmd.stdout)

  # filter all ports, where we `listen`
  listen = netstat_ports.select { |val|
    !val['state'].nil? && 'listen'.casecmp(val['state']) == 0
  }

  # map the data
  ports = listen.map { |val|
    protocol = val['protocol']
    local_addr = val['local-address']

    # solaris uses 127.0.0.1.57455 instead 127.0.0.1:57455, lets convert the
    # the last . to :
    local_addr[local_addr.rindex('.')] = ':'
    host, port = parse_net_address(local_addr, protocol)
    if host.nil?
      nil
    else
      {
        'port'     => port,
        'address'  => host,
        'protocol' => protocol,
      }
    end
  }
  ports.compact
end