winrm 2.0.3 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +10 -10
  3. data/.rubocop.yml +26 -26
  4. data/.travis.yml +11 -11
  5. data/Gemfile +3 -3
  6. data/README.md +260 -233
  7. data/Rakefile +34 -34
  8. data/Vagrantfile +6 -6
  9. data/WinrmAppveyor.psm1 +31 -31
  10. data/appveyor.yml +51 -51
  11. data/changelog.md +104 -101
  12. data/lib/winrm.rb +39 -39
  13. data/lib/winrm/connection.rb +83 -82
  14. data/lib/winrm/connection_opts.rb +91 -91
  15. data/lib/winrm/exceptions.rb +76 -76
  16. data/lib/winrm/http/response_handler.rb +96 -96
  17. data/lib/winrm/http/transport.rb +424 -424
  18. data/lib/winrm/http/transport_factory.rb +68 -68
  19. data/lib/winrm/output.rb +59 -59
  20. data/lib/winrm/psrp/create_pipeline.xml.erb +167 -167
  21. data/lib/winrm/psrp/fragment.rb +70 -70
  22. data/lib/winrm/psrp/init_runspace_pool.xml.erb +224 -224
  23. data/lib/winrm/psrp/message.rb +130 -130
  24. data/lib/winrm/psrp/message_data.rb +42 -42
  25. data/lib/winrm/psrp/message_data/base.rb +49 -49
  26. data/lib/winrm/psrp/message_data/error_record.rb +68 -68
  27. data/lib/winrm/psrp/message_data/pipeline_host_call.rb +32 -32
  28. data/lib/winrm/psrp/message_data/pipeline_output.rb +49 -49
  29. data/lib/winrm/psrp/message_data/pipeline_state.rb +40 -40
  30. data/lib/winrm/psrp/message_data/runspacepool_host_call.rb +32 -32
  31. data/lib/winrm/psrp/message_data/runspacepool_state.rb +39 -39
  32. data/lib/winrm/psrp/message_data/session_capability.rb +36 -36
  33. data/lib/winrm/psrp/message_defragmenter.rb +62 -62
  34. data/lib/winrm/psrp/message_factory.rb +75 -75
  35. data/lib/winrm/psrp/message_fragmenter.rb +60 -60
  36. data/lib/winrm/psrp/powershell_output_decoder.rb +139 -139
  37. data/lib/winrm/psrp/receive_response_reader.rb +97 -97
  38. data/lib/winrm/psrp/session_capability.xml.erb +7 -7
  39. data/lib/winrm/psrp/uuid.rb +40 -40
  40. data/lib/winrm/shells/base.rb +180 -175
  41. data/lib/winrm/shells/cmd.rb +65 -65
  42. data/lib/winrm/shells/power_shell.rb +202 -202
  43. data/lib/winrm/shells/retryable.rb +45 -45
  44. data/lib/winrm/shells/shell_factory.rb +58 -50
  45. data/lib/winrm/version.rb +7 -7
  46. data/lib/winrm/wsmv/base.rb +59 -59
  47. data/lib/winrm/wsmv/cleanup_command.rb +61 -61
  48. data/lib/winrm/wsmv/close_shell.rb +50 -50
  49. data/lib/winrm/wsmv/command.rb +101 -101
  50. data/lib/winrm/wsmv/command_output.rb +76 -76
  51. data/lib/winrm/wsmv/command_output_decoder.rb +55 -55
  52. data/lib/winrm/wsmv/configuration.rb +46 -46
  53. data/lib/winrm/wsmv/create_pipeline.rb +66 -66
  54. data/lib/winrm/wsmv/create_shell.rb +119 -119
  55. data/lib/winrm/wsmv/header.rb +203 -203
  56. data/lib/winrm/wsmv/init_runspace_pool.rb +95 -95
  57. data/lib/winrm/wsmv/iso8601_duration.rb +60 -60
  58. data/lib/winrm/wsmv/keep_alive.rb +68 -68
  59. data/lib/winrm/wsmv/receive_response_reader.rb +126 -126
  60. data/lib/winrm/wsmv/send_data.rb +68 -68
  61. data/lib/winrm/wsmv/soap.rb +51 -51
  62. data/lib/winrm/wsmv/wql_query.rb +79 -79
  63. data/lib/winrm/wsmv/write_stdin.rb +88 -88
  64. data/tests/integration/auth_timeout_spec.rb +18 -18
  65. data/tests/integration/cmd_spec.rb +131 -110
  66. data/tests/integration/config-example.yml +16 -16
  67. data/tests/integration/issue_59_spec.rb +26 -26
  68. data/tests/integration/powershell_spec.rb +165 -165
  69. data/tests/integration/spec_helper.rb +65 -65
  70. data/tests/integration/transport_spec.rb +99 -99
  71. data/tests/integration/wql_spec.rb +16 -16
  72. data/tests/matchers.rb +60 -60
  73. data/tests/spec/configuration_spec.rb +184 -184
  74. data/tests/spec/connection_spec.rb +39 -39
  75. data/tests/spec/exception_spec.rb +50 -50
  76. data/tests/spec/http/transport_factory_spec.rb +68 -68
  77. data/tests/spec/http/transport_spec.rb +44 -44
  78. data/tests/spec/output_spec.rb +127 -127
  79. data/tests/spec/psrp/fragment_spec.rb +62 -62
  80. data/tests/spec/psrp/message_data/base_spec.rb +13 -13
  81. data/tests/spec/psrp/message_data/error_record_spec.rb +41 -41
  82. data/tests/spec/psrp/message_data/pipeline_host_call_spec.rb +25 -25
  83. data/tests/spec/psrp/message_data/pipeline_output_spec.rb +32 -32
  84. data/tests/spec/psrp/message_data/pipeline_state_spec.rb +40 -40
  85. data/tests/spec/psrp/message_data/runspace_pool_host_call_spec.rb +25 -25
  86. data/tests/spec/psrp/message_data/runspacepool_state_spec.rb +16 -16
  87. data/tests/spec/psrp/message_data/session_capability_spec.rb +30 -30
  88. data/tests/spec/psrp/message_data_spec.rb +35 -35
  89. data/tests/spec/psrp/message_defragmenter_spec.rb +47 -47
  90. data/tests/spec/psrp/message_fragmenter_spec.rb +105 -105
  91. data/tests/spec/psrp/powershell_output_decoder_spec.rb +100 -100
  92. data/tests/spec/psrp/psrp_message_spec.rb +70 -70
  93. data/tests/spec/psrp/recieve_response_reader_spec.rb +172 -172
  94. data/tests/spec/psrp/uuid_spec.rb +28 -28
  95. data/tests/spec/response_handler_spec.rb +61 -61
  96. data/tests/spec/shells/base_spec.rb +202 -202
  97. data/tests/spec/shells/cmd_spec.rb +75 -75
  98. data/tests/spec/shells/powershell_spec.rb +175 -175
  99. data/tests/spec/spec_helper.rb +47 -47
  100. data/tests/spec/stubs/clixml/error_record.xml.erb +84 -84
  101. data/tests/spec/stubs/clixml/pipeline_state.xml.erb +88 -88
  102. data/tests/spec/stubs/responses/get_command_output_response.xml.erb +13 -13
  103. data/tests/spec/stubs/responses/get_command_output_response_not_done.xml.erb +10 -10
  104. data/tests/spec/stubs/responses/get_powershell_keepalive_response.xml.erb +10 -10
  105. data/tests/spec/stubs/responses/get_powershell_output_response.xml.erb +12 -12
  106. data/tests/spec/stubs/responses/get_powershell_output_response_not_done.xml.erb +9 -9
  107. data/tests/spec/stubs/responses/open_shell_v1.xml +19 -19
  108. data/tests/spec/stubs/responses/open_shell_v2.xml +20 -20
  109. data/tests/spec/stubs/responses/soap_fault_v1.xml +36 -36
  110. data/tests/spec/stubs/responses/soap_fault_v2.xml +42 -42
  111. data/tests/spec/stubs/responses/wmi_error_v2.xml +41 -41
  112. data/tests/spec/wsmv/cleanup_command_spec.rb +22 -22
  113. data/tests/spec/wsmv/close_shell_spec.rb +17 -17
  114. data/tests/spec/wsmv/command_output_decoder_spec.rb +37 -37
  115. data/tests/spec/wsmv/command_output_spec.rb +45 -45
  116. data/tests/spec/wsmv/command_spec.rb +19 -19
  117. data/tests/spec/wsmv/configuration_spec.rb +17 -17
  118. data/tests/spec/wsmv/create_pipeline_spec.rb +31 -31
  119. data/tests/spec/wsmv/create_shell_spec.rb +38 -38
  120. data/tests/spec/wsmv/init_runspace_pool_spec.rb +36 -36
  121. data/tests/spec/wsmv/keep_alive_spec.rb +21 -21
  122. data/tests/spec/wsmv/receive_response_reader_spec.rb +123 -123
  123. data/tests/spec/wsmv/send_data_spec.rb +30 -30
  124. data/tests/spec/wsmv/wql_query_spec.rb +13 -13
  125. data/tests/spec/wsmv/write_stdin_spec.rb +22 -22
  126. data/winrm.gemspec +42 -42
  127. metadata +2 -2
data/Rakefile CHANGED
@@ -1,34 +1,34 @@
1
- # encoding: UTF-8
2
- require 'rubygems'
3
- require 'bundler/setup'
4
- require 'rspec/core/rake_task'
5
- require 'rubocop/rake_task'
6
- require 'bundler/gem_tasks'
7
-
8
- # Change to the directory of this file.
9
- Dir.chdir(File.expand_path('../', __FILE__))
10
-
11
- desc 'Open a Pry console for this library'
12
- task :console do
13
- require 'pry'
14
- require 'winrm'
15
- ARGV.clear
16
- Pry.start
17
- end
18
-
19
- RSpec::Core::RakeTask.new(:spec) do |task|
20
- task.pattern = 'tests/spec/**/*_spec.rb'
21
- task.rspec_opts = ['--color', '-f documentation', '-r ./tests/spec/spec_helper']
22
- end
23
-
24
- # Run the integration test suite
25
- RSpec::Core::RakeTask.new(:integration) do |task|
26
- task.pattern = 'tests/integration/*_spec.rb'
27
- task.rspec_opts = ['--color', '-f documentation', '-r ./tests/integration/spec_helper']
28
- end
29
-
30
- RuboCop::RakeTask.new
31
-
32
- task default: [:spec, :rubocop]
33
-
34
- task all: [:default, :integration]
1
+ # encoding: UTF-8
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
6
+ require 'bundler/gem_tasks'
7
+
8
+ # Change to the directory of this file.
9
+ Dir.chdir(File.expand_path('../', __FILE__))
10
+
11
+ desc 'Open a Pry console for this library'
12
+ task :console do
13
+ require 'pry'
14
+ require 'winrm'
15
+ ARGV.clear
16
+ Pry.start
17
+ end
18
+
19
+ RSpec::Core::RakeTask.new(:spec) do |task|
20
+ task.pattern = 'tests/spec/**/*_spec.rb'
21
+ task.rspec_opts = ['--color', '-f documentation', '-r ./tests/spec/spec_helper']
22
+ end
23
+
24
+ # Run the integration test suite
25
+ RSpec::Core::RakeTask.new(:integration) do |task|
26
+ task.pattern = 'tests/integration/*_spec.rb'
27
+ task.rspec_opts = ['--color', '-f documentation', '-r ./tests/integration/spec_helper']
28
+ end
29
+
30
+ RuboCop::RakeTask.new
31
+
32
+ task default: [:spec, :rubocop]
33
+
34
+ task all: [:default, :integration]
@@ -1,6 +1,6 @@
1
- # -*- mode: ruby -*-
2
- # vi: set ft=ruby :
3
-
4
- Vagrant.configure("2") do |config|
5
- config.vm.box = "mwrock/WindowsNano"
6
- end
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant.configure("2") do |config|
5
+ config.vm.box = "mwrock/WindowsNano"
6
+ end
@@ -1,32 +1,32 @@
1
- function New-ClientCertificate {
2
- param([String]$username, [String]$basePath = ((Resolve-Path .).Path))
3
-
4
- $env:OPENSSL_CONF=[System.IO.Path]::GetTempFileName()
5
-
6
- Set-Content -Path $env:OPENSSL_CONF -Value @"
7
- distinguished_name = req_distinguished_name
8
- [req_distinguished_name]
9
- [v3_req_client]
10
- extendedKeyUsage = clientAuth
11
- subjectAltName = otherName:1.3.6.1.4.1.311.20.2.3;UTF8:$username@localhost
12
- "@
13
-
14
- $user_path = Join-Path $basePath user.pem
15
- $key_path = Join-Path $basePath key.pem
16
- $pfx_path = Join-Path $basePath user.pfx
17
-
18
- openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -out $user_path -outform PEM -keyout $key_path -subj "/CN=$username" -extensions v3_req_client 2>&1
19
-
20
- openssl pkcs12 -export -in $user_path -inkey $key_path -out $pfx_path -passout pass: 2>&1
21
-
22
- del $env:OPENSSL_CONF
23
- }
24
-
25
- function New-WinrmUserCertificateMapping {
26
- param([String]$issuer)
27
- $secure_pass = ConvertTo-SecureString $env:winrm_password -AsPlainText -Force
28
- $cred = New-Object System.Management.Automation.PSCredential ($env:winrm_user, $secure_pass)
29
- New-Item -Path WSMan:\localhost\ClientCertificate -Subject "$env:winrm_user@localhost" -URI * -Issuer $issuer -Credential $cred -Force
30
- }
31
-
1
+ function New-ClientCertificate {
2
+ param([String]$username, [String]$basePath = ((Resolve-Path .).Path))
3
+
4
+ $env:OPENSSL_CONF=[System.IO.Path]::GetTempFileName()
5
+
6
+ Set-Content -Path $env:OPENSSL_CONF -Value @"
7
+ distinguished_name = req_distinguished_name
8
+ [req_distinguished_name]
9
+ [v3_req_client]
10
+ extendedKeyUsage = clientAuth
11
+ subjectAltName = otherName:1.3.6.1.4.1.311.20.2.3;UTF8:$username@localhost
12
+ "@
13
+
14
+ $user_path = Join-Path $basePath user.pem
15
+ $key_path = Join-Path $basePath key.pem
16
+ $pfx_path = Join-Path $basePath user.pfx
17
+
18
+ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -out $user_path -outform PEM -keyout $key_path -subj "/CN=$username" -extensions v3_req_client 2>&1
19
+
20
+ openssl pkcs12 -export -in $user_path -inkey $key_path -out $pfx_path -passout pass: 2>&1
21
+
22
+ del $env:OPENSSL_CONF
23
+ }
24
+
25
+ function New-WinrmUserCertificateMapping {
26
+ param([String]$issuer)
27
+ $secure_pass = ConvertTo-SecureString $env:winrm_password -AsPlainText -Force
28
+ $cred = New-Object System.Management.Automation.PSCredential ($env:winrm_user, $secure_pass)
29
+ New-Item -Path WSMan:\localhost\ClientCertificate -Subject "$env:winrm_user@localhost" -URI * -Issuer $issuer -Credential $cred -Force
30
+ }
31
+
32
32
  Export-ModuleMember New-ClientCertificate, New-WinrmUserCertificateMapping
@@ -1,51 +1,51 @@
1
- version: "master-{build}"
2
-
3
- os: Windows Server 2012 R2
4
- platform:
5
- - x64
6
-
7
- environment:
8
- winrm_user: test_user
9
- winrm_password: Pass@word1
10
- user_cert: c:\projects\winrm\user.pem
11
- user_key: c:\projects\winrm\key.pem
12
-
13
- matrix:
14
- - ruby_version: "21"
15
- winrm_endpoint: http://localhost:5985/wsman
16
-
17
- clone_folder: c:\projects\winrm
18
- clone_depth: 1
19
- branches:
20
- only:
21
- - master
22
-
23
- install:
24
- - ps: net user /add $env:winrm_user $env:winrm_password
25
- - ps: net localgroup administrators $env:winrm_user /add
26
- - ps: $env:PATH="C:\OpenSSL-Win64\bin;$env:PATH"
27
- - ps: Import-Module c:\projects\winrm\WinrmAppveyor.psm1
28
- - ps: New-ClientCertificate $env:winrm_user c:\projects\winrm
29
- - ps: $env:user_cert_thumb = (Import-pfxCertificate -FilePath c:\projects\winrm\user.pfx -CertStoreLocation Cert:\LocalMachine\root).Thumbprint
30
- - ps: Import-pfxCertificate -FilePath c:\projects\winrm\user.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPeople
31
- - ps: $env:winrm_cert = (New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\localmachine\my).Thumbprint
32
- - ps: winrm create winrm/config/Listener?Address=*+Transport=HTTPS "@{Hostname=`"localhost`";CertificateThumbprint=`"$($env:winrm_cert)`"}"
33
- - ps: winrm set winrm/config/client/auth '@{Basic="true"}'
34
- - ps: winrm set winrm/config/service/auth '@{Basic="true"}'
35
- - ps: winrm set winrm/config/service/auth '@{Certificate="true"}'
36
- - ps: winrm set winrm/config/service/auth '@{CbtHardeningLevel="Strict"}'
37
- - ps: winrm set winrm/config/service '@{AllowUnencrypted="true"}'
38
- - ps: New-WinrmUserCertificateMapping $env:user_cert_thumb
39
- - ps: $env:PATH="C:\Ruby$env:ruby_version\bin;$env:PATH"
40
- - ps: Write-Host $env:PATH
41
- - ps: ruby --version
42
- - ps: gem --version
43
- - ps: gem install bundler --quiet --no-ri --no-rdoc
44
- - ps: bundler --version
45
-
46
- build_script:
47
- - bundle install || bundle install || bundle install
48
-
49
- test_script:
50
- - SET SPEC_OPTS=--format progress
51
- - bundle exec rake integration
1
+ version: "master-{build}"
2
+
3
+ os: Windows Server 2012 R2
4
+ platform:
5
+ - x64
6
+
7
+ environment:
8
+ winrm_user: test_user
9
+ winrm_password: Pass@word1
10
+ user_cert: c:\projects\winrm\user.pem
11
+ user_key: c:\projects\winrm\key.pem
12
+
13
+ matrix:
14
+ - ruby_version: "21"
15
+ winrm_endpoint: http://localhost:5985/wsman
16
+
17
+ clone_folder: c:\projects\winrm
18
+ clone_depth: 1
19
+ branches:
20
+ only:
21
+ - master
22
+
23
+ install:
24
+ - ps: net user /add $env:winrm_user $env:winrm_password
25
+ - ps: net localgroup administrators $env:winrm_user /add
26
+ - ps: $env:PATH="C:\OpenSSL-Win64\bin;$env:PATH"
27
+ - ps: Import-Module c:\projects\winrm\WinrmAppveyor.psm1
28
+ - ps: New-ClientCertificate $env:winrm_user c:\projects\winrm
29
+ - ps: $env:user_cert_thumb = (Import-pfxCertificate -FilePath c:\projects\winrm\user.pfx -CertStoreLocation Cert:\LocalMachine\root).Thumbprint
30
+ - ps: Import-pfxCertificate -FilePath c:\projects\winrm\user.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPeople
31
+ - ps: $env:winrm_cert = (New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\localmachine\my).Thumbprint
32
+ - ps: winrm create winrm/config/Listener?Address=*+Transport=HTTPS "@{Hostname=`"localhost`";CertificateThumbprint=`"$($env:winrm_cert)`"}"
33
+ - ps: winrm set winrm/config/client/auth '@{Basic="true"}'
34
+ - ps: winrm set winrm/config/service/auth '@{Basic="true"}'
35
+ - ps: winrm set winrm/config/service/auth '@{Certificate="true"}'
36
+ - ps: winrm set winrm/config/service/auth '@{CbtHardeningLevel="Strict"}'
37
+ - ps: winrm set winrm/config/service '@{AllowUnencrypted="true"}'
38
+ - ps: New-WinrmUserCertificateMapping $env:user_cert_thumb
39
+ - ps: $env:PATH="C:\Ruby$env:ruby_version\bin;$env:PATH"
40
+ - ps: Write-Host $env:PATH
41
+ - ps: ruby --version
42
+ - ps: gem --version
43
+ - ps: gem install bundler --quiet --no-ri --no-rdoc
44
+ - ps: bundler --version
45
+
46
+ build_script:
47
+ - bundle install || bundle install || bundle install
48
+
49
+ test_script:
50
+ - SET SPEC_OPTS=--format progress
51
+ - bundle exec rake integration
@@ -1,101 +1,104 @@
1
- # WinRM Gem Changelog
2
-
3
- # 2.0.3
4
- - Do not swallow exit codes from executables
5
-
6
- # 2.0.2
7
- - Constrain to rubyntlm `>= 0.6.1` to avoid mutating frozen strings
8
- - When using certificate authentication, do not validate presense of user and password
9
- - Handle failed `PIPELINE_STATE` messages so that `throw` errors are not swallowed
10
-
11
- # 2.0.1
12
- - Fixed Powershell shell leakage when not explicitly closed
13
- - Fixed cmd commands with responses that extend beyond one stream
14
-
15
- # 2.0.0
16
- - Cleaned up API and implemented Powershell Remoting Protocol (PSRP) for all powershell calls.
17
-
18
- # 1.8.1
19
- - Http receive timeout should always be equal to 10 seconds greater than the winrm operation timeout and not default to one hour
20
-
21
- # 1.8.0
22
- - Add certificate authentication
23
-
24
- # 1.7.3
25
- - Open a new shell if the current shell has been deleted
26
-
27
- # 1.7.2
28
- - Fix regression where BOM appears in 2008R2 output and is not stripped
29
-
30
- # 1.7.1
31
- - Fix OS version comparisons for Windows 10 using `Gem::Version` instead of strings
32
-
33
- # 1.7.0
34
- - Bump rubyntlm gem to 0.6.0 to get channel binding support for HTTPS fixing connections to endoints with `CbtHardeningLevel` set to `Strict`
35
- - Fix for parsing binary data in command output
36
-
37
- # 1.6.1
38
- - Use codepage 437 by default on os versions older than Windows 7 and Windows Server 2008 R2
39
-
40
- # 1.6.0
41
- - Adding `:negotiate` transport providing NTLM/Negotiate encryption of WinRM requests and responses
42
- - Removed dependency on UUIDTools gem
43
- - Extending accepted error codes for retry behavior to include `Errno::ETIMEDOUT`
44
- - Correct deprecation warning for WinRMWebService.run_powershell_script
45
-
46
- # 1.5.0
47
- - Deprecating `WinRM::WinRMWebService` methods `cmd`, `run_cmd`, `powershell`, and `run_powershell_script` in favor of the `run_cmd` and `run_powershell_script` methods of the `WinRM::CommandExecutor` class. The `CommandExecutor` allows multiple commands to be run from the same WinRM shell providing a significant performance improvement when issuing multiple calls.
48
- - Added an `:ssl_peer_fingerprint` option to be used instead of `:no_ssl_peer_verification` and allows a specific certificate to be verified.
49
- - Opening a winrm shell is retriable with configurable delay and retry limit.
50
- - Logging apends to `stdout` by default and can be replaced with a logger from a consuming application.
51
-
52
- # 1.4.0
53
- - Added WinRM::Version so the gem version is available at runtime for consumers.
54
-
55
- # 1.3.6
56
- - Remove BOM from response (Issue #159) added by Windows 2008R2
57
-
58
- # 1.3.5
59
- - Widen logging version constraints to include 2.0
60
- - Use codepage 65001 (UTF-8)
61
-
62
- # 1.3.4
63
- - Relaxed version pins on dev dependencies
64
-
65
- # 1.3.3
66
- - Fixed issue 133, rwinrm allow hostnames with dashes
67
- - Use duck typing for powershell script read
68
-
69
- # 1.3.2
70
- - Add spec.license attribute to gemspec
71
- - Bump RSpec dependency 3.0 to 3.2
72
-
73
- # 1.3.1
74
- - Fixed issue 129, long running commands could cause a stackoverflow exception
75
- - Fixed use of sub! in run_command results in spurious capture/replacement of \& sequences
76
- - Fixed issue 124 rwinrm won't take '.' characters in username
77
-
78
- # 1.3.0
79
- - Fixed multiple issues with WinRMHTTPTransportError incorrectly being raised
80
- - Refactored and added more unit and integration tests
81
- - Added ability to write to stdin
82
- - Added rwinrm binary to launch remote shell
83
- - Added WINRM_LOG env var to set log level
84
- - Retry Kerberos auth once if 401 response is received
85
- - Remove Savon dependency and use newer versions of underlying dependencies
86
- - Remove Nokogiri dependency and replace with native Ruby XML
87
- - Fixed issue 85, ensure WQL response is not nil
88
- - All WinRM library errors inherit from base class WinRMError
89
- - Integrations tests should now pass on Windows Server 2008+
90
- - Bump Ruby NTLM gem version dependency
91
- - HTTP client receive timeout is now configurable via set_timeout
92
- - Added backwards compatible Output class to make it easier to collect output
93
- - Bumped gssapi dependency from 1.0 to 1.2 and fixed issue 54
94
- - Added Rubocop to build
95
- - Fixed error when commands contain a newline character
96
-
97
- # 1.2.0
98
- - Allow user to disable SSL peer ceritifcate validation #44
99
- - Allow commands with "'" chars on Ruby 2.x, fixes #69
100
- - Fixed uninitialized constant Module::Kconv in Ruby 2.x, fixes #65
101
- - Commands with non-ASCII chars should work, #70
1
+ # WinRM Gem Changelog
2
+
3
+ # 2.1.0
4
+ - Expose shell options when creating a winrm shell
5
+
6
+ # 2.0.3
7
+ - Do not swallow exit codes from executables
8
+
9
+ # 2.0.2
10
+ - Constrain to rubyntlm `>= 0.6.1` to avoid mutating frozen strings
11
+ - When using certificate authentication, do not validate presense of user and password
12
+ - Handle failed `PIPELINE_STATE` messages so that `throw` errors are not swallowed
13
+
14
+ # 2.0.1
15
+ - Fixed Powershell shell leakage when not explicitly closed
16
+ - Fixed cmd commands with responses that extend beyond one stream
17
+
18
+ # 2.0.0
19
+ - Cleaned up API and implemented Powershell Remoting Protocol (PSRP) for all powershell calls.
20
+
21
+ # 1.8.1
22
+ - Http receive timeout should always be equal to 10 seconds greater than the winrm operation timeout and not default to one hour
23
+
24
+ # 1.8.0
25
+ - Add certificate authentication
26
+
27
+ # 1.7.3
28
+ - Open a new shell if the current shell has been deleted
29
+
30
+ # 1.7.2
31
+ - Fix regression where BOM appears in 2008R2 output and is not stripped
32
+
33
+ # 1.7.1
34
+ - Fix OS version comparisons for Windows 10 using `Gem::Version` instead of strings
35
+
36
+ # 1.7.0
37
+ - Bump rubyntlm gem to 0.6.0 to get channel binding support for HTTPS fixing connections to endoints with `CbtHardeningLevel` set to `Strict`
38
+ - Fix for parsing binary data in command output
39
+
40
+ # 1.6.1
41
+ - Use codepage 437 by default on os versions older than Windows 7 and Windows Server 2008 R2
42
+
43
+ # 1.6.0
44
+ - Adding `:negotiate` transport providing NTLM/Negotiate encryption of WinRM requests and responses
45
+ - Removed dependency on UUIDTools gem
46
+ - Extending accepted error codes for retry behavior to include `Errno::ETIMEDOUT`
47
+ - Correct deprecation warning for WinRMWebService.run_powershell_script
48
+
49
+ # 1.5.0
50
+ - Deprecating `WinRM::WinRMWebService` methods `cmd`, `run_cmd`, `powershell`, and `run_powershell_script` in favor of the `run_cmd` and `run_powershell_script` methods of the `WinRM::CommandExecutor` class. The `CommandExecutor` allows multiple commands to be run from the same WinRM shell providing a significant performance improvement when issuing multiple calls.
51
+ - Added an `:ssl_peer_fingerprint` option to be used instead of `:no_ssl_peer_verification` and allows a specific certificate to be verified.
52
+ - Opening a winrm shell is retriable with configurable delay and retry limit.
53
+ - Logging apends to `stdout` by default and can be replaced with a logger from a consuming application.
54
+
55
+ # 1.4.0
56
+ - Added WinRM::Version so the gem version is available at runtime for consumers.
57
+
58
+ # 1.3.6
59
+ - Remove BOM from response (Issue #159) added by Windows 2008R2
60
+
61
+ # 1.3.5
62
+ - Widen logging version constraints to include 2.0
63
+ - Use codepage 65001 (UTF-8)
64
+
65
+ # 1.3.4
66
+ - Relaxed version pins on dev dependencies
67
+
68
+ # 1.3.3
69
+ - Fixed issue 133, rwinrm allow hostnames with dashes
70
+ - Use duck typing for powershell script read
71
+
72
+ # 1.3.2
73
+ - Add spec.license attribute to gemspec
74
+ - Bump RSpec dependency 3.0 to 3.2
75
+
76
+ # 1.3.1
77
+ - Fixed issue 129, long running commands could cause a stackoverflow exception
78
+ - Fixed use of sub! in run_command results in spurious capture/replacement of \& sequences
79
+ - Fixed issue 124 rwinrm won't take '.' characters in username
80
+
81
+ # 1.3.0
82
+ - Fixed multiple issues with WinRMHTTPTransportError incorrectly being raised
83
+ - Refactored and added more unit and integration tests
84
+ - Added ability to write to stdin
85
+ - Added rwinrm binary to launch remote shell
86
+ - Added WINRM_LOG env var to set log level
87
+ - Retry Kerberos auth once if 401 response is received
88
+ - Remove Savon dependency and use newer versions of underlying dependencies
89
+ - Remove Nokogiri dependency and replace with native Ruby XML
90
+ - Fixed issue 85, ensure WQL response is not nil
91
+ - All WinRM library errors inherit from base class WinRMError
92
+ - Integrations tests should now pass on Windows Server 2008+
93
+ - Bump Ruby NTLM gem version dependency
94
+ - HTTP client receive timeout is now configurable via set_timeout
95
+ - Added backwards compatible Output class to make it easier to collect output
96
+ - Bumped gssapi dependency from 1.0 to 1.2 and fixed issue 54
97
+ - Added Rubocop to build
98
+ - Fixed error when commands contain a newline character
99
+
100
+ # 1.2.0
101
+ - Allow user to disable SSL peer ceritifcate validation #44
102
+ - Allow commands with "'" chars on Ruby 2.x, fixes #69
103
+ - Fixed uninitialized constant Module::Kconv in Ruby 2.x, fixes #65
104
+ - Commands with non-ASCII chars should work, #70