#!/bin/sh # # setting up the web setup menu. . /etc/init.d/rc.functions ps=$(ps); echo "$ps" | grep "{update_web_setu" | grep -q -v $$ && { echo "${0##*/} is already running">&2; exit 1; } setupdir="${1-/etc/setup}" websetupdir="${2-/var/www/tpl/setup}" tmpdir="${3-/tmp/setup.$$}" # xml-Daten als Verzeichnisstruktur abbilden rm -rf $tmpdir mkdir $tmpdir cd $tmpdir for file in $setupdir/*.xml; do grep . "$file" | while read line; do name=${file##*/} TEXTDOMAIN="${name%.*}-$name" if [ -z "${line#*}" ]; then name=`echo "$line" | sed 's/.* name="\($(tr '"'"'\)\?\([^'"'"'"]*\).*/\2/'` mkdir -p "$name" cd "$name" sed 's/ name="[^"]*"//' -i args.xml 2>/dev/null echo -n " name=\"$(tr "$name")\"" >> args.xml if [ -z "${line#*command=\"*\">}" ]; then command="${line#*command=\"}" command="${command%%\"*}" echo -n " command=\"$command\"" >> args.xml fi elif [ -z "${line#*}" ]; then cd .. else eval "echo \"$(echo "$line" | sed 's/"/\\"/g')\"" >> menu.xml fi done done touch end.xml # VDR-Plugins hinzufügen if [ -e $tmpdir/TV/VDR ]; then cd /tmp plugindir=$tmpdir/TV/VDR/Plugin-Arguments mkdir -p $plugindir [ -e $plugindir/args.xml ] || echo -n " name=\"Plugin-Arguments\"" >> $plugindir/args.xml vdr -L /usr/lib/vdr/ -h 2>/dev/null | grep "Plugins:" -A1000 | grep "^$" -A1000 > /tmp/vdrhelp.$$ vdr -L /usr/lib/vdr/ -V 2>/dev/null | grep "vdr " -A1000 | sort | while read line; do name="${line%% *}" help1="${line#* - }" if [ "$name" = "vdr" ]; then var="VDR_ARGS" else var="VDR_PLUGIN_ARGS_${name%%-*}" fi rm -rf /usr/share/doc/$name/setting mkdir -p /usr/share/doc/$name grep "^$name" -A100 /tmp/vdrhelp.$$ | while read help; do if [ -n "$help" -a -z "${help##[a-z]*}" -a -n "${help##$name*}" ]; then break fi IFS="" echo "$help" >> /usr/share/doc/$name/setting done echo "" >> "$plugindir/menu.xml" done rm /tmp/vdrhelp.$$ fi # Verzeichnisstruktur in web datein schreiben rm -rf $websetupdir/* find $tmpdir/* -type d 2>/dev/null | sort | while read dir; do path="${dir#$tmpdir}" mkdir -p "$websetupdir$path" name="`sed 's/.*name="\([^\"]*\)".*\|.*/\1/' "$dir/args.xml"`" file="$websetupdir${path%/*}/10_navi.sh" echo "
  • $name
  • " >> "$file.tmp" done find $websetupdir -name 10_navi.sh.tmp 2>/dev/null | while read file; do echo "" >> ${file%.tmp} rm -f $file done find $tmpdir/* -name menu.xml 2>/dev/null | while read file; do dir="${file%/menu.xml}" path="${dir#$tmpdir}" name="`sed 's/.*name="\([^\"]*\)".*\|.*/\1/' "$dir/args.xml"`" command="`sed 's/.*command="\([^\"]*\)".*\|.*/\1/' "$dir/args.xml"`" p=${path%/*} navi= while [ -n "$p" ]; do navi="`sed 's/.*name="\([^\"]*\)".*\|.*/\1/' "$tmpdir$p/args.xml"` – $navi" p=${p%/*} done echo "

    Setup – $navi $name

    " >> "$websetupdir/$path/20_headline.sh" test -n "$command" && echo "" >> "$websetupdir/$path/30_setup.sh" cat "$file" | while read line; do name="`echo "$line" | sed 's/.* name="\([^\"]*\)" .*\|.*/\1/'`" config="`echo "$line" | sed 's/.* sysconfig="\([^\"]*\)" .*\|.*/\1/'`" value="`echo "$line" | sed 's/.* value="\([^\"]*\)" .*\|.*/\1/'`" help1="`echo "$line" | sed 's/.* help1="\([^\"]*\)" .*\|.*/\1/'`" setup="`echo "$line" | sed 's/.* setup="\([^\"]*\)" .*\|.*/\1/'`" multi="`echo "$line" | sed 's/.* multi="\([^\"]*\)" .*\|.*/\1/'`" edit="`echo "$line" | sed 's/.* edit="\([^\"]*\)" .*\|.*/\1/'`" command="`echo "$line" | sed 's/.* command="\([^\"]*\)" .*\|.*/\1/'`" value="\${$config-$value}" test -n "$command" && echo "" if [ -z "${line##*type=\"bool\"*}" ]; then echo "
    " elif [ -z "${line##*type=\"text\"*}" -o -z "${line##*type=\"numtext\"*}" -o -z "${line##*type=\"number\"*}" -o -z "${line##*type=\"ip\"*}" ]; then echo "
    " elif [ -z "${line##*type=\"selection\"*}" ]; then if [ -n "$multi" -o -n "$edit" ]; then echo "
    " fi if [ -n "$setup" ]; then echo "\1<\/option>/' ?>" echo "
    " if [ -n "$multi" -o -n "$edit" ]; then echo "
    " echo "" fi fi elif [ -z "${line##*\(.*\)<\/value>/
    *}" ]; then echo "" fi done >> "$websetupdir/$path/30_setup.sh" echo "
    " > "$websetupdir/$path/90_save.sh" done cp -r /var/spool/apm.mnt/*$websetupdir ${websetupdir%/*} rm -r $tmpdir