lib/ohai/plugins/ssh_host_key.rb in ohai-18.0.14 vs lib/ohai/plugins/ssh_host_key.rb in ohai-18.0.26
- old
+ new
@@ -1,84 +1,84 @@
-# frozen_string_literal: true
-#
-# Author:: Bryan McLellan <btm@chef.io>
-# Copyright:: Copyright (c) Chef Software Inc.
-# License:: Apache License, Version 2.0
-#
-# 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.
-#
-
-Ohai.plugin(:SSHHostKey) do
- provides "keys/ssh"
- depends "keys"
-
- def extract_keytype?(content)
- case content[0]
- when "ssh-dss"
- [ "dsa", nil ]
- when "ssh-rsa"
- [ "rsa", nil ]
- when /^ecdsa/
- [ "ecdsa", content[0] ]
- when "ssh-ed25519"
- [ "ed25519", nil ]
- else
- [ nil, nil ]
- end
- end
-
- collect_data do
- keys[:ssh] = Mash.new
-
- sshd_config = if file_exist?("/etc/ssh/sshd_config")
- "/etc/ssh/sshd_config"
- elsif file_exist?("/etc/sshd_config")
- # Darwin
- "/etc/sshd_config"
- else
- logger.trace("Plugin SSHHostKey: Failed to find sshd configuration file")
- nil
- end
-
- if sshd_config
- file_open(sshd_config) do |conf|
- conf.each_line do |line|
- if /^hostkey\s/i.match?(line)
- pub_file = "#{line.split[1]}.pub"
- content = file_read(pub_file).split
- key_type, key_subtype = extract_keytype?(content)
- keys[:ssh]["host_#{key_type}_public"] = content[1] unless key_type.nil?
- keys[:ssh]["host_#{key_type}_type"] = key_subtype unless key_subtype.nil?
- end
- end
- end
- end
-
- if keys[:ssh][:host_dsa_public].nil? && file_exist?("/etc/ssh/ssh_host_dsa_key.pub")
- keys[:ssh][:host_dsa_public] = file_read("/etc/ssh/ssh_host_dsa_key.pub").split[1]
- end
-
- if keys[:ssh][:host_rsa_public].nil? && file_exist?("/etc/ssh/ssh_host_rsa_key.pub")
- keys[:ssh][:host_rsa_public] = file_read("/etc/ssh/ssh_host_rsa_key.pub").split[1]
- end
-
- if keys[:ssh][:host_ecdsa_public].nil? && file_exist?("/etc/ssh/ssh_host_ecdsa_key.pub")
- content = file_read("/etc/ssh/ssh_host_ecdsa_key.pub")
- keys[:ssh][:host_ecdsa_public] = content.split[1]
- keys[:ssh][:host_ecdsa_type] = content.split[0]
- end
-
- if keys[:ssh][:host_ed25519_public].nil? && file_exist?("/etc/ssh/ssh_host_ed25519_key.pub")
- keys[:ssh][:host_ed25519_public] = file_read("/etc/ssh/ssh_host_ed25519_key.pub").split[1]
- end
- end
-end
+# frozen_string_literal: true
+#
+# Author:: Bryan McLellan <btm@chef.io>
+# Copyright:: Copyright (c) Chef Software Inc.
+# License:: Apache License, Version 2.0
+#
+# 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.
+#
+
+Ohai.plugin(:SSHHostKey) do
+ provides "keys/ssh"
+ depends "keys"
+
+ def extract_keytype?(content)
+ case content[0]
+ when "ssh-dss"
+ [ "dsa", nil ]
+ when "ssh-rsa"
+ [ "rsa", nil ]
+ when /^ecdsa/
+ [ "ecdsa", content[0] ]
+ when "ssh-ed25519"
+ [ "ed25519", nil ]
+ else
+ [ nil, nil ]
+ end
+ end
+
+ collect_data do
+ keys[:ssh] = Mash.new
+
+ sshd_config = if file_exist?("/etc/ssh/sshd_config")
+ "/etc/ssh/sshd_config"
+ elsif file_exist?("/etc/sshd_config")
+ # Darwin
+ "/etc/sshd_config"
+ else
+ logger.trace("Plugin SSHHostKey: Failed to find sshd configuration file")
+ nil
+ end
+
+ if sshd_config
+ file_open(sshd_config) do |conf|
+ conf.each_line do |line|
+ if /^hostkey\s/i.match?(line)
+ pub_file = "#{line.split[1]}.pub"
+ content = file_read(pub_file).split
+ key_type, key_subtype = extract_keytype?(content)
+ keys[:ssh]["host_#{key_type}_public"] = content[1] unless key_type.nil?
+ keys[:ssh]["host_#{key_type}_type"] = key_subtype unless key_subtype.nil?
+ end
+ end
+ end
+ end
+
+ if keys[:ssh][:host_dsa_public].nil? && file_exist?("/etc/ssh/ssh_host_dsa_key.pub")
+ keys[:ssh][:host_dsa_public] = file_read("/etc/ssh/ssh_host_dsa_key.pub").split[1]
+ end
+
+ if keys[:ssh][:host_rsa_public].nil? && file_exist?("/etc/ssh/ssh_host_rsa_key.pub")
+ keys[:ssh][:host_rsa_public] = file_read("/etc/ssh/ssh_host_rsa_key.pub").split[1]
+ end
+
+ if keys[:ssh][:host_ecdsa_public].nil? && file_exist?("/etc/ssh/ssh_host_ecdsa_key.pub")
+ content = file_read("/etc/ssh/ssh_host_ecdsa_key.pub")
+ keys[:ssh][:host_ecdsa_public] = content.split[1]
+ keys[:ssh][:host_ecdsa_type] = content.split[0]
+ end
+
+ if keys[:ssh][:host_ed25519_public].nil? && file_exist?("/etc/ssh/ssh_host_ed25519_key.pub")
+ keys[:ssh][:host_ed25519_public] = file_read("/etc/ssh/ssh_host_ed25519_key.pub").split[1]
+ end
+ end
+end