winrm 1.0.4 → 1.0.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.4
1
+ 1.0.5
@@ -12,6 +12,7 @@ module WinRM
12
12
  @endpoint = endpoint.is_a?(String) ? URI.parse(endpoint) : endpoint
13
13
  @httpcli = HTTPClient.new(:agent_name => 'Ruby WinRM Client')
14
14
  @httpcli.receive_timeout = 3600 # Set this to an unreasonable amount for now because WinRM has timeouts
15
+ @logger = Logging.logger[self]
15
16
  end
16
17
 
17
18
  def send_request(message)
@@ -35,12 +36,19 @@ module WinRM
35
36
  auths = @httpcli.www_auth.instance_variable_get('@authenticator')
36
37
  auths.delete_if {|i| i.scheme !~ /basic/i}
37
38
  end
39
+
40
+ # Disable SSPI Auth
41
+ def no_sspi_auth!
42
+ auths = @httpcli.www_auth.instance_variable_get('@authenticator')
43
+ auths.delete_if {|i| i.is_a? HTTPClient::SSPINegotiateAuth }
44
+ end
38
45
  end
39
46
 
40
47
  class HttpPlaintext < HttpTransport
41
48
  def initialize(endpoint, user, pass, opts)
42
49
  super(endpoint)
43
50
  @httpcli.set_auth(nil, user, pass)
51
+ no_sspi_auth! if opts[:disable_sspi]
44
52
  basic_auth_only! if opts[:basic_auth_only]
45
53
  end
46
54
  end
@@ -51,6 +59,7 @@ module WinRM
51
59
  super(endpoint)
52
60
  @httpcli.set_auth(endpoint, user, pass)
53
61
  @httpcli.ssl_config.set_trust_ca(ca_trust_path) unless ca_trust_path.nil?
62
+ no_sspi_auth! if opts[:disable_sspi]
54
63
  basic_auth_only! if opts[:basic_auth_only]
55
64
  end
56
65
  end
@@ -102,6 +111,7 @@ Content-Type: application/octet-stream\r
102
111
 
103
112
 
104
113
  def init_krb
114
+ @logger.debug "Initializing Kerberos for #{@service}"
105
115
  @gsscli = GSSAPI::Simple.new(@endpoint.host, @service)
106
116
  token = @gsscli.init_context
107
117
  auth = Base64.strict_encode64 token
@@ -110,6 +120,7 @@ Content-Type: application/octet-stream\r
110
120
  "Connection" => "Keep-Alive",
111
121
  "Content-Type" => "application/soap+xml;charset=UTF-8"
112
122
  }
123
+ @logger.debug "Sending HTTP POST for Kerberos Authentication"
113
124
  r = @httpcli.post(@endpoint, '', hdr)
114
125
  itok = r.header["WWW-Authenticate"].pop
115
126
  itok = itok.split.last
@@ -119,6 +130,7 @@ Content-Type: application/octet-stream\r
119
130
 
120
131
  # @return [String] the encrypted request string
121
132
  def winrm_encrypt(str)
133
+ @logger.debug "Encrypting SOAP message:\n#{str}"
122
134
  iov_cnt = 3
123
135
  iov = FFI::MemoryPointer.new(GSSAPI::LibGSSAPI::GssIOVBufferDesc.size * iov_cnt)
124
136
 
@@ -148,6 +160,7 @@ Content-Type: application/octet-stream\r
148
160
 
149
161
  # @return [String] the unencrypted response string
150
162
  def winrm_decrypt(str)
163
+ @logger.debug "Decrypting SOAP message:\n#{str}"
151
164
  iov_cnt = 3
152
165
  iov = FFI::MemoryPointer.new(GSSAPI::LibGSSAPI::GssIOVBufferDesc.size * iov_cnt)
153
166
 
@@ -176,6 +189,8 @@ Content-Type: application/octet-stream\r
176
189
 
177
190
  maj_stat = GSSAPI::LibGSSAPI.gss_unwrap_iov(min_stat, @gsscli.context, conf_state, qop_state, iov, iov_cnt)
178
191
 
192
+ @logger.debug "SOAP message decrypted (MAJ: #{maj_stat}, MIN: #{min_stat.read_int}):\n#{iov1[:buffer].value}"
193
+
179
194
  Nokogiri::XML(iov1[:buffer].value)
180
195
  end
181
196
 
data/lib/winrm.rb CHANGED
@@ -21,6 +21,12 @@
21
21
  # We only what one instance of this class so include Singleton
22
22
  require 'date'
23
23
  require 'kconv' if(RUBY_VERSION.start_with? '1.9') # bug in rubyntlm with ruby 1.9.x
24
+ require 'logging'
25
+
26
+ module WinRM
27
+ Logging.logger.root.level = :info
28
+ Logging.logger.root.appenders = Logging.appenders.stdout
29
+ end
24
30
 
25
31
  require 'winrm/helpers/iso8601_duration'
26
32
  require 'winrm/soap_provider'
data/winrm.gemspec CHANGED
@@ -30,4 +30,5 @@ Gem::Specification.new do |s|
30
30
  s.add_runtime_dependency 'rubyntlm', '~> 0.1.1'
31
31
  s.add_runtime_dependency 'uuidtools', '~> 2.1.2'
32
32
  s.add_runtime_dependency 'savon', '= 0.9.5'
33
+ s.add_runtime_dependency 'logging', '~> 1.6.1'
33
34
  end
metadata CHANGED
@@ -1,93 +1,103 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: winrm
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.5
4
5
  prerelease:
5
- version: 1.0.4
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Dan Wanek
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-10 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: gssapi
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &13630060 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
23
21
  version: 1.0.0
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: nokogiri
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *13630060
25
+ - !ruby/object:Gem::Dependency
26
+ name: nokogiri
27
+ requirement: &13629380 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
29
+ requirements:
32
30
  - - ~>
33
- - !ruby/object:Gem::Version
31
+ - !ruby/object:Gem::Version
34
32
  version: 1.4.4
35
33
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: httpclient
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *13629380
36
+ - !ruby/object:Gem::Dependency
37
+ name: httpclient
38
+ requirement: &13628760 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
40
+ requirements:
43
41
  - - ~>
44
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
45
43
  version: 2.2.0.2
46
44
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: rubyntlm
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *13628760
47
+ - !ruby/object:Gem::Dependency
48
+ name: rubyntlm
49
+ requirement: &13627940 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
51
+ requirements:
54
52
  - - ~>
55
- - !ruby/object:Gem::Version
53
+ - !ruby/object:Gem::Version
56
54
  version: 0.1.1
57
55
  type: :runtime
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: uuidtools
61
56
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *13627940
58
+ - !ruby/object:Gem::Dependency
59
+ name: uuidtools
60
+ requirement: &13627460 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
62
+ requirements:
65
63
  - - ~>
66
- - !ruby/object:Gem::Version
64
+ - !ruby/object:Gem::Version
67
65
  version: 2.1.2
68
66
  type: :runtime
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: savon
72
67
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *13627460
69
+ - !ruby/object:Gem::Dependency
70
+ name: savon
71
+ requirement: &13626900 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
76
- - - "="
77
- - !ruby/object:Gem::Version
73
+ requirements:
74
+ - - =
75
+ - !ruby/object:Gem::Version
78
76
  version: 0.9.5
79
77
  type: :runtime
80
- version_requirements: *id006
81
- description: " Ruby library for Windows Remote Management\n"
78
+ prerelease: false
79
+ version_requirements: *13626900
80
+ - !ruby/object:Gem::Dependency
81
+ name: logging
82
+ requirement: &13626200 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.6.1
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *13626200
91
+ description: ! ' Ruby library for Windows Remote Management
92
+
93
+ '
82
94
  email: dan.wanek@gmail.com
83
95
  executables: []
84
-
85
96
  extensions: []
86
-
87
- extra_rdoc_files:
97
+ extra_rdoc_files:
88
98
  - README
89
99
  - COPYING.txt
90
- files:
100
+ files:
91
101
  - .gitignore
92
102
  - COPYING.txt
93
103
  - README
@@ -110,33 +120,30 @@ files:
110
120
  - winrm.gemspec
111
121
  homepage: http://github.com/zenchild/WinRM
112
122
  licenses: []
113
-
114
123
  post_install_message:
115
- rdoc_options:
124
+ rdoc_options:
116
125
  - -x
117
126
  - test/
118
127
  - -x
119
128
  - examples/
120
- require_paths:
129
+ require_paths:
121
130
  - lib
122
- required_ruby_version: !ruby/object:Gem::Requirement
131
+ required_ruby_version: !ruby/object:Gem::Requirement
123
132
  none: false
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
127
136
  version: 1.9.0
128
- required_rubygems_version: !ruby/object:Gem::Requirement
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
138
  none: false
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: "0"
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
134
143
  requirements: []
135
-
136
144
  rubyforge_project:
137
145
  rubygems_version: 1.8.10
138
146
  signing_key:
139
147
  specification_version: 3
140
148
  summary: Ruby library for Windows Remote Management
141
149
  test_files: []
142
-