Sha256: 25e534758645d722970538aa12ae8b580ba228939bf75c51e73e344404092ef0

Contents?: true

Size: 1 KB

Versions: 8

Compression:

Stored size: 1 KB

Contents

module Specinfra
  module Command
    module Module
      module Ss
        def check_is_listening(port, options={})
          pattern = ":#{port} "
          pattern = " #{inaddr_any_to_asterisk(options[:local_address])}#{pattern}" if options[:local_address]
          "ss #{command_options(options[:protocol])} | grep -- #{escape(pattern)}"
        end

        private

        # WORKAROUND:
        #   ss displays "*" instead of "0.0.0.0".
        #   But serverspec validates IP address by `valid_ip_address?` method:
        #     https://github.com/serverspec/serverspec/blob/master/lib/serverspec/type/port.rb
        def inaddr_any_to_asterisk(local_address)
          if local_address == '0.0.0.0'
            '*'
          else
            local_address
          end
        end

        def command_options(protocol)
          case protocol
          when /\Atcp/
            "-tnl"
          when /\Audp/
            "-unl"
          else
            "-tunl"
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
specinfra-2.39.1 lib/specinfra/command/module/ss.rb
specinfra-2.39.0 lib/specinfra/command/module/ss.rb
specinfra-2.38.1 lib/specinfra/command/module/ss.rb
specinfra-2.38.0 lib/specinfra/command/module/ss.rb
specinfra-2.37.9 lib/specinfra/command/module/ss.rb
specinfra-2.37.8 lib/specinfra/command/module/ss.rb
specinfra-2.37.6 lib/specinfra/command/module/ss.rb
specinfra-2.37.5 lib/specinfra/command/module/ss.rb