Verstehe.
Mir ist der Initialisierungsprozess komplett unklar.
Da sind meine Dateien:
Code:
./root/usr/lib/cgi-bin/nhipt.cgi # freetz cgi
./root/etc/init.d/rc.nhipt # post-back dazu
./root/etc/default.nhipt/nhipt.cfg # die ganzen EXPORTS für Freetz
./root/usr/ipt/index.html # default frame für die Web Root
./root/usr/ipt/cgi-bin/nhipt.cgi # die eigentliche Firewall Config CGI
Die Dateien / Verzeichnisse
/mod/etc/default.$package/$package.cfg
existieren zur Design-Zeit gar nicht. Also müssen sie irgendwie erzeugt werden, dafür muss man aber irgendwo ein Script haben, das sie erstellt oder kopiert.
Dann muss man auch noch die
Code:
modconf load nhipt
modreg cgi nhipt NHIPT
module dem Freetz bekanngeben.
Ich habe sie mal Spaßeshalber mit der Hand kopiert, und mit
modreg cgi nhipt NHIPT Mein Menu erzeugt.
Dann fehlte noch ein symlink auf die nhipt.cgi und die rc.nhipt und dann ging es.
Ich schwimme total.
Die Datei static.pkg ist nicht editierbar und zur Design-Zeit nicht vorhanden.
Ich lasse es wohl mit der richtigen Integration. Vielleicht erbarmt sich ja jemand und schreibt die paar Zeilen Freetz - Wrapper um das CGI oder gibt mir mal ein HowTo....
EDIT:
Ich habe jetzt eine Quick&Dirty Lösung gebaut, die funktioniert:
Ich habe das Kopieren und das Setzen der Symlinks in die rc.mod gleich nach der initialisierung der Standardpakete eingebrannt, nun funktioniert es auch nach einem Reboot und ich brauche keinen Stick mehr für das CGI.
Code:
#!/bin/sh
cd /
export TERM=xterm
. /etc/init.d/modlibrc
start() {
echo "rc.mod version $(cat /etc/.freetz-version)"
# Basic Packages
for pkg in crond swap telnetd webcfg websrv; do
rc="/etc/init.d/rc.$pkg"
[ -e "/mod$rc" ] || ln -s "$rc" "/mod$rc"
done
[COLOR="Red"][B] mkdir /var/mod/etc/default.nhipt
cp /etc/default.nhipt/*.* /var/mod/etc/default.nhipt
ln -s /usr/lib/cgi-bin/nhipt.cgi /mod/usr/lib/cgi-bin/nhipt.cgi
ln -s /etc/init.d/rc.nhipt /mod/etc/init.d/rc.nhipt
modconf load nhipt
modreg cgi nhipt NHIPT
[/B][/COLOR]
[ -d /tmp/flash ] || /usr/bin/modload
[ -r /tmp/flash/mod/resolv.conf ] || cat /var/tmp/resolv.conf>/tmp/flash/mod/resolv.conf
/etc/init.d/rc.crond
/etc/init.d/rc.telnetd
/etc/init.d/rc.webcfg
# Static Packages
if [ -e /etc/static.pkg ]; then
for pkg in $(cat /etc/static.pkg); do
[ -x "/etc/init.d/rc.$pkg" ] && "/etc/init.d/rc.$pkg"
done
fi
# AVM-Plugins
plugins="`ls /var/plugin-*/control 2>/dev/null`"
if [ -n "$plugins" ]; then
echo -n "Starting AVM-Plugins"
for plugin in $plugins; do
echo -n "...`echo $plugin|sed 's/.*plugin-//;s/\/.*//'`"
$plugin start 2>&1 >/dev/null
[ $? -ne 0 ] && echo -n "(failed)"
done
echo "...done."
fi
[ -r /tmp/flash/rc.custom ] && mv /tmp/flash/rc.custom /tmp/flash/mod/rc.custom
[ -r /tmp/flash/mod/rc.custom ] && . /tmp/flash/mod/rc.custom
/etc/init.d/rc.swap
}
case "$1" in
"")
deffile='/etc/default.mod/_profile.def'
[ -r /tmp/flash/mod/_profile.def ] && deffile='/tmp/flash/mod/_profile.def'
modreg file 'Freetz___profile' 'Freetz: .profile' 0 "$deffile"
deffile='/etc/default.mod/hosts.def'
[ -r /tmp/flash/mod/hosts.def ] && deffile='/tmp/flash/mod/hosts.def'
modreg file 'Freetz__hosts' 'Freetz: hosts' 1 "$deffile"
deffile='/etc/default.mod/modules.def'
[ -r /tmp/flash/mod/modules.def ] && deffile='/tmp/flash/mod/modules.def'
modreg file 'Freetz__modules' 'Freetz: modules' 0 "$deffile"
deffile='/etc/default.mod/resolv_conf.def'
[ -r /tmp/flash/mod/resolv_conf.def ] && deffile='/tmp/flash/mod/resolv_conf.def'
modreg file 'Freetz__resolv_conf' 'Freetz: resolv.conf' 0 "$deffile"
deffile='/etc/default.mod/rc_custom.def'
[ -r /tmp/flash/mod/rc_custom.def ] && deffile='/tmp/flash/mod/rc_custom.def'
modreg file 'Freetz__rc_custom' 'Freetz: rc.custom' 0 "$deffile"
[ -r "/mod/etc/conf/mod.cfg" ] && . /mod/etc/conf/mod.cfg
modreg status mod '$(lang de:"Logdateien" en:"Logfiles")' mod/logs
[ "$MOD_MOUNTED_SUB" = yes ] && modreg status mod '$(lang de:"Partitionen" en:"Partitions")' mod/mounted
[ "$MOD_SHOW_BOX_INFO" = yes -a -r "/usr/lib/cgi-bin/mod/box_info.cgi" ] && modreg status BOXinfo 'BOX$(lang de:"-Info" en:" info")' mod/box_info
[ "$MOD_SHOW_FREETZ_INFO" = yes -a -r "/usr/lib/cgi-bin/mod/info.cgi" ] && modreg status FREETZinfo 'FREETZ$(lang de:"-Info" en:" info")' mod/info
start
;;
start)
start
;;
*)
echo "Usage: $0 [start]" 1>&2
exit 1
;;
esac
Es ist wahrscheinlich keine saubere Lösung, wie man es in die menuconfig reinbekommt ist mir auch noch ein Rätsel.
Ich habe mal alle benötigten Files als Archiv auf der 1.Seite gepostet. Es funktioniert soweit wie gehabt,
nun aber ohne die rc.custom zu bemühen.
Jetzt müsste man es noch ein wenig schleifen, damit man die debug.cfg auch noch irgendwie los wird, andererseits ist mit der debug.cfg als Urlader der Firewall die Box sehr frühzeitig geschützt, noch bevor der dsld eine Verbindung zum Internet aufbauen kann. Insofern ist die Lösung gar nicht so übel.