mcollective-client 2.6.0 → 2.6.1
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.
| @@ -119,3 +119,32 @@ class Dir | |
| 119 119 | 
             
                File.expand_path(tmp)
         | 
| 120 120 | 
             
              end unless method_defined?(:tmpdir)
         | 
| 121 121 | 
             
            end
         | 
| 122 | 
            +
             | 
| 123 | 
            +
            # Reject all SSLv2 ciphers and all SSLv2 or SSLv3 handshakes by default
         | 
| 124 | 
            +
            require 'openssl'
         | 
| 125 | 
            +
            class OpenSSL::SSL::SSLContext
         | 
| 126 | 
            +
              if DEFAULT_PARAMS[:options]
         | 
| 127 | 
            +
                DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_NO_SSLv2 | OpenSSL::SSL::OP_NO_SSLv3
         | 
| 128 | 
            +
              else
         | 
| 129 | 
            +
                DEFAULT_PARAMS[:options] = OpenSSL::SSL::OP_NO_SSLv2 | OpenSSL::SSL::OP_NO_SSLv3
         | 
| 130 | 
            +
              end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              # ruby 1.8.5 doesn't define this constant, but has it on by default
         | 
| 133 | 
            +
              if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS)
         | 
| 134 | 
            +
                DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS
         | 
| 135 | 
            +
              end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
              DEFAULT_PARAMS[:ciphers] << ':!SSLv2'
         | 
| 138 | 
            +
             | 
| 139 | 
            +
              alias __mcollective_original_initialize initialize
         | 
| 140 | 
            +
              private :__mcollective_original_initialize
         | 
| 141 | 
            +
             | 
| 142 | 
            +
              def initialize(*args)
         | 
| 143 | 
            +
                __mcollective_original_initialize(*args)
         | 
| 144 | 
            +
                params = {
         | 
| 145 | 
            +
                  :options => DEFAULT_PARAMS[:options],
         | 
| 146 | 
            +
                  :ciphers => DEFAULT_PARAMS[:ciphers],
         | 
| 147 | 
            +
                }
         | 
| 148 | 
            +
                set_params(params)
         | 
| 149 | 
            +
              end
         | 
| 150 | 
            +
            end
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'mcollective/monkey_patches'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe OpenSSL::SSL::SSLContext do
         | 
| 6 | 
            +
              it 'sets parameters on initialization' do
         | 
| 7 | 
            +
                described_class.any_instance.expects(:set_params)
         | 
| 8 | 
            +
                subject
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              it 'disables SSLv2 via the SSLContext#options bitmask' do
         | 
| 12 | 
            +
                (subject.options & OpenSSL::SSL::OP_NO_SSLv2).should == OpenSSL::SSL::OP_NO_SSLv2
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              it 'explicitly disable SSLv2 ciphers using the ! prefix so they cannot be re-added' do
         | 
| 16 | 
            +
                cipher_str = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers]
         | 
| 17 | 
            +
                cipher_str.split(':').should include('!SSLv2')
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it 'has no ciphers with version SSLv2 enabled' do
         | 
| 21 | 
            +
                ciphers = subject.ciphers.select do |name, version, bits, alg_bits|
         | 
| 22 | 
            +
                  /SSLv2/.match(version)
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
                ciphers.should be_empty
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              it 'disables SSLv3 via the SSLContext#options bitmask' do
         | 
| 28 | 
            +
                (subject.options & OpenSSL::SSL::OP_NO_SSLv3).should == OpenSSL::SSL::OP_NO_SSLv3
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            end
         | 
| @@ -249,6 +249,7 @@ module MCollective | |
| 249 249 | 
             
                      Activemq.any_instance.stubs(:get_option).with("activemq.pool.1.user").returns("user1")
         | 
| 250 250 | 
             
                      Activemq.any_instance.stubs(:get_option).with("activemq.pool.1.password").returns("password1")
         | 
| 251 251 | 
             
                      Activemq.any_instance.stubs(:get_bool_option).with("activemq.pool.1.ssl", false).returns(true)
         | 
| 252 | 
            +
                      Activemq.any_instance.stubs(:get_option).with("activemq.pool.1.ssl.ciphers", false).returns(false)
         | 
| 252 253 | 
             
                    end
         | 
| 253 254 |  | 
| 254 255 | 
             
                    it "should ensure all settings are provided" do
         | 
| @@ -292,6 +293,27 @@ module MCollective | |
| 292 293 |  | 
| 293 294 | 
             
                      expect { connector.ssl_parameters(1, false) }.to raise_error
         | 
| 294 295 | 
             
                    end
         | 
| 296 | 
            +
             | 
| 297 | 
            +
                    context 'ciphers' do
         | 
| 298 | 
            +
                      before :each do
         | 
| 299 | 
            +
                        Activemq.any_instance.stubs(:get_option).with("activemq.pool.1.ssl.cert", false).returns("rspec")
         | 
| 300 | 
            +
                        Activemq.any_instance.stubs(:get_option).with("activemq.pool.1.ssl.key", false).returns('rspec.key')
         | 
| 301 | 
            +
                        Activemq.any_instance.stubs(:get_option).with("activemq.pool.1.ssl.ca", false).returns('rspec1.ca,rspec2.ca')
         | 
| 302 | 
            +
                        File.stubs(:exist?).returns(true)
         | 
| 303 | 
            +
                      end
         | 
| 304 | 
            +
             | 
| 305 | 
            +
                      it 'should not set ciphers by default' do
         | 
| 306 | 
            +
                        parameters = connector.ssl_parameters(1, false)
         | 
| 307 | 
            +
                        parameters.ciphers.should == false
         | 
| 308 | 
            +
                      end
         | 
| 309 | 
            +
             | 
| 310 | 
            +
                      it 'should support setting of ciphers' do
         | 
| 311 | 
            +
                        Activemq.any_instance.stubs(:get_option).with("activemq.pool.1.ssl.ciphers", false).returns('TLSv127:!NUTS')
         | 
| 312 | 
            +
                        parameters = connector.ssl_parameters(1, false)
         | 
| 313 | 
            +
                        parameters.ciphers.should == 'TLSv127:!NUTS'
         | 
| 314 | 
            +
                      end
         | 
| 315 | 
            +
                    end
         | 
| 316 | 
            +
             | 
| 295 317 | 
             
                  end
         | 
| 296 318 |  | 
| 297 319 | 
             
                  describe "#get_key_file" do
         | 
| @@ -248,6 +248,7 @@ module MCollective | |
| 248 248 | 
             
                      Rabbitmq.any_instance.stubs(:get_option).with("rabbitmq.pool.1.user").returns("user1")
         | 
| 249 249 | 
             
                      Rabbitmq.any_instance.stubs(:get_option).with("rabbitmq.pool.1.password").returns("password1")
         | 
| 250 250 | 
             
                      Rabbitmq.any_instance.stubs(:get_bool_option).with("rabbitmq.pool.1.ssl", false).returns(true)
         | 
| 251 | 
            +
                      Rabbitmq.any_instance.stubs(:get_option).with("rabbitmq.pool.1.ssl.ciphers", false).returns(false)
         | 
| 251 252 | 
             
                    end
         | 
| 252 253 |  | 
| 253 254 | 
             
                    it "should ensure all settings are provided" do
         | 
| @@ -291,6 +292,26 @@ module MCollective | |
| 291 292 |  | 
| 292 293 | 
             
                      expect { connector.ssl_parameters(1, false) }.to raise_error
         | 
| 293 294 | 
             
                    end
         | 
| 295 | 
            +
             | 
| 296 | 
            +
                    context 'ciphers' do
         | 
| 297 | 
            +
                      before :each do
         | 
| 298 | 
            +
                        Rabbitmq.any_instance.stubs(:get_option).with("rabbitmq.pool.1.ssl.cert", false).returns("rspec")
         | 
| 299 | 
            +
                        Rabbitmq.any_instance.stubs(:get_option).with("rabbitmq.pool.1.ssl.key", false).returns('rspec.key')
         | 
| 300 | 
            +
                        Rabbitmq.any_instance.stubs(:get_option).with("rabbitmq.pool.1.ssl.ca", false).returns('rspec1.ca,rspec2.ca')
         | 
| 301 | 
            +
                        File.stubs(:exist?).returns(true)
         | 
| 302 | 
            +
                      end
         | 
| 303 | 
            +
             | 
| 304 | 
            +
                      it 'should not set ciphers by default' do
         | 
| 305 | 
            +
                        parameters = connector.ssl_parameters(1, false)
         | 
| 306 | 
            +
                        parameters.ciphers.should == false
         | 
| 307 | 
            +
                      end
         | 
| 308 | 
            +
             | 
| 309 | 
            +
                      it 'should support setting of ciphers' do
         | 
| 310 | 
            +
                        Rabbitmq.any_instance.stubs(:get_option).with("rabbitmq.pool.1.ssl.ciphers", false).returns('TLSv127:!NUTS')
         | 
| 311 | 
            +
                        parameters = connector.ssl_parameters(1, false)
         | 
| 312 | 
            +
                        parameters.ciphers.should == 'TLSv127:!NUTS'
         | 
| 313 | 
            +
                      end
         | 
| 314 | 
            +
                    end
         | 
| 294 315 | 
             
                  end
         | 
| 295 316 |  | 
| 296 317 | 
             
                  describe "#get_key_file" do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mcollective-client
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.6. | 
| 4 | 
            +
              version: 2.6.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2014- | 
| 12 | 
            +
            date: 2014-10-28 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: systemu
         | 
| @@ -247,6 +247,7 @@ files: | |
| 247 247 | 
             
            - spec/unit/runner_spec.rb
         | 
| 248 248 | 
             
            - spec/unit/util_spec.rb
         | 
| 249 249 | 
             
            - spec/unit/agents_spec.rb
         | 
| 250 | 
            +
            - spec/unit/monkey_patches_spec.rb
         | 
| 250 251 | 
             
            - spec/unit/unix_daemon_spec.rb
         | 
| 251 252 | 
             
            - spec/unit/rpc_spec.rb
         | 
| 252 253 | 
             
            - spec/unit/facts_spec.rb
         | 
| @@ -395,6 +396,7 @@ test_files: | |
| 395 396 | 
             
            - spec/unit/runner_spec.rb
         | 
| 396 397 | 
             
            - spec/unit/util_spec.rb
         | 
| 397 398 | 
             
            - spec/unit/agents_spec.rb
         | 
| 399 | 
            +
            - spec/unit/monkey_patches_spec.rb
         | 
| 398 400 | 
             
            - spec/unit/unix_daemon_spec.rb
         | 
| 399 401 | 
             
            - spec/unit/rpc_spec.rb
         | 
| 400 402 | 
             
            - spec/unit/facts_spec.rb
         |