webin modul user.cgi


jden44

New Member
Hallo,

bin dabei, das Webmin Modul für meine Schule zu optimieren.
Vielleicht kann mir freundlicherweise jemand helfen.

In der user.cgi wird ein html output generiert der alle Benutzer auflistet.
Nun sollen in dem output aber nur 2 Gruppen angezeigt werden, und zwar
nur die Gruppen "lehrer und schueler", damit bei der Benutzung durch Lehrer
keine falschen Accounts gelöscht werden.

Könnte mir jemand die user.cgi so umschreiben, das nur diese beiden Gruppen (wenn vorhanden) html mäßig ausgedruckt werden?
(Änderung wahrscheinlich ab Zeile 182)

Hier der Code:
Code:
#!/usr/bin/perl
#############################################################################
#Script:          user.cgi
#Geschrieben von: Tobias Brinkert & J. Eisentraut
#letzte Aenderung: 06.09.2005
#Version:         0.4.0
#############################################################################

use vars qw(%text $cb %groups %config $tb $module_name);
sub ausgabe_usertable($);
sub ausgabe_usertable2($);

#############################################################################
#Bibliotheken einbinden
#
do './usermgr-lib.pl';
do '../web-lib.pl';
&init_config();
#############################################################################

#############################################################################
# Funktion: void ausgabe_usertable($)
#############################################################################
sub ausgabe_usertable($){
    my $group   = $_[0];                    # Gruppenname
    my %user    = getgroupprimuser($group); # User der Gruppe
    return() unless (%user);
    my $percent = 100 / $config{'userrow'}; # Spaltenbreite
    my $rows    = $config{'userrow'} - 1;     # Spaltenanzahl - 1
    my $anzahl  = 0;                        # Anzahl der Benutzer
    my $i       = 1;                        # Laufvariable
    foreach (keys %user){
        delete $user{$_} if (getpwnam($_) < 100);
    }
    $anzahl = keys %user;
    print "<table border=0 width=100% cellpadding=2 cellspacing=0>\n";
    print "  <tr $tb>\n";
    print "    <th colspan=$rows align=left>$text{user23} $group</th>\n";
    print "    <th width=$percent% align=right>$anzahl $text{user19}</th>\n";
    print "  </tr>\n";
    foreach (sort keys %user){
        next if (getpwnam($_) < 100);
        print "  <tr $cb>\n" if ($i == 1);
        print "    <td width=$percent%><input type=checkbox name=chk_$_ value=$_>&nbsp;<a href=./usermod.cgi?user=$_>$_</a></td>\n";
        if ($i == $config{userrow}){
            print "  </tr>\n";
            $i = 1;
        }
        else {
            ++$i;
        }
    }
    if ($i != 1) {
        for ($i..$config{userrow}){
            print "    <td width=$percent%>&nbsp;</td>\n";
        }
        print "  </tr>\n";
    }
    print <<EOP;
  <tr $cb>
    <th colspan=$config{'userrow'}><hr><input type=checkbox name=chks_all_$group value=$group>&nbsp;$text{'user20'}</th>
  </tr>
</table>
<br>
EOP
    return();
}
#############################################################################
# Funktion: void ausgabe_usertable2($)
#############################################################################
sub ausgabe_usertable2($){
    my $usertype = $_[0];                    # Usertyp
    my %user     = getusers($usertype);      # User der Gruppe
    return() unless (%user);
    my $percent  = 100 / $config{'userrow'}; # Spaltenbreite
    my $i        = 1;                        # Laufvariable
    my $anzahl   = keys %user;               # Anzahl der Benutzer
    my $rows     = $config{userrow} - 1;     # Spaltenanzahl - 1
    print "<table border=0  width=100% cellpadding=2 cellspacing=0>\n";
    print "  <tr $tb>\n";
    print "    <th colspan=$rows align=left>&nbsp;</th>\n";
    print "    <th width=$percent% align=right>$anzahl $text{user19}</th>\n";
    print "  </tr>\n";
    foreach (sort keys %user){
        print "  <tr $cb>\n" if ($i == 1);
        print "    <td width=$percent%><input type=checkbox name=chk_$_ value=$_>&nbsp;<a href=./usermod.cgi?user=$_>$_</a></td>\n";
        if ($i == $config{userrow}){
            print "  </tr>\n";
            $i = 1;
        }
        else {
            ++$i;
        }
    }
    if ($i != 1) {
        for ($i..$config{userrow}){
            print "    <td>&nbsp;</td>\n";
        }
        print "  </tr>\n";
    }
    print "</table>\n";
    return();
}
#############################################################################
# Main-Programm
#############################################################################

&header($text{titelu1},"","user",undef, undef,undef, "<nobr>Written by</nobr><br>
        <nobr><a href=mailto:t.brinkert\@15bit.de>Tobias Brinkert</a> & <a href=\"mailto:j_eisentraut\@web.de\">J. Eisentraut</a><nobr><br>
        <nobr><a href=http://www.j-eisentraut.de>Home://page</a><nobr><br>
        <nobr>Version <b>$text{version}</b><nobr>");
print "<hr>\n";
print "<p>\n";
#############################################################################
#Ausgabe der Tabelle für das Anlegen einers neuen Benutzers
print "<form action=./useradd.cgi method=post>\n";
print "<h3>$text{user3}</h3>\n";
print "<table border=0 width=100% $cb cellpadding=5 cellspacing=0>\n";
print "  <tr>\n";
print "    <td><b>" . hlink($text{user4}, "user#1") . ":</b></td>\n";
print "    <td><input type=text maxlength=15 name=txt_username size=20></td>\n";
print "    <td><b>" . hlink($text{user5}, "user#2") . ":</b></td>\n";
print "    <td><input type=text maxlength=50 name=txt_realname size=25></td>\n";
print "  </tr>\n";
print "  <tr>\n";
print "    <td><b>" . hlink($text{user17}, "user#3") . ":</b></td>\n";
print "    <td><select name=pop_group size=1>\n";
print "        <option selected>------</option>\n";
%groups = getgroups("normal");
foreach (sort keys %groups){
    print "        <option>$_</option>\n";
}
print "        </select>\n";
print "    </td>\n";
print "    <td><b>" . hlink($text{user16}, "user#4") . ":</b></td>\n";
print "    <td><input type=radio name=rad_passwd value=yes checked>&nbsp;$text{user13}<br>\n";
print "        <input type=radio name=rad_passwd value=no>&nbsp;$text{user14}\n";
print "    </td>\n";
print "  </tr>\n";
print "  <tr>\n";
print "    <td><b>" . hlink($text{user15}, "user#8") . ":</b></td>\n";
print <<EOP;
    <td><input type=radio name=rad_skel value=yes checked>&nbsp;$text{user13}<br>
        <input type=radio name=rad_skel value=no>&nbsp;$text{user14}
    </td>
EOP
print "    <td><b>" . hlink($text{user9}, "user#6") . ":</b></td>\n";
print "    <td><input type=radio name=rad_shell value=\"\/bin\/false\" checked>&nbsp;$text{user10}<br>\n";
print "        <input type=radio name=rad_shell value=$config{stdshell}>&nbsp;$text{user11} $config{stdshell})\n";
print "    </td>\n";
print "  </tr>\n";
print "  <tr>\n";
print "    <td><b>" . hlink($text{user12}, "user#7") . ":</b></td>\n";
print "    <td><input type=radio name=rad_smb value=yes checked>&nbsp;$text{user13}<br>\n";
print "        <input type=radio name=rad_smb value=no>&nbsp;$text{user14}</br>\n";
print "    </td>\n";
print "  </tr>\n";
print "  <tr>\n";

print "<td><b>" . hlink($text{user24}, "user#10") . ":</b></td>\n";
print "<td><input type=radio name=\"quota\" value=ja checked>&nbsp;$text{user25}<br>";
print "        <input type=radio name=quota value=nein>&nbsp;$text{user26}</td>";
print "    <td><b>" . hlink($text{user6}, "user#5") . ":</b></td>\n";
print "    <td><input type=radio name=rad_usertyp value=sch checked>&nbsp;$text{user7}<br>\n";
print "        <input type=radio name=rad_usertyp value=leh>&nbsp;$text{user8}\n";
print "    </td>\n";
print "  </tr>";
print "</table>";
print "<br>";
print "<table border=0 cellspacing=0 cellpadding=5>";
print "  <tr>";
print "    <td>&nbsp;<input type=submit value=\"$text{submitu1}\">&nbsp;</td>";
print "    <td>&nbsp;<input type=reset value=\"$text{reset}\">&nbsp;</td>";
print "  </tr>";
print "</table>";
print "</form>";
print "<hr>";

print "<form action=./userdel.cgi method=post>\n";
print "<h3>$text{user1}</h3>\n";
#############################################################################
#Ausgabe der Benutzer-Tabelle
my %groups=getgroups('normal');
foreach(sort keys %groups){
    ausgabe_usertable($_);
}
print "<table border=0 $cb cellpadding=5 cellspacing=0>\n";
print "  <tr>\n";
print "    <td><b>" . hlink($text{user18}, "user#9") . ":</b></td>\n";
print <<EOP;
    <td><input type=radio name=rad_homedel checked value=yes>&nbsp;$text{user13}<br>
        <input type=radio name=rad_homedel value=no>&nbsp;$text{user14}
    </td>
  </tr>
</table>
<hr>
EOP

#############################################################################
#Ausgabe der Systembenutzer-Tabelle
#
print "<h3>$text{user2}</h3>\n";
ausgabe_usertable2('system');
print "<hr>\n";
#############################################################################
#Ausgabe der Maschinenaccount-Tabelle
#
print "<h3>$text{user21}</h3>\n";
ausgabe_usertable2('maschine');
print "<hr>\n";


#############################################################################
#Tabelle für Buttons
print <<EOT;
<br>
<table border=0 cellspacing=0 cellpadding=5>
  <tr>
    <td>&nbsp;<input type=submit value="$text{submitu2}">&nbsp;</td>
    <td>&nbsp;<input type=reset value="$text{reset}">&nbsp;</td>
  </tr>
</table>
</form>
<hr>
EOT
#
#Formular- und Tabellenende
#############################################################################

&footer("/$module_name", $text{back1});

Besten Dank im voraus

jden44
 
Hallo,

ist hier offensichtlich keiner der mir helfen kann ?
Ist wahrscheinlich nur eine Kleinigkeit, die umgeschrieben werden muss.

Vielleicht kann mir doch jemand helfen.

Danke im voraus.

jden44
 

Back
Top