File 0001-Fix-line-endings-of-lib-winrm-psrp-powershell_output.patch of Package rubygem-winrm-2_1
From 20ac3dd80edf69f3c2dcbb53c2b8f6fbff7fd087 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dan.cermak@cgc-instruments.com>
Date: Tue, 16 Apr 2019 01:05:03 +0200
Subject: [PATCH] Fix line endings of
lib/winrm/psrp/powershell_output_decoder.rb
This fixes #299
---
lib/winrm/psrp/powershell_output_decoder.rb | 284 ++++++++++----------
1 file changed, 142 insertions(+), 142 deletions(-)
diff --git a/lib/winrm/psrp/powershell_output_decoder.rb b/lib/winrm/psrp/powershell_output_decoder.rb
index c02b7f8..35f540a 100644
--- a/lib/winrm/psrp/powershell_output_decoder.rb
+++ b/lib/winrm/psrp/powershell_output_decoder.rb
@@ -1,142 +1,142 @@
-# Copyright 2016 Matt Wrock <matt@mattwrock.com>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require 'base64'
-require_relative 'message'
-require_relative 'message_data/pipeline_state'
-
-module WinRM
- module PSRP
- # Handles decoding a raw powershell output response
- class PowershellOutputDecoder
- # rubocop:disable Metrics/CyclomaticComplexity
- # Decode the raw SOAP output into decoded PSRP message,
- # Removes BOM and replaces encoded line endings
- # @param raw_output [String] The raw encoded output
- # @return [String] The decoded output
- def decode(message)
- case message.type
- when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_output]
- decode_pipeline_output(message)
- when WinRM::PSRP::Message::MESSAGE_TYPES[:runspacepool_host_call]
- decode_host_call(message)
- when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_host_call]
- decode_host_call(message)
- when WinRM::PSRP::Message::MESSAGE_TYPES[:error_record]
- decode_error_record(message)
- when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state]
- if message.parsed_data.pipeline_state == WinRM::PSRP::MessageData::PipelineState::FAILED
- decode_error_record(message)
- end
- end
- end
- # rubocop:enable Metrics/CyclomaticComplexity
-
- protected
-
- def decode_pipeline_output(message)
- message.parsed_data.output
- end
-
- def decode_host_call(message)
- text = begin
- case message.parsed_data.method_identifier
- when /WriteLine/, 'WriteErrorLine'
- "#{message.parsed_data.method_parameters[:s]}\r\n"
- when 'WriteDebugLine'
- "Debug: #{message.parsed_data.method_parameters[:s]}\r\n"
- when 'WriteWarningLine'
- "Warning: #{message.parsed_data.method_parameters[:s]}\r\n"
- when 'WriteVerboseLine'
- "Verbose: #{message.parsed_data.method_parameters[:s]}\r\n"
- when /Write[1-2]/
- message.parsed_data.method_parameters[:s]
- end
- end
-
- hex_decode(text)
- end
-
- def decode_error_record(message)
- parsed = message.parsed_data
- text = begin
- if message.type == WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state]
- render_exception_as_error_record(parsed.exception_as_error_record)
- else
- case parsed.fully_qualified_error_id
- when 'Microsoft.PowerShell.Commands.WriteErrorException'
- render_write_error_exception(parsed)
- when 'NativeCommandError'
- render_native_command_error(parsed)
- when 'NativeCommandErrorMessage'
- parsed.exception[:message]
- else
- render_exception(parsed)
- end
- end
- end
-
- hex_decode(text)
- end
-
- def render_write_error_exception(parsed)
- <<EOH
-#{parsed.invocation_info[:line]} : #{parsed.exception[:message]}
- + CategoryInfo : #{parsed.error_category_message}
- + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
-EOH
- end
-
- def render_exception(parsed)
- <<EOH
-#{parsed.exception[:message]}
-#{parsed.invocation_info[:position_message]}
- + CategoryInfo : #{parsed.error_category_message}
- + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
-EOH
- end
-
- def render_native_command_error(parsed)
- <<EOH
-#{parsed.invocation_info[:my_command]} : #{parsed.exception[:message]}
- + CategoryInfo : #{parsed.error_category_message}
- + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
-EOH
- end
-
- def render_exception_as_error_record(parsed)
- <<EOH
-#{parsed.exception[:message]}
- + CategoryInfo : #{parsed.error_category_message}
- + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
-EOH
- end
-
- private
-
- def hex_decode(text)
- return unless text
-
- text.gsub(/_x(\h\h\h\h)_/) do
- decoded_text = Regexp.last_match[1].hex.chr.force_encoding('utf-8')
- if decoded_text.respond_to?(:scrub)
- decoded_text.scrub
- else
- decoded_text.encode('utf-16', invalid: :replace, undef: :replace).encode('utf-8')
- end
- end
- end
- end
- end
-end
+# Copyright 2016 Matt Wrock <matt@mattwrock.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+require 'base64'
+require_relative 'message'
+require_relative 'message_data/pipeline_state'
+
+module WinRM
+ module PSRP
+ # Handles decoding a raw powershell output response
+ class PowershellOutputDecoder
+ # rubocop:disable Metrics/CyclomaticComplexity
+ # Decode the raw SOAP output into decoded PSRP message,
+ # Removes BOM and replaces encoded line endings
+ # @param raw_output [String] The raw encoded output
+ # @return [String] The decoded output
+ def decode(message)
+ case message.type
+ when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_output]
+ decode_pipeline_output(message)
+ when WinRM::PSRP::Message::MESSAGE_TYPES[:runspacepool_host_call]
+ decode_host_call(message)
+ when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_host_call]
+ decode_host_call(message)
+ when WinRM::PSRP::Message::MESSAGE_TYPES[:error_record]
+ decode_error_record(message)
+ when WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state]
+ if message.parsed_data.pipeline_state == WinRM::PSRP::MessageData::PipelineState::FAILED
+ decode_error_record(message)
+ end
+ end
+ end
+ # rubocop:enable Metrics/CyclomaticComplexity
+
+ protected
+
+ def decode_pipeline_output(message)
+ message.parsed_data.output
+ end
+
+ def decode_host_call(message)
+ text = begin
+ case message.parsed_data.method_identifier
+ when /WriteLine/, 'WriteErrorLine'
+ "#{message.parsed_data.method_parameters[:s]}\r\n"
+ when 'WriteDebugLine'
+ "Debug: #{message.parsed_data.method_parameters[:s]}\r\n"
+ when 'WriteWarningLine'
+ "Warning: #{message.parsed_data.method_parameters[:s]}\r\n"
+ when 'WriteVerboseLine'
+ "Verbose: #{message.parsed_data.method_parameters[:s]}\r\n"
+ when /Write[1-2]/
+ message.parsed_data.method_parameters[:s]
+ end
+ end
+
+ hex_decode(text)
+ end
+
+ def decode_error_record(message)
+ parsed = message.parsed_data
+ text = begin
+ if message.type == WinRM::PSRP::Message::MESSAGE_TYPES[:pipeline_state]
+ render_exception_as_error_record(parsed.exception_as_error_record)
+ else
+ case parsed.fully_qualified_error_id
+ when 'Microsoft.PowerShell.Commands.WriteErrorException'
+ render_write_error_exception(parsed)
+ when 'NativeCommandError'
+ render_native_command_error(parsed)
+ when 'NativeCommandErrorMessage'
+ parsed.exception[:message]
+ else
+ render_exception(parsed)
+ end
+ end
+ end
+
+ hex_decode(text)
+ end
+
+ def render_write_error_exception(parsed)
+ <<EOH
+#{parsed.invocation_info[:line]} : #{parsed.exception[:message]}
+ + CategoryInfo : #{parsed.error_category_message}
+ + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
+EOH
+ end
+
+ def render_exception(parsed)
+ <<EOH
+#{parsed.exception[:message]}
+#{parsed.invocation_info[:position_message]}
+ + CategoryInfo : #{parsed.error_category_message}
+ + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
+EOH
+ end
+
+ def render_native_command_error(parsed)
+ <<EOH
+#{parsed.invocation_info[:my_command]} : #{parsed.exception[:message]}
+ + CategoryInfo : #{parsed.error_category_message}
+ + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
+EOH
+ end
+
+ def render_exception_as_error_record(parsed)
+ <<EOH
+#{parsed.exception[:message]}
+ + CategoryInfo : #{parsed.error_category_message}
+ + FullyQualifiedErrorId : #{parsed.fully_qualified_error_id}
+EOH
+ end
+
+ private
+
+ def hex_decode(text)
+ return unless text
+
+ text.gsub(/_x(\h\h\h\h)_/) do
+ decoded_text = Regexp.last_match[1].hex.chr.force_encoding('utf-8')
+ if decoded_text.respond_to?(:scrub)
+ decoded_text.scrub
+ else
+ decoded_text.encode('utf-16', invalid: :replace, undef: :replace).encode('utf-8')
+ end
+ end
+ end
+ end
+ end
+end
--
2.21.0