The new fingerprint format wis incompatible with the previous regex.
This commit is contained in:
parent
05d4658b32
commit
38384bd952
|
@ -83,6 +83,7 @@ class Key < ActiveRecord::Base
|
||||||
|
|
||||||
cmd_status = 0
|
cmd_status = 0
|
||||||
cmd_output = ''
|
cmd_output = ''
|
||||||
|
explicit_fingerprint_algorithm = false
|
||||||
Tempfile.open('gitlab_key_file') do |file|
|
Tempfile.open('gitlab_key_file') do |file|
|
||||||
file.puts key
|
file.puts key
|
||||||
file.rewind
|
file.rewind
|
||||||
|
@ -90,7 +91,6 @@ class Key < ActiveRecord::Base
|
||||||
# OpenSSH 6.8 introduces a new default output format for fingerprints.
|
# OpenSSH 6.8 introduces a new default output format for fingerprints.
|
||||||
# Check the version and decide which command to use.
|
# Check the version and decide which command to use.
|
||||||
version_output, version_status = popen(%W(ssh -V))
|
version_output, version_status = popen(%W(ssh -V))
|
||||||
explicit_fingerprint_algorithm = false
|
|
||||||
if version_status.zero?
|
if version_status.zero?
|
||||||
out, _ = version_output.scan /.*?(\d)\.(\d).*?,/
|
out, _ = version_output.scan /.*?(\d)\.(\d).*?,/
|
||||||
major, minor = out[0], out[1]
|
major, minor = out[0], out[1]
|
||||||
|
@ -107,8 +107,15 @@ class Key < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
if cmd_status.zero?
|
if cmd_status.zero?
|
||||||
cmd_output.gsub /(\h{2}:)+\h{2}/ do |match|
|
if explicit_fingerprint_algorithm
|
||||||
self.fingerprint = match
|
cmd_output.gsub /(MD5:)(\h{2}:)+\h{2}/ do |match|
|
||||||
|
match.slice! /^MD5:/
|
||||||
|
self.fingerprint = match
|
||||||
|
end
|
||||||
|
else
|
||||||
|
cmd_output.gsub /(\h{2}:)+\h{2}/ do |match|
|
||||||
|
self.fingerprint = match
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue