#!/bin/sh . /usr/lib/libmodcgi.sh # radio group dis-/enable check "$USBROOT_ENABLED" yes:e1 "*":e2 # current state if [ "$(/mod/etc/init.d/rc.usbroot status)" == "running" ]; then cur_state="$(lang de:"Aktiviert" en:"Active")" else cur_state="$(lang de:"Inaktiv" en:"Inactive")" fi # radio group unmound old root check "$USBROOT_UNMOUNTOLDROOT" yes:y1 "*":n1 # check if build into kernel or if modules are available for i in ext2 ext3; do if grep -q "$i" /proc/filesystems || [ -f "/lib/modules/$(uname -r)/kernel/fs/$i/$i.ko" ]; then eval $i=y else eval $i=n fi done # html output sec_begin '$(lang de:"USB Root aktivieren/deaktivieren" en:"Enable/Disable USB root")' cat << EOF <p><input id="e1" type="radio" name="enabled" value="yes"$e1_chk/><label for="e1"> $(lang de:"Aktiviert" en:"Activated")</label><input id="e2" type="radio" name="enabled" value="no"$e2_chk/><label for="e2"> $(lang de:"Deaktiviert" en:"Deactivated")</label> <span style="margin-left: 60px"><strong>$(lang de:"Aktueller Status:" en:"Current state:")</strong> $cur_state</span></p> EOF sec_end sec_begin '$(lang de:"Gerät- und Partitionswahl" en:"Device and partition selection")' cat << EOF <table width="100%"> <tr> <th style="border-bottom: 1px solid black"> </th> <th style="border-bottom: 1px solid black">$(lang de:"Gerät" en:"Device")</th> <th style="border-bottom: 1px solid black">$(lang de:"Partition" en:"Partition")</th> <th style="border-bottom: 1px solid black">$(lang de:"Größe" en:"Size")</th> <th style="border-bottom: 1px solid black">$(lang de:"Dateisystem" en:"Filesystem")</th> </tr> EOF i=1 awk '/^ 8 +.*sd[a-z][0-9]?/ { print $4, int($3/1024) }' /proc/partitions | while read DEVPART SIZE; do # filter partition number, get vendor and model string from sysfs, guess filesystem type dev=$(echo $DEVPART | sed 's/[0-9]//g') vendor=$(cat /sys/block/$dev/device/vendor) model=$(cat /sys/block/$dev/device/model) fs=$([ -x /usr/bin/fstyp ] && fstyp "/dev/$DEVPART" || echo "$(lang de:"unbekannt" en:"unknown")") mountastyp=$fs html_devpart=$(html "$DEVPART") # set radio button states checked=''; disabled='' if [ "$USBROOT_DEVICE" == "/dev/$DEVPART" ]; then checked=' checked="checked"' mediafs=$fs fi # only allow filesystems with kernel module support [ "$(eval echo \$$fs)" != 'y' ] && disabled=' disabled="disabled"' # but allow ext3 to be mounted as ext2 [ "$fs:$ext2:$ext3" == 'ext3:y:n' ] && { disabled=''; mountastyp='ext2'; } cat << EOF <tr> <td><input id="rb$i" type="radio" name="device" onchange="document.forms[0].elements['fstype'].value = '$mountastyp';" value="/dev/$html_devpart"$checked$disabled/></td> <td><label for="rb$i">$(html "$vendor") $(html "$model")</label></td> <td><label for="rb$i">/dev/$html_devpart</label></td> <td align="right">$(html "$SIZE") MiB</td> <td style="padding-left: 0.7em;">$(html "$fs")</td> </tr> EOF let i++ done cat << EOF </table> <p><small>$(lang de:"Hinweis: Es können nur Partitionen mit Dateisystemtyp <i>ext2</i> oder <i>ext3</i> ausgewählt werden. Außerdem muss das jeweilige Kernelmodul vorhanden sein. Eine Ausnahme bildet <i>ext3</i>, welches ggf. als <i>ext2</i> (ohne Journaling-Funktionalität) gemountet werden kann. Dazu muss der Wert von „Dateisystem mounten als” entsprechend gesetzt sein." en:"Hint: Only partitions of typ <i>ext2</i> or <i>ext3</i> are selectable. Also the corresponding kernel module has to be available. An exception is <i>ext3</i> with can be mounted as <i>ext2</i> (without the journaling functionality). Check setting 'Mount filesystem as' below .")</small></p> EOF sec_end sec_begin '$(lang de:"Einstellungen" en:"Settings")' cat << EOF <p>$(lang de:"Root-Verzeichnis" en:"Root directory"): <input id="usbpath" size="40" maxlength="64" type="text" name="usbpath" value="$(html "$USBROOT_USBPATH")"/><br /> <small>$(lang de:"Geben Sie hier den vollen Ordnernamen innerhalb der Ordner-Hierarchie des USB-Gerätes an, welcher als Root-Verzeichnis verwendet werden soll, z.B. /mein/avmroot. Der Ordnername darf keine Leerzeichen enthalten." en:"Enter the full path name of the directory which should be used as root directory, e.g. /my/avmroot. The name must not contain blanks.")</small></p> <p><label for="fstype">$(lang de:"Dateisystem mounten als" en:"Mount filesystem as"): </label><input type="input" id="fstype" size="20" maxlength="10" name="fstype" value="$(html "$USBROOT_FSTYPE")"/></p> <p>$(lang de:"Mount Optionen" en:"Mount options"): <input id="mntoptions" size="40" maxlength="64" type="text" name="mntoptions" value="$(html "$USBROOT_MNTOPTIONS")"/><br /> <small>$(lang de:"Geben Sie hier kommagetrennte Optionen an, welche beim Mounten des Dateisystems verwendet werden (siehe Man-Pages von mount). Beispiel: rw,noatime,nodiratime" en:"Enter a comma-separated list of options which are used when the filesystem is mounted. E.g.: rw,noatime,nodiratime")</small></p> <p>$(lang de:"Altes Root-Filesystem (Flashspeicher) unmounten:" en:"Unmount old root filesystem (flash memory):") <input id="y1" type="radio" name="unmountoldroot" value="yes"$y1_chk><label for="y1"> $(lang de:"Ja" en:"Yes")</label><input id="n1" type="radio" name="unmountoldroot" value="no"$n1_chk/><label for="n1"> $(lang de:"Nein" en:"No")</label><br /> <small>$(lang de:"Achtung: Das Aktivieren dieser Option kann zu einer Reboot-Schleife führen." en:"Caution: Activating this option can cause reboot loops")</small></p> EOF sec_end cat << EOF <p>$(lang de:"Änderungen werden erst nach einem Neustart aktiv, auch wenn hier bereits die neuen Werte angezeigt werden." en:"Changes will take effect after a reboot, even if new settings will already be displayed here.")</p> EOF