Hallo Hermann,
Danke für Deine Anteilnahme.
Wie Du schon schreibst, muss man stets ein Reverse-Engeneering von allen guten und nicht so guten Beispielen machen, um zu erahnen, was denn das freetz ist und wie das cgi arbeitet. Du schwärmst einerseits von der tollen Möglichkeiten, andereseits kennst Du sie nur an der "Oberfläche". Das hällt mich schon ein wenig davon ab, sensible Dinge ins Interface zu packen.
Bis jetzt habe ich folgendes verstanden (bitte korigiert mich):
Das Framework besteht aus 2 Teilen: dem
module.cgi - erzeugt die Eingabefelder im FREETZ Formular
rc.module - ist das Hintergrund - "postback" cgi zu dem Formular, wobei die Felder nicht aus QUERY_STRING oder STDIN geparsed werden müssen, sondern über die SHELL Variablen zugänglich sind.
rc.module ist aber auch so was wie ein "pseudo-deamon"
welche Funktionen die
modlibrc liefert ist mir unklar.
modreg scheint einer der Zauberstäbe zu sein, mit dem man das Interface gestalten kann. Da gibt es wohl:
modreg cgi pkg title, was einen Eintrag im Bereich Pakete bewirkt.
modreg extra pkg title sec-level cgi-name erzeugt wohl auch einen Menu Eintrag, wo weiss ich noch nicht.
modreg file id title sec-level desc-file klingt nach der alternativen Datensammler Datei für das extra script, was es mit der id auf sich hat und wozu das desc file gut ist, kann man nur erahnen.
modreg status pkg title cgi-name[/B] ist mir unklar, vermutlich liefert es den status zurück vom rc.mod oder so?
Dann die .def dateien:
CAPTION="Überschrift"
DESCRIPTION="Noch eine Überschrift"
CONFIG_FILE="/tmp/flash/hufo_file" - das ist wohl die eigentliche Datei
CONFIG_SAVE="modsave flash" - das soll den ganzen flash flashen
CONFIG_TYPE="text" - was gibt es außer text, welche auswirkungen hat der Eintrag, werden damit auch execute flags gesetzt gesetzt?
Ich muss ja nicht nur Parameter ablegen, sondern auch extra scripte, kann ich die auch damit in das flash schreiben? Man könnte ja reine CGI pakete ohne die Firmware zu flashen damit in die Box einbauen, sogar ganz extern vom stick, wenn man denn die Funktionen verstehen würde.
modconf load|save|default|set|vars pkg macht bitte was genau?
modconf merge|diff conf-file erzeugt wohl die diff datei zwischen defaults und usereingaben. Ich vermute mal, man muss danach mit modconf save paket damit irgendwas anstellen? und mit modsave flash alles tatsächlich schreiben.
modsave speichert den ganzen flash inklusive user & passwd
modsave flash speichert nur das flash verzeichnis
Was gibt es eigentlich außer das flash verzeichnis, was modsave noch flashen kann? Bei mir bewirken beide Befehle scheinbar das gleiche, wenn man den Bytes saved traut, es werden 32k Daten geschrieben:
Code:
/var/mod/root # modsave
Saving users, groups and passwords...done.
Saving config...done.
Writing /var/flash/freetz...done.
32768 bytes written.
/var/mod/root # modsave flash
Writing /var/flash/freetz...done.
32768 bytes written.
Nun weiter: wie kann man Daten, Pakete etc wieder deregistrieren / löschen?
durch Probieren habe ich folgendes gefunden:
Code:
modunreg
Usage: /usr/bin/modunreg cgi <pkg>
/usr/bin/modunreg extra <pkg> [<cgi-name>]
/usr/bin/modunreg file <id>
/usr/bin/modunreg status <pkg> [<cgi-name>]
Sind das alle Kommandos, die für die UI bereitgestellt werden?
- Wie erzeuge ich einen Eintrag unter Status - um z.B. ein firewall log oder system log zu listen?
- Was ist nötig, damit ein Dienst unter Dienste Basispakete / Statische Pakete erscheint?
- Wie bekomme ich Einträge unter Einstellungen rein?
- Eintrag unter Pakete funktioniert wohl mit modreg paket
- Wie bekomme ich einträge unter Extras (modreg extras?)
- Wie kann ich einen Section Top Link oder External Link in das Menu einfügen (z.B. für ein Popup a la Rudi-Shell)
- Wie bekomme ich Einträge in das Status Formular rein? (z.B. um anzuzeigen, ob die Firewalls aktiv sind, ob das Logging eingeschaltet ist, ob die Einstellungen gesichert wurden)
- Wie gebe ich Listen einheitlich aus (jeder macht es anders siehe syslog, logdateien etc)
Eine Style Guide wäre super. Wenn man sich das freetz ansieht, schaut es recht chaotisch aus, da stets das Muster kopiert wird, ohne es zu verstehen.
Da sind Labels und Eingabefelder so ausgefranst angeordnet, einige wenige tabellen tags in den Masken würden das ganze professioneller wirken lassen.
Wie sieht es mit der Integration von Unter-Forularen in der selben Maske und eigene post-back routinen / Sektionen aus, man muss ja nicht immer jedes mal alles flashen, was man eingibt. Was ist mit style-sheets?
Wenn ich mir das UI ansehe, und wie die Module integriert wurden, habe ich schon das Gefühl, dass etwas mehr Infos und Anleitung den Entwicklern helfen würde, eine gute Integration hinzubekommen.
Was soll denn wo am besten konfiguriert werden?
Beispiel:
-Wenn ich auf Status klicke erwarte ich einen Status der Box, finde aber ein Formular, das das Brannding einstellt und die USB mountet inklusive der Buttons für Backup, Restore, Reboot, etc. (braucht man ja auch oft)
- Darunter wieder halbwegs sauber boxinfo, freetzinfo, logdateien, partitionen (mit config Funktion) RRDStatus, Syslog
- Einstellungen (Hauptformular ) was gehört hierher und wie? Es sieht so aus, als wäre das hauptsächlich für das freie Editieren von config-Dateien gedacht.
- Pakete ist auch wieder etwas durcheinander. Mal sind es die Einstellungen für den Dienst, wie manueller oder Autostart, Ports, Verzeichnisse etc. dann wieder die UI selbst, die der Dienst bereitstellt wie z.B. AVM Firewall oder das CGI für iptables. Dann gibts noch die Mimik mit dem wol-cgi, und rrd cgi etc, die eigene Webservices definieren und zum Teil sogar aus der normalen AVM Oberfläche verlinkt werden.
Was gehört nach Extras rein?
Wie Du siehst, sind hier mehr Fragen offen, als einer allein beantworten kann.
Deshalb tue ich mich auch schwer da was zu integrieren, an was soll ich mich denn orientieren?. :noidea:
Deshalb auch meine Idee, freetz nur freetz like zu nutzen, um den httpd mit interface, port und root Verzeichnis zu registrieren / starten / stoppen oder vielleich einen symlink ins freetz cgi-bin zu setzen, damit das UI registriert wird, die "Dienste" Mimik von freetz zu emuliern um diese Settings zu sichern, die modsave / modsave flash zu verstehen um die eine eigene Config / startscript für die Firewall mit Hilfe der Routinen zu speichern.
Dann vielleicht ins Freetz Menu einen Top Link einfügen mit target "neues Fenster" und dort in voller Geschwindigkeit die Eingaben direkt verarbeiten, ohne sinnlos die Systemvariablen mit iptables rules Fragmenten vollzuschreiben.
Bitte korrigiert mich, wenn ich falsch liege.