specinfra 2.37.4 → 2.37.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f954e83409c50756d2719dd0b3dfbb3d5e2a546a
4
- data.tar.gz: 271125a6999b22a34db25105a758607819f27634
3
+ metadata.gz: 26aae46d93a52fe9be0bf48a361b4fc7df7dac7d
4
+ data.tar.gz: 8d5d8091031b25961d6fa92ccc173be8e698bda9
5
5
  SHA512:
6
- metadata.gz: 1ac530ecba58a2c09e016d1479001dfcb7d557d01b590235f88f08920a70cb93b00a2fd825178f06101cc9a6f28ab622bd6bd95d819944a4f7dc120a03f116fa
7
- data.tar.gz: 87d5af2f525c5242241d80b029e6668f6c4e0416d162f9a2624c7a6f1a7c82349981f8d885333e9de998d48428d502ec9970de50bbc24060b826f88305288a71
6
+ metadata.gz: 4c4dc1b2806c1d9e4eb821cfebb64c25c9404bc2357f2db47eb60a15f82450828a00cd9e78ed828bd70ce43f7e18e87a9324cd1616b37fdac61a24e9a658ee76
7
+ data.tar.gz: b6152e6dc12d93169fd73c60e2d6ca037998b6fc33eeff9c28f86fc14426d76f17cacbf26d7334d4b4077c0f72f9715936f1d055480f594cf8c341800ebd5c8b
@@ -0,0 +1,38 @@
1
+ module Specinfra
2
+ module Command
3
+ module Module
4
+ module Ss
5
+ def check_is_listening(port, options={})
6
+ pattern = ":#{port} "
7
+ pattern = " #{inaddr_any_to_asterisk(options[:local_address])}#{pattern}" if options[:local_address]
8
+ "ss #{command_options(options[:protocol])} | grep -- #{escape(pattern)}"
9
+ end
10
+
11
+ private
12
+
13
+ # WORKAROUND:
14
+ # ss displays "*" instead of "0.0.0.0".
15
+ # But serverspec validates IP address by `valid_ip_address?` method:
16
+ # https://github.com/serverspec/serverspec/blob/master/lib/serverspec/type/port.rb
17
+ def inaddr_any_to_asterisk(local_address)
18
+ if local_address == '0.0.0.0'
19
+ '*'
20
+ else
21
+ local_address
22
+ end
23
+ end
24
+
25
+ def command_options(protocol)
26
+ case protocol
27
+ when /\Atcp/
28
+ "-tnl"
29
+ when /\Audp/
30
+ "-unl"
31
+ else
32
+ "-tunl"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,2 @@
1
+ class Specinfra::Command::Redhat::Base::Port < Specinfra::Command::Base::Port
2
+ end
@@ -0,0 +1,5 @@
1
+ class Specinfra::Command::Redhat::V7::Port < Specinfra::Command::Redhat::Base::Port
2
+ class << self
3
+ include Specinfra::Command::Module::Ss
4
+ end
5
+ end
@@ -16,6 +16,7 @@ require 'specinfra/command/module/service/god'
16
16
  require 'specinfra/command/module/service/delegator'
17
17
  require 'specinfra/command/module/systemd'
18
18
  require 'specinfra/command/module/zfs'
19
+ require 'specinfra/command/module/ss'
19
20
 
20
21
  # Base
21
22
  require 'specinfra/command/base'
@@ -90,6 +91,7 @@ require 'specinfra/command/redhat/v5/iptables'
90
91
  # RedHat V7 (inherit RedHat)
91
92
  require 'specinfra/command/redhat/v7'
92
93
  require 'specinfra/command/redhat/v7/service'
94
+ require 'specinfra/command/redhat/v7/port'
93
95
 
94
96
  # Fedora (inherit RedhHat)
95
97
  require 'specinfra/command/fedora'
@@ -1,3 +1,3 @@
1
1
  module Specinfra
2
- VERSION = "2.37.4"
2
+ VERSION = "2.37.5"
3
3
  end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Specinfra::Command::Module::Ss do
4
+ class Specinfra::Command::Module::Ss::Test < Specinfra::Command::Base
5
+ extend Specinfra::Command::Module::Ss
6
+ end
7
+ let(:klass) { Specinfra::Command::Module::Ss::Test }
8
+ it { expect(klass.check_is_listening('80')).to eq 'ss -tunl | grep -- :80\ ' }
9
+ it { expect(klass.check_is_listening('80', options={:protocol => 'tcp'})).to eq 'ss -tnl | grep -- :80\ ' }
10
+ it { expect(klass.check_is_listening('80', options={:protocol => 'udp'})).to eq 'ss -unl | grep -- :80\ ' }
11
+ it { expect(klass.check_is_listening('80', options={:local_address => '0.0.0.0'})).to eq 'ss -tunl | grep -- \ \*:80\ ' }
12
+ it { expect(klass.check_is_listening('80', options={:local_address => '0.0.0.0', :protocol => 'tcp'})).to eq 'ss -tnl | grep -- \ \*:80\ ' }
13
+ it { expect(klass.check_is_listening('80', options={:local_address => '0.0.0.0', :protocol => 'udp'})).to eq 'ss -unl | grep -- \ \*:80\ ' }
14
+ it { expect(klass.check_is_listening('80', options={:local_address => '1.2.3.4'})).to eq 'ss -tunl | grep -- \ 1.2.3.4:80\ ' }
15
+ it { expect(klass.check_is_listening('80', options={:local_address => '1.2.3.4', :protocol => 'tcp'})).to eq 'ss -tnl | grep -- \ 1.2.3.4:80\ ' }
16
+ it { expect(klass.check_is_listening('80', options={:local_address => '1.2.3.4', :protocol => 'udp'})).to eq 'ss -unl | grep -- \ 1.2.3.4:80\ ' }
17
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ property[:os] = nil
4
+ set :os, :family => 'redhat', :release => '7'
5
+
6
+ describe get_command(:check_port_is_listening, '80') do
7
+ it { should eq 'ss -tunl | grep -- :80\ ' }
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: specinfra
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.37.4
4
+ version: 2.37.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gosuke Miyashita
@@ -294,6 +294,7 @@ files:
294
294
  - lib/specinfra/command/module/service/supervisor.rb
295
295
  - lib/specinfra/command/module/service/systemd.rb
296
296
  - lib/specinfra/command/module/service/upstart.rb
297
+ - lib/specinfra/command/module/ss.rb
297
298
  - lib/specinfra/command/module/systemd.rb
298
299
  - lib/specinfra/command/module/zfs.rb
299
300
  - lib/specinfra/command/nixos.rb
@@ -326,11 +327,13 @@ files:
326
327
  - lib/specinfra/command/redhat/base/file.rb
327
328
  - lib/specinfra/command/redhat/base/iptables.rb
328
329
  - lib/specinfra/command/redhat/base/package.rb
330
+ - lib/specinfra/command/redhat/base/port.rb
329
331
  - lib/specinfra/command/redhat/base/service.rb
330
332
  - lib/specinfra/command/redhat/base/yumrepo.rb
331
333
  - lib/specinfra/command/redhat/v5.rb
332
334
  - lib/specinfra/command/redhat/v5/iptables.rb
333
335
  - lib/specinfra/command/redhat/v7.rb
336
+ - lib/specinfra/command/redhat/v7/port.rb
334
337
  - lib/specinfra/command/redhat/v7/service.rb
335
338
  - lib/specinfra/command/smartos.rb
336
339
  - lib/specinfra/command/smartos/base.rb
@@ -460,12 +463,14 @@ files:
460
463
  - spec/command/module/service/daemontools_spec.rb
461
464
  - spec/command/module/service/init_spec.rb
462
465
  - spec/command/module/service/systemd_spec.rb
466
+ - spec/command/module/ss_spec.rb
463
467
  - spec/command/module/systemd_spec.rb
464
468
  - spec/command/module/zfs_spec.rb
465
469
  - spec/command/openbsd/file_spec.rb
466
470
  - spec/command/redhat/interface_spec.rb
467
471
  - spec/command/redhat/package_spec.rb
468
472
  - spec/command/redhat/service_spec.rb
473
+ - spec/command/redhat7/port_spec.rb
469
474
  - spec/command/redhat7/service_spec.rb
470
475
  - spec/command/ubuntu/ppa_spec.rb
471
476
  - spec/command/windows/registry_key_spec.rb
@@ -543,12 +548,14 @@ test_files:
543
548
  - spec/command/module/service/daemontools_spec.rb
544
549
  - spec/command/module/service/init_spec.rb
545
550
  - spec/command/module/service/systemd_spec.rb
551
+ - spec/command/module/ss_spec.rb
546
552
  - spec/command/module/systemd_spec.rb
547
553
  - spec/command/module/zfs_spec.rb
548
554
  - spec/command/openbsd/file_spec.rb
549
555
  - spec/command/redhat/interface_spec.rb
550
556
  - spec/command/redhat/package_spec.rb
551
557
  - spec/command/redhat/service_spec.rb
558
+ - spec/command/redhat7/port_spec.rb
552
559
  - spec/command/redhat7/service_spec.rb
553
560
  - spec/command/ubuntu/ppa_spec.rb
554
561
  - spec/command/windows/registry_key_spec.rb