--- /dev/null
+#!/usr/bin/perl
+
+open(SSHFP, "-|","sshfp", "-k", "/etc/ssh/ssh_known_hosts") || die $!;
+open(SSHFP_JS, ">", "/var/lib/dns/include/sshfp.js") || die $!;
+
+print SSHFP_JS qq|var SSHFP_RECORDS = [\n|;
+
+while (my $line = <SSHFP>)
+{
+ if ($line =~ /^(\S+) IN SSHFP (\d+) (\d+) ([0-9A-F]+)$/)
+ {
+ my $host = $1;
+ my $algorithm = $2;
+ my $type = $3;
+ my $value = $4;
+
+ print SSHFP_JS qq| SSHFP("${host}", ${algorithm}, ${type}, "${value}");\n|;
+ }
+ else
+ {
+ warn $line;
+ }
+}
+
+print SSHFP_JS qq|];\n|;
+
+close(SSHFP_JS);
+close(SSHFP);
+
+exit 0;
variables :passwords => passwords, :geoservers => geoservers
end
+cookbook_file "/usr/local/bin/dns-update-sshfp" do
+ source "dns-update-sshfp"
+ owner "git"
+ group "git"
+ mode 0o750
+end
+
execute "dns-update" do
action :nothing
command "/usr/local/bin/dns-update"
variables :passwords => passwords
end
+execute "dns-update-sshfp" do
+ action :nothing
+ command "/usr/local/bin/dns-update-sshfp"
+ user "git"
+ group "git"
+ subscribes :run, "template[/etc/ssh/ssh_known_hosts]"
+end
+
cookbook_file "#{node[:dns][:repository]}/hooks/post-receive" do
source "post-receive"
owner "git"