+# human readable fingerprint
+sub sshfingerprint {
+ my $key = shift;
+
+ return '' if (!$key);
+
+ my @field = split(/ /, $key);
+ return '' if $field[0] ne 'ssh-dss' and $field[0] ne 'ssh-rsa';
+ return '' if !$field[1];
+ my $fpr = md5_hex(decode_base64($field[1]));
+ my $hrfpr = $field[0] . " " . substr($fpr,0,2,"");
+ while (length $fpr > 0) {
+ $hrfpr .= ':' . substr($fpr,0,2,"");
+ }
+ return $hrfpr;
+}
+
+sub wiki_link($) {
+ my ($in) = @_;
+ $in =~ s#\[\[(.*?)\|(.*?)\]\]#<a href="http://$1">$2</a>#g;
+ $in =~ s#\[\[(.*?)\]\]#<a href="http://$1">$1</a>#g;
+ return $in;
+}
+
+sub item_uplist($) {
+ my ($items) = @_;
+ my $out = undef;
+
+ if (scalar @$items >= 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}
+ ).
+ "</ul>";
+ }
+ return $out;
+}
+