symlink.ch
Wissen Vernetzt - deutsche News für die Welt
 
symlink.ch
FAQ
Mission
Über uns
Richtlinien

Moderation
Einstellungen
Story einsenden

Suchen & Index
Ruhmeshalle
Statistiken
Umfragen

Redaktion
Themen
Partner
Planet

XML | RDF | RSS
PDA | WAP | IRC
Symbar für Opera
Symbar für Mozilla

Freunde
Benutzergruppen
LUG Switzerland
LUG Vorarlberg
LUGen in DE
SIUG
CCCZH
Organisationen
Wilhelm Tux
FSF Europe
Events
LinuxDay Dornbirn
BBA Schweiz
CoSin in Bremgarten AG
VCFe in München
Menschen
maol
Flupp
Ventilator
dawn
gumbo
krümelmonster
XTaran
maradong
tuxedo

 
Arghhhhhh, Webmin!
Veröffentlicht durch Ventilator am Samstag 07. Juni, 15:06
Aus der Systemadministrations Abteilung
Braindump thomas schreibt "Ich habe die schöne Aufgabe erhalten auf einem Unix-Server Webmin zu implementieren. Ziel war dass ein Kunde einen bestimmten UID und GID Range selbst verwalten kann. Ausserdem sollte es für eine Userrevalidierung möglich sein, bestimmten Webmin-Usern nur lesend Zugriff auf diesen UID/GID-Range zu geben."

"Um die User-Administration zu machen, habe ich mich für das Modul "useradmin" entschieden. Dieses hat leider keinen "read-only"-Modus, also habe ich "useradmin" entsprechend umgeschrieben.

Zumindest habe ich es geschafft, die Aufgabe umzusetzen und wie erste Tests zeigen, funktioniert es auch. Während der Arbeit habe ich aber ziemlich viel Koffein zu mir nehmen müssen *g*.

Leider ist Webmin im ziemlich miesesten Coding-Style, den ich je gesehen habe, geschrieben (falls jemand ein Projekt mit einem schlechteren kennt, bitte als Kommentar posten). Dazu zwei Beispiele aus der offiziellen Entwickler-Dokumentation von Webmin:

# foobar-lib.pl
# Common functions used for managing the foobar user list

do '../web-lib.pl';
&init_config();

# list_users()
# Returns a list of all foobar users
sub list_users
{
...
}

Wo bleiben use warnings und use strict? Warum werden keine here docs benutzt? Soll das aktuelle @_ wirklich jeder Subroutine übergeben werden (&)? Und warum sind die Library-Funktionen nicht in Perl Modulen untergebracht?

&header(title, image, [help], [config], [noindex], [noroot], [text], [header], [body], [below])

Dies ist eine API-Funktion. Als ich das gelesen habe, musste ich sofort an eine Perlmonks-Story denken. Dort steht übrigens auch die Lösung zu diesem Problem: Hash als Attribut für die Funktion verweden.

Leider sind praktisch alle Webmin-Module und Webmin selbst in diesem Stil geschrieben. Aber nicht nur der Coding-Style und die API sind nicht wirklich gelungen. Das Theme-Handling ist ebenfalls etwas komisch. Wenn man Webmins miniserv.pl als HTTP/CGI-Server einsetzt, funktionieren alle Themes. Benutzt man jedoch Apache, so kann man nur noch Old Webmin theme benutzen. Warum ist ein Teil des Theme-Handling in miniserv.pl eingebaut?

Mit den obigen Dingen kann man ja noch leben, solange man Webmin nur über miniserv.pl laufen lässt und keine eigenen Module entwickelt.

Richtig haaresträubend wird es aber, wenn man sich den Code von "useradmin" anschaut. Anstatt auf Betriebssystem-Tools wie useradd, usermod, passwd etc. zurückzugreifen, werden Änderungen an Usern und Gruppen direkt an /etc/passwd, /etc/shadow etc. vorgenommen.

Nachdem ich das endlich loswerden konnte, geht es mir schon wieder etwas besser. Es stört mich aber ziemlich stark, dass Perl durch Projekte wie Webmin einen schlechten Ruf bekommt (böse Zungen würden jetzt behaupten, dass Perl dazu Webmin gar nicht nötig hat *g*).

Kennt jemand vielleicht eine Alternative zu Webmin? Hat sich bei linuxconf eigentlich etwas verbessert in den letzten Jahren? Beim nächsten Projekt möchte ich nämlich gerne etwas weniger Koffein verbrauchen.

"

Alles kostenpflichtig? | Druckausgabe | PGP Keysiging in Zürich  >

 

 
symlink.ch Login
Login:

Passwort:

extrahierte Links
  • Entwickler-Dokumentation
  • an eine Perlmonks-Story
  • linuxconf
  • thomas
  • Webmin
  • Mehr zu Braindump
  • Auch von Ventilator
  • Kolumnen
  • Life Video Stream manipulation
  • Internet-Versicherung?
  • Swisscom PWLAN Erfahrungen
  • Desktop Light Linux
  • LinuxSonntag
  • LinuxSamstag
  • Die Spammerfalle
  • Lustiger Google-Bug
  • Configfile-Chaos: Ist XML die Loesung?
  • Garfield wird heute 25 Jahre alt
  • Diese Diskussion wurde archiviert. Es können keine neuen Kommentare abgegeben werden.
    vim (Score:1)
    Von Maverick (lb-web@projectdream.org) am Saturday 07. June, 15:59 MES (#1)
    (User #757 Info) http://projectdream.org
    Ich weiss wieso ich so Webadministrationsquatsch nicht mag. Unsere Kunden duerfen zum Glueck ueberhaupt nicht auf die von uns Installierten Rechner zugreifen, womit sich dieses Problem leicht geloest hat :)
    work for me (Score:2)
    Von gurix (mgraf AFFENSCHWANZ iframe PUNKT ch) am Sunday 08. June, 22:09 MES (#2)
    (User #664 Info) http://www.iframe.ch
    Also ich finde Webmin nicht schlecht, ich brauche ihn einfach als enduser, resp. sysop.

    Leider ist es oft so, dass sehr gute Programme schlecht programmiert und dokumentiert sind.

    P.S: Webmin macht auf OpenBSD die User wirklich nicht sauber, erst ein usermod führt zum erhofften Erfolg
    http://www.iframe.ch
    Re:work for me (Score:2)
    Von thomas (thomas@beeblebrox.net) am Monday 09. June, 10:45 MES (#3)
    (User #316 Info) http://www.beeblebrox.net
    Also ich finde Webmin nicht schlecht, ich brauche ihn einfach als enduser, resp. sysop.

    Ja, als End-User ist er wirklich brauchbar. Aber du solltest nie einen Blick in die Sourcen werfen, sonst bekommst du ein schlechtes Gewissen, dass du diese deinem System antust ;).

    Leider ist es oft so, dass sehr gute Programme schlecht programmiert und dokumentiert sind.

    Ist das nicht ein Widerspruch?

    P.S: Webmin macht auf OpenBSD die User wirklich nicht sauber, erst ein usermod führt zum erhofften Erfolg

    Das überrascht mich nicht ;). Unter GNU/Linux klappt es so einigermassen. Ich muss aber bald auf AIX testen. Ich glaube nicht, dass es dort ohne Probleme gehen wird...


    --
    You can see any bug as a feature, provided it's suitably documented.
       -- Damian Conway
    Webmin Code (Score:0)
    Von Anonymer Feigling am Tuesday 17. June, 18:20 MES (#4)
    Wie wärs denn mit eine Mail und dem Angebot an Mitentwicklung an die Webminentwicker? Das würde doch beiden entgegenkommen...

    Linux User Group Schweiz
    Durchsuche symlink.ch:  

    Never be led astray onto the path of virtue.
    trash.net

    Anfang | Story einsenden | ältere Features | alte Umfragen | FAQ | Autoren | Einstellungen