[gelöst] wol

http://www.freetz.org/browser/trunk/make/downloader/files/root/usr/lib/cgi-bin/downloader.cgi

Zeilen 76-86

In etwa so:
Code:
<textarea name="files" rows="4" cols="50" maxlength="255">$(html "$DOWNLOADER_FILES")</textarea>

Nur anstatt $DOWNLOADER_FILES sollte man eine eigene Variable dafür definieren. Diese Variable wird dann mit Freetz-Config gespeichert. Man sollte sie vernünftigerweise auch in default-Datei definieren. Und dann noch einen Schalter (Hacken) zusätzlich einführen, der dann die Filterung aktiviert.

Versuch dich da durchzusteigern. Mittlerweile gibt es WIKI dazu. Dann hat im Endeffekt nicht nur deine Freundin, sondern alle was davon...

Wir stehen dir Rat und Tat dabei...

MfG
 
@astrapi
Schön, dass du es hinbekommen hast. Ich hatte keine Lust mich damit zu befassen... :-(

MfG Oliver
 
@astrapi:
Diese cgi musst du verändern und um einen Checkbox und Textarea (s. oben) erweitern. Damit kann man es erstmal über freetz wählen, ob du es filtern willst oder nicht.

Die beiden Variablen kannst du als

Code:
$WOL_USE_FILTER
$WOL_FILTER

nennen.

Defaults nicht vergessen:
Code:
export WOL_ENABLED='yes'
export WOL_PLAIN_PASSWD=''
export WOL_PORT='82'
export WOL_USER=''
[COLOR="Red"]export WOL_USE_FILTER='no'
export WOL_FILTER=''
[/COLOR]

MfG
 
ich werd mich dran versuchen...
 
das freut uns alle... Und wie gesagt, bei konkreten Fragen wird es hier gerne geholfen. Vor allem, wenn du dich zum Freetz-CGI-Experten entwickelst. Eigentlich gibt es dazu mittlerweile Wiki und es gibt hier im Forum einige, die es noch frisch in Erinnerung haben. Deswegen, wenn du in einer Sackgasse landest, frag hier einfach.

MfG
 
kannst du vielleicht die Dateien hier posten, die du erstellt/geändert hast. Oder die Frage etwas konkreter formulieren. Du musst schon in cgi einige Besonderheiten in Acht nehmen, damit eine oder andere Variable abgespeichert werden kann. Z.B.
Code:
...value="$(html "$WOL_PORT")"...

Und danach schaue bitte in /var/mod/etc/conf/wol.cfg ob die Einstellungen dort landen. Wenn nicht, kannst du zunächst sie dorthin auch handisch einpflegen, um zu überprüfen, ob wol-WebIF sie zumindest ausliest und richtig interpretiert.

MfG
 
wol.cgi
Code:
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin
. /usr/lib/libmodcgi.sh

auto_chk= man_chk= inetd_chk=

case $WOL_ENABLED in
    yes)    auto_chk=' checked' ;;
    inetd)    inetd_chk=' checked' ;;
    *)    man_chk=' checked' ;;
esac

sec_begin '$(lang de:"Starttyp" en:"Start type")'

cat << EOF
<p>
<input id="e1" type="radio" name="enabled" value="yes"$auto_chk><label for="e1"> $(lang de:"Automatisch" en:"Automatic")</label>
<input id="e2" type="radio" name="enabled" value="no"$man_chk><label for="e2"> $(lang de:"Manuell" en:"Manual")</label>
EOF
[ -e /mod/etc/default.inetd/inetd.cfg ] &&
cat << EOF
<input id="e3" type="radio" name="enabled" value="inetd"$inetd_chk><label for="e3"> $(lang de:"Inetd" en:"Inetd")</label>
EOF
cat << EOF
</p>
EOF

sec_end
sec_begin '$(lang de:"Bekannte Hosts" en:"Known hosts")'

cat << EOF
<ul>
<li><a href="/cgi-bin/file.cgi?id=exhosts">$(lang de:"Hosts bearbeiten" en:"Edit hosts")</a></li>
</ul>
<p style="font-size:10px;">($(lang de:"alle Eintr&auml;ge, die eine g&uuml;ltige MAC Adresse aufweisen" en:"all items with a valid MAC address"))</p>
EOF

sec_end
[COLOR=Red]sec_begin '$(lang de:"Zugelassene Hosts" en:"Approved hosts")'

cat << EOF
<input id="s1" type="checkbox" name="debug" value="yes"$WOL_FILTER_CHK><label for="s1"> $(lang de:"Hosts filtern" en:"filter hosts")</label>
<p>$(lang de:"Hosts" en:"Hosts"): <input type="text" name="hosts" size="20" maxlength="255" value="$(html "$WOL_FILTER")"></p>
EOF

sec_end[/COLOR]
sec_begin '$(lang de:"WOL Interface" en:"WOL interface")'

cat << EOF
<h2>$(lang de:"Port des WOL Webservers" en:"Port of WOL webserver"):</h2>
<p>Port: <input type="text" name="port" size="5" maxlength="5" value="$(html "$WOL_PORT")"></p>
EOF

sec_end
sec_begin '$(lang de:"Zugriff" en:"Access")'

cat << EOF
<p>$(lang de:"Benutzer" en:"User"): <input type="text" name="user" size="20" maxlength="255" value="$(html "$WOL_USER")"></p>
<p>$(lang de:"Passwort" en:"Password"): <input type="password" name="plain_passwd" size="20" maxlength="255" value="$(html "$WOL_PLAIN_PASSWD")"></p>
EOF

sec_end
wol.cfg
Code:
export WOL_ENABLED='yes'
export WOL_PLAIN_PASSWD=''
export WOL_PORT='82'
export WOL_USER=''
export WOL_FILTER_CHK=''
export WOL_FILTER=''

das händische Eintragen und anschliesend auslesen funktioniert...
 
1. Nenne es am besten $WOL_USE_FILTER anstatt $WOL_FILTER_CHK. Es ist mehr aussagekräftiger, wenn man nur den Namen der Variable hat.
2. Du musst eine "Zwischenvariable" für die checkbox einfühern. s. z.B.:
Code:
auto_chk= man_chk= inetd_chk=

case $WOL_ENABLED in
    yes)    auto_chk=' checked' ;;
    inetd)    inetd_chk=' checked' ;;
    *)    man_chk=' checked' ;;
esac

Schau dir evtl. in anderen Paketen, wie es gemacht wurde. Auf jeden Fall geht es nicht direkt die chekbox bit der Endvariable zu verknüpfen. Aber mit dem "textarea" sollte es eigentlich gehen.

3. Sind denn die defaults bei dir auch angelegt? Ich bin mir nicht sicher, es könnte aber schon sein, dass freetz ohne defaults die Variable gar ignoriert.
4. Hast du denn wol.cfg selbst angelegt, oder sind deine Variablen dort automatisch erschienen? Selbst wenn sie zunächst mal leer sind.

Ich werde dein script austesten.

MfG
 
mit der checkbox ist klar, wollt ich machen wenn das speichern funktioniert.

die defaults stehen in '/make/wol-cgi/files/root/etc/default.wol/wol.cfg' dort habe ich einfach meine beiden neuen variablen eingetragen.
 
also nach dem löschen der '/var/mod/etc/conf/wol.cfg' und dem erneuten eintragen der daten, erscheinen in der '/var/mod/etc/conf/wol.cfg' nur die "alten" variablen, meine nicht. also irgendwas hab ich vergessen....
 
Du musst folgende Regeln beachten (hatte ich mir selbst jetzt wieder nach einer langen Pause aufgefrischt):

1. Diese Zwischenvariablen sind für checkboxen/radiobuttons wichtig, eben gerade fürs speichern. Fpr checkbox braucht man sogar eine hidden-Variable. Frag mich nicht warum, ich hatte es bestimmt auch abgeschaut.
2. default-datei sollte am besten alle Variablen erhalten. Wie du es "on the fly" ändern kannst, sag ich später.
3. Die klein genannten Namen sollen EXAKT Variablennamen entsprechen

Und damit du nicht jedes mal die Box neu flashen muss, sag ich nun, wie es geht cgi-s "on-the-fly" auszuprobieren. Alle cgi-s und deren configs liegen glücklicherweise in RAM, bzw. es liegen symbolische Links in RAM die dann auf RO-Flash verweisen. Man kann diese symbolischen Links löschen und stattdessen eigene Dateien anlegen, die man logischerweise ändern kann und damit seine Experimente ganz gut und schnell testen kann.

Beginnen wir mit wol.cgi. Unter /var/mod/usr/lib/cgi-bin/ liegt ein symlink wol.cgi. Diesen link musst du erstmal löschen und an seine stelle deine Datei wol.cgi kopieren. Wohl gemerkt, leider ohne "lang"-Konstrukten. Das sind Meta-Befehle für make. In deinem Test-wol.cgi musst du sie rausnehmen und erstmal nur mit einer Sprache testen.
Ich hatte mir erlaubt, dein wol.cgi etwas abzuändern (hier nur Fragmente):
Code:
...
auto_chk= man_chk= inetd_chk= [COLOR="Red"]filter_chk=[/COLOR]

case $WOL_ENABLED in
	yes)	auto_chk=' checked' ;;
	inetd)	inetd_chk=' checked' ;;
	*)	man_chk=' checked' ;;
esac

[COLOR="Red"]if [ "$WOL_USE_FILTER" = "yes" ]; then filter_chk=' checked'; fi[/COLOR]
...
sec_begin 'Zugelassene Hosts'

cat << EOF
[COLOR="Red"]<input type="hidden" name="use_filter" value="no">[/COLOR]
<input id="s1" type="checkbox" name="[COLOR="Red"]use_filter[/COLOR]" value="yes"$filter_chk><label for="s1"> Hosts für WOL-Interface nach folgenden Namen filtern:</label>
<p><textarea name="[COLOR="Red"]filter[/COLOR]" rows="4" cols="50" maxlength="255">$(html "$WOL_FILTER")</textarea></p>
EOF

sec_end
...
textarea past da besser für mehrere Namen anstatt text

(bitte nachher nicht vergessen "lang"-Konstrukte einzufügen. Meine Version ist direkt für die Box)

Nachdem du die Datei erfolgreich auf der Box platziert hast, solltest du dich an die configs ran machen. Unter /mod/etc/ löschst du den symlink default.wol und kopierst an seine Stelle komplettes Verzeichnis /etc/default.wol

Nun kannst du die Datei /mod/etc/default.wol/wol.cfg editieren und dorthin die beiden Variablen eintragen, wie ich oben vorgeschlagen hatte.

Danach sollte alles gehen.

MfG
 
es lag am name der html-elemente, jetzt bekomm ichs hin, geduld ;-)
 
wenn du es fertig hast, poste es hier bitte dann als tar.bz2 oder wie auch immer (aber nicht mehr in code-tags). Wir schauen es uns an und dann kann man es Oliver als patch zukommen lassen.

Wenn man schon hier sowieso an WOL-cgi am basteln ist, würde ich gerne auch das Speichern des Passwordes von Klartext in Hash umstellen. Abgucken kann man es beim Freetz-Passwort. Im Prinzip wird dort das Gleiche gemacht: Auch ein Hash für httpd-config generiert. Nur man könnte -wie es bei Freetz der Fall ist- nicht Klartext-Pass für WOL, sondern die gehashte Passphrase aus httpd-config in wol.cfg abspeichern.

Aber mach erstmal, dass dein Feature richtig läuft, astrapi. Mit dem pass kann man sich später anschauen.

MfG
 
super, nächstes problem: wie in der "/make/wol-cgi/files/root/usr/mww-wol/cgi-bin/index.cgi" die Variable WOL_FILTER auslesen?
 
Hast du schon versucht die Variable da einfach mit dem namen anzusprechen? Normalerweise sollte es gehen, weil die pre-fix-header von dem mod eigentlich dafür sorgen, dass die Konfiguration vorliegt. Es kann aber sein, dass es bei wol-cgi nicht der Fall ist, weil es vom mod separiert ist.

cgi ist eigentlich auch ein shell-Script, von daher kannst du es auf die Art und Weise machen, wie man es in Scripts macht:
Code:
CONFFILE="wol.cfg"
CONFPATH="/mod/etc/conf/"
	
if [ ! -r "$CONFPATH$CONFFILE" ]; then
        echo "Error[wol-cgi]: not configured" 1>&2
        exit 1
fi
. $CONFPATH$CONFFILE
irgendwo am Anfang von cgi. Damit sorgst du dafür, dass die Konfiguration ausgelesen wird. Alle Variablen stehen dann dir im Script zu Verfügung.

Aber eigentlich könntest du sowas selbst rausfinden. Wie gesagt, schau dir am besten irgendein Paket komplett an und versuche zu verstehen, wie was funktioniert. Downloader ist dafür bestens geeignet, weil dort nicht zu viel drin ist und weil damit fast die komplette Palette von cgi-Programmierung abgedeckt ist (bis auf eigene config-Datei)

Und wenigstens versprich uns nachher deine Bemühungen in WIKI zu verewigen, wenn es noch nicht der Fall ist.

MfG
 
zum Stand der Dinge:

Das Auslesen der Variablen ist kein Problem.

wird die angabe (sowohl gefilter als auch ungefilter) von "localhost" und "fritz.box.nfs" sowie einträgen in der exhosts ohne hostnamen gebraucht
 
so, fertig, was braucht ihr für dateien? den kompletten ordner "/make/webconfig"?
 
Alles was du geändert und hinzugefügt hast.

Hattest du für deine Sachen den Trunk ausgecheckt?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.