#use Apache::Registry;
use CGI;
use Util;
-use Net::LDAP qw(:all);
+use Net::LDAP qw(LDAP_SUCCESS LDAP_PROTOCOL_ERROR);
use Fcntl;
use POSIX;
use MIME::Base64;
return '' if (!$key);
my @field = split(/ /, $key);
- return '' if $field[0] ne 'ssh-dss' and $field[0] ne 'ssh-rsa';
+ my %keytypes = map {$_=>1} (qw{ssh-dss ssh-rsa ecdsa-sha2-nistp256});
+ return '' unless $keytypes{$field[0]};
return '' if !$field[1];
my $fpr = md5_hex(decode_base64($field[1]));
my $hrfpr = $field[0] . " " . substr($fpr,0,2,"");
sub wiki_link($) {
my ($in) = @_;
- $in =~ s#\[\[(.*?)\|(.*?)\]\]#<a href="http://$1">$2</a>#g;
- $in =~ s#\[\[(.*?)\]\]#<a href="http://$1">$1</a>#g;
+ # [[hostname|text]] makes a link
+ # [[hostname]] makes a link too
+ # if you add a * after [[ it's still the same, only not used for ssh_known_hosts in ud-generate
+ # [[-hostname]] are not links, but get added to known_hosts. we should drop the [[- ]] tho
+ $in =~ s#\[\[-(.*?)\]\]#$1#g;
+ $in =~ s#\[\[\*?(.*?)\|(.*?)\]\]#<a href="http://$1">$2</a>#g;
+ $in =~ s#\[\[\*?(.*?)\]\]#<a href="http://$1">$1</a>#g;
return $in;
}
+# in the purpose field [[host|some other text]] (where some other text is optional)
+# makes a hyperlink on the web thing. we now also add these hosts to the ssh known_hosts
+# file. But so that we don't have to add everything we link we can add an asterisk
+# and say [[*... to ignore it. In order to be able to add stuff to ssh without
+# http linking it we also support [[-hostname]] entries.
+#
+# sponsors are also wikified like purpose. maybe others as well
sub item_uplist($) {
my ($items) = @_;
my $out = undef;
+ my(@tmp) = @$items;
- if (scalar @$items >= 1) {
+ if (scalar @tmp>= 1) {
$out = "<ul>".
join("", map {
"<li>".wiki_link($_)."</li>\n";
- } sort {my $A=$a; my $B=$b; $A =~ s/[\[\]]//g; $B =~ s/[\[\]]//g; $A cmp $B} @{$items}
+ } sort {my $A=$a; my $B=$b; $A =~ s/[\[\]\*]//g; $B =~ s/[\[\]\*]//g; $A cmp $B} @tmp
).
"</ul>";
}
} else {
# display summary info
$hostdetails = "<h1>Summary</h1>\n";
- $hostdetails .= "<table border=\"1\" width=\"90%\">\n<tr>";
+ $hostdetails .= "<table class=\"debform\" border=\"1\" width=\"90%\">\n<tr>";
foreach $key (@summaryorder) {
if ($sortby ne $key) {
$hostdetails .= "<th><a href=\"machines.cgi?sortby=$key&sortorder=asc\">$summaryattrs{$key}</a></th>";