Fix purposes_uplist to use passed argument instead of global variable
[mirror/userdir-ldap-cgi.git] / machines.cgi
index 166c2ca..bf0c058 100755 (executable)
@@ -83,6 +83,28 @@ sub sshfingerprint {
     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 purposes_uplist($) {
+       my ($purposes) = @_;
+       my $out = undef;
+
+       if (scalar @$purposes >= 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} @{$purposes}
+                       ).
+                       "</ul>";
+       }
+       return $out;
+}
+
 $SIG{__DIE__} = \&DieHandler;
 
 my $query = new CGI;
@@ -92,6 +114,7 @@ my $sortorder = lc($query->param('sortorder')) || "asc";
 
 &Util::HTMLSendHeader;
 $ldap = Net::LDAP->new($config{ldaphost}) || &Util::HTMLError($!);
+&Util::UpgradeConnection($ldap) unless $config{usessl} eq 'False';
 $mesg;
 $ldap->bind;
 
@@ -149,9 +172,9 @@ foreach $dn (sort {$entries->{$a}->{host}->[0] cmp $entries->{$b}->{host}->[0]}
       }
     }
 
-       #Reformat purposes to be pleasing for the human eye:
-       $output{purpose} = join(",", @{$data->{purpose}});
-    
+    my $purpose = purposes_uplist($data->{purpose});
+    $output{purpose} = $purpose if defined $purpose;
+
     $selected = " selected ";    
   }