From 645ad111a3d6391f11d2c3440601f0b18a64cb94 Mon Sep 17 00:00:00 2001 From: Jerry D'Antonio Date: Thu, 7 Feb 2013 10:00:16 -0500 Subject: [PATCH] Better support for options to WinRM::HTTP::HttpTransport --- VERSION | 2 +- capistrano_winrm.gemspec | 4 ++-- lib/winrm_connection.rb | 19 +++++++++++++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index 7dea76e..6d7de6e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.1 +1.0.2 diff --git a/capistrano_winrm.gemspec b/capistrano_winrm.gemspec index 992077c..48cd858 100644 --- a/capistrano_winrm.gemspec +++ b/capistrano_winrm.gemspec @@ -25,6 +25,6 @@ Gem::Specification.new do |s| s.extra_rdoc_files = %w(README) s.required_ruby_version = '>= 1.9.0' - s.add_runtime_dependency 'capistrano', '~> 2.5.18' - s.add_runtime_dependency 'winrm', '~> 1.0.0' + s.add_runtime_dependency 'capistrano', '~> 2.14.1' + s.add_runtime_dependency 'winrm', '~> 1.1.2' end diff --git a/lib/winrm_connection.rb b/lib/winrm_connection.rb index cb3508c..05043d6 100644 --- a/lib/winrm_connection.rb +++ b/lib/winrm_connection.rb @@ -14,7 +14,7 @@ def initialize(server, opts) def [](key) @int_hash[key.to_sym] end - + def []=(key, value) @int_hash[key.to_sym] = value end @@ -50,13 +50,24 @@ def on_close; self; end def establish_winrm(opts) http_method = ( server.port.to_s=~/(443|5986)/ ? 'https' : 'http' ) endpoint = "#{http_method}://#{server}/wsman" + + transport_opts = {} + transport_opts[:disable_sspi] = opts[:winrm_disable_sspi] unless opts[:winrm_disable_sspi].nil? + transport_opts[:basic_auth_only] = opts[:winrm_basic_auth_only] unless opts[:winrm_basic_auth_only].nil? + if opts[:winrm_krb5_realm] - inst = WinRM::WinRMWebService.new(endpoint, :kerberos, :realm => opts[:winrm_krb5_realm]) + transport_opts[:realm] = opts[:winrm_krb5_realm] + inst = WinRM::WinRMWebService.new(endpoint, :kerberos, transport_opts) else unless opts[:winrm_ssl_ca_store] - inst = WinRM::WinRMWebService.new(endpoint, :plaintext, :user => opts[:winrm_user], :pass => opts[:winrm_password]) + transport_opts[:user] = opts[:winrm_user] + transport_opts[:pass] = opts[:winrm_password] + inst = WinRM::WinRMWebService.new(endpoint, :plaintext, transport_opts) else - inst = WinRM::WinRMWebService.new(endpoint, :ssl, :user => opts[:winrm_user], :pass => opts[:winrm_password], :ca_trust_path => opts[:winrm_ssl_ca_store]) + transport_opts[:user] = opts[:winrm_user] + transport_opts[:pass] = opts[:winrm_password] + transport_opts[:ca_trust_path] = opts[:winrm_ssl_ca_store] + inst = WinRM::WinRMWebService.new(endpoint, :ssl, transport_opts) end end inst