projects
/
mirror
/
userdir-ldap-cgi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6dc665d
)
Improve sshfingerprint implementation, remove unavailable fields from being displayed
author
rmurray
<>
Wed, 27 Dec 2006 22:00:04 +0000
(22:00 +0000)
committer
rmurray
<>
Wed, 27 Dec 2006 22:00:04 +0000
(22:00 +0000)
debian/changelog
patch
|
blob
|
history
machines.cgi
patch
|
blob
|
history
diff --git
a/debian/changelog
b/debian/changelog
index
3ac7f7f
..
7c61cb3
100644
(file)
--- a/
debian/changelog
+++ b/
debian/changelog
@@
-1,3
+1,12
@@
+userdir-ldap-cgi (0.3.9) unstable; urgency=low
+
+ * machines.cgi
+ - Reimplement ssh fingerprint without using temp files and external
+ programs.
+ - Remove access-restricted date fields.
+
+ -- Ryan Murray <rmurray@debian.org> Wed, 27 Dec 2006 15:59:34 -0700
+
userdir-ldap-cgi (0.3.8) unstable; urgency=low
Changes by Martin Schulze:
userdir-ldap-cgi (0.3.8) unstable; urgency=low
Changes by Martin Schulze:
diff --git
a/machines.cgi
b/machines.cgi
index
de4d30f
..
383f7cd
100755
(executable)
--- a/
machines.cgi
+++ b/
machines.cgi
@@
-1,8
+1,9
@@
#!/usr/bin/perl
#!/usr/bin/perl
-# $Id: machines.cgi,v 1.1
1 2004/11/18 14:27:46 joe
y Exp $
+# $Id: machines.cgi,v 1.1
2 2006/12/27 23:00:04 rmurra
y Exp $
# (c) 1999 Randolph Chung. Licensed under the GPL. <tausq@debian.org>
# (c) 2004 Martin Schulze. Licensed under the GPL. <joey@debian.org>
# (c) 1999 Randolph Chung. Licensed under the GPL. <tausq@debian.org>
# (c) 2004 Martin Schulze. Licensed under the GPL. <joey@debian.org>
+# (c) 2006 Ryan Murray. Licensed under the GPL. <rmurray@debian.org>
use lib '.';
use strict vars;
use lib '.';
use strict vars;
@@
-12,6
+13,8
@@
use Util;
use Net::LDAP qw(:all);
use Fcntl;
use POSIX;
use Net::LDAP qw(:all);
use Fcntl;
use POSIX;
+use MIME::Base64;
+use Digest::MD5 qw(md5_hex);
my (%attrs, @attrorder, %summaryattrs, @summaryorder);
my (%attrs, @attrorder, %summaryattrs, @summaryorder);
@@
-33,15
+36,15
@@
my (%attrs, @attrorder, %summaryattrs, @summaryorder);
'sshrsahostkey' => 'SSH host key',
'sshrsahostfprint' => 'SSH host fingerprint',
'description' => 'Description',
'sshrsahostkey' => 'SSH host key',
'sshrsahostfprint' => 'SSH host fingerprint',
'description' => 'Description',
-
'createtimestamp' => 'Entry created',
-
'modifytimestamp' => 'Entry modified'
+
#
'createtimestamp' => 'Entry created',
+
#
'modifytimestamp' => 'Entry modified'
);
# This defines what fields are displayed, and in what order
@attrorder = qw(hostname admin architecture distribution access
sponsor sponsor-admin location machine memory
disk bandwidth status notes sshrsahostkey sshrsahostfprint
);
# This defines what fields are displayed, and in what order
@attrorder = qw(hostname admin architecture distribution access
sponsor sponsor-admin location machine memory
disk bandwidth status notes sshrsahostkey sshrsahostfprint
- description
createtimestamp modifytimestamp
);
+ description);
# ditto for summary
%summaryattrs = ('hostname' => 'Host name',
# ditto for summary
%summaryattrs = ('hostname' => 'Host name',
@@
-61,28
+64,21
@@
sub DieHandler {
$ldap->unbind if (defined($ldap));
}
$ldap->unbind if (defined($ldap));
}
+# human readable fingerprint
sub sshfingerprint {
sub sshfingerprint {
- my $keys = shift;
- my $res = '';
- my $fn = '';
+ my $key = shift;
- return '' if (!$keys);
- do {
- $fn = tmpnam();
- } until sysopen(FH, $fn, O_RDWR|O_CREAT|O_EXCL, 0600);
+ return '' if (!$key);
- foreach my $key (split(/<br>/, $keys)) {
- printf FH "foo %s\n", $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,"");
}
}
- close (FH);
-
- if (open (S, "ssh-keygen -l -f $fn|")) {
- $res = join("\n", <S>);
- close (S);
- }
- $res =~ s/\n/<br>/g;
- unlink ($fn);
- return $res;
+ return $hrfpr;
}
$SIG{__DIE__} = \&DieHandler;
}
$SIG{__DIE__} = \&DieHandler;
@@
-130,7
+126,9
@@
foreach $dn (sort {$entries->{$a}->{host}->[0] cmp $entries->{$b}->{host}->[0]}
$output{sshrsahostkey} .= $key . "<br>";
}
$output{sshrsahostkey} .= $key . "<br>";
}
- $output{sshrsahostfprint} = sshfingerprint($output{sshrsahostkey});
+ foreach $key (@{$data->{sshrsahostkey}}) {
+ $output{sshrsahostfprint} .= sshfingerprint($key) . "<br>";
+ }
# URL
my ($sponsor, $url) = undef;
# URL
my ($sponsor, $url) = undef;
@@
-138,7
+136,7
@@
foreach $dn (sort {$entries->{$a}->{host}->[0] cmp $entries->{$b}->{host}->[0]}
foreach $sponsor (@{$data->{sponsor}}) {
$sponsor =~ m#((http|ftp)://\S+)#i;
$url = $1;
foreach $sponsor (@{$data->{sponsor}}) {
$sponsor =~ m#((http|ftp)://\S+)#i;
$url = $1;
- $sponsor =~ s/
$url
//;
+ $sponsor =~ s/
\s*$url\s*
//;
$output{sponsor} .= "<br>" if ($output{sponsor});
if ($url) {
$output{sponsor} .= sprintf("<a href=\"%s\">%s</a>", $url, $sponsor);
$output{sponsor} .= "<br>" if ($output{sponsor});
if ($url) {
$output{sponsor} .= sprintf("<a href=\"%s\">%s</a>", $url, $sponsor);
@@
-169,14
+167,14
@@
if ($output{havehostdata}) {
$hostdetails .= "<ul>\n";
foreach $key (@attrorder) {
if ($output{$key}) {
$hostdetails .= "<ul>\n";
foreach $key (@attrorder) {
if ($output{$key}) {
- $hostdetails .= "<li><b>$attrs{$key}:</b>
$output{$key}\n";
+ $hostdetails .= "<li><b>$attrs{$key}:</b>$output{$key}\n";
}
}
$hostdetails .= "</ul>\n";
} else {
# display summary info
$hostdetails = "<h1>Summary</h1>\n";
}
}
$hostdetails .= "</ul>\n";
} else {
# display summary info
$hostdetails = "<h1>Summary</h1>\n";
- $hostdetails .= "<table border=
1 width=90%
>\n<tr>";
+ $hostdetails .= "<table border=
\"1\" width=\"90%\"
>\n<tr>";
foreach $key (@summaryorder) {
$hostdetails .= "<th>$summaryattrs{$key}</th>";
}
foreach $key (@summaryorder) {
$hostdetails .= "<th>$summaryattrs{$key}</th>";
}