#!/bin/sh #---------------------------------------------------------------------------- # control_recover.cgi # # Creation: 2007-02-24 lanspezi # Last Update: $Id$ #---------------------------------------------------------------------------- format_output() { htmlspecialchars | while read line do dat=`echo $line | cut -d "|" -f 1` event=`echo $line | cut -d "|" -f 2` echo "" echo "$dat" echo "$event" echo "" done } get_one_var() { var=$1 name=$2 file=$3 eval $var=`sed -n -e "s/^$name='\(.*\)'/\1/p" $file` } show_version_info () { get_one_var var_version FLI4L_VERSION $2 get_one_var var_date FLI4L_BUILDDATE $2 get_one_var var_time FLI4L_BUILDTIME $2 get_one_var var_kernel KERNEL_VERSION $2 get_one_var var_arch ARCH $2 var_typ=" " if [ "$2" = "/etc/rc.cfg" ] then var_typ="not defined" if grep -q "fli4l_mode=normal" /proc/cmdline then var_typ="$_RECOVER_normal_version" fi if grep -q "fli4l_mode=recover" /proc/cmdline then var_typ="$_RECOVER_recover_version" fi echo "" else echo "" fi if [ "x$var_arch" = "x" ] then var_arch="N.A." fi echo "
$1
" echo "
$var_version
" echo "
$var_kernel
" echo "
$var_date
" echo "
$var_time
" echo "
$var_arch
" echo "
$var_typ
" echo "" } show_versions () { show_tab_header "$_RECOVER_version_info" no cat < $_RECOVER_versionKernel$_RECOVER_date$_RECOVER_time$_RECOVER_archTyp EOF echo "" show_version_info "$_RECOVER_current_version" /etc/rc.cfg echo "" show_version_info "$_RECOVER_normal_version" /boot/rc.cfg if [ -f /boot/kernel2 ] then show_version_info "$_RECOVER_recover_version" /boot/rc2.cfg value=ask fi echo "" show_tab_footer } . /srv/www/include/cgi-helper : ${FORM_action:=view} check_rights "recover" "$FORM_action" case $FORM_action in mkrecoverask) show_html_header "$_RECOVER_title" show_tab_header "$_RECOVER_titledo" no echo '
' show_error "" "$_RECOVER_msg1ask" show_versions cat <
$_RECOVER_msg2ask

   
EOF show_tab_footer show_html_footer ;; mkrecover|$_RECOVER_yes) show_html_header "$_RECOVER_title" "refresh=5;url=control_recover.cgi" show_tab_header "$_RECOVER_titledo" no echo '
' echo "$_RECOVER_output" show_info "" "
`/usr/sbin/mkrecover.sh -webgui`
" echo '
' show_tab_footer show_html_footer ;; mkrestore) show_html_header "$_RECOVER_title" "refresh=5;url=control_recover.cgi" show_tab_header "$_RECOVER_titledorest" no echo '
' echo "$_RECOVER_output" show_info "" "
`/usr/sbin/mkrecover.sh -webgui -restore`
" echo '
' show_tab_footer show_html_footer ;; view|$_RECOVER_no) show_html_header "$_RECOVER_title" show_tab_header "$_RECOVER_titleshow" no show_versions if grep -q "fli4l_mode=normal" /proc/cmdline then cat <   $_RECOVER_desc2   

 

EOF fi if grep -q "fli4l_mode=recover" /proc/cmdline then cat <

 

EOF fi show_tab_footer ## new section for switch version for next boot - boot with syslinux if [ -f /boot/ldlinux.sys ] then if grep -q "DEFAULT n" /boot/syslinux.cfg then next_boot=$_RECOVER_normal_version fi if grep -q "DEFAULT r" /boot/syslinux.cfg then next_boot=$_RECOVER_recover_version fi echo "
" show_tab_header "$_RECOVER_bootnext" no cat << EOF
    $_RECOVER_bootnext : $next_boot     

      

EOF show_tab_footer fi ## new section for switch version for next boot - boot with pygrub or grub if [ -f /boot/grub/menu.lst ] then if grep -q "default 0" /boot/grub/menu.lst then next_boot=`grep title /boot/grub/menu.lst | head -n 1 | cut -d " " -f 2-` fi if grep -q "default 1" /boot/grub/menu.lst then next_boot=`grep title /boot/grub/menu.lst | head -n 2 | tail -n1 | cut -d " " -f 2-` fi echo "
" show_tab_header "$_RECOVER_bootnext" no cat << EOF
    $_RECOVER_bootnext : $next_boot     

      

EOF show_tab_footer fi ## LOG of mkrecover.sh if [ -f /var/lib/persistent/hd/recover.log ] then echo "
" show_tab_header "${_RECOVER_title}-LOG (30 $_MN_rows)" no echo '' echo "" echo "" echo "" echo "" cat /var/lib/persistent/hd/recover.log | do_tail 30 | sed '1!G;h;$!d' | format_output echo "
$_RECOVERLOG_date$_RECOVERLOG_event
" show_tab_footer fi show_html_footer ;; mkrecoverswitch) show_html_header "$_RECOVER_title" "refresh=5;url=control_recover.cgi" show_info "$_RECOVER_title" "$_RECOVER_switch" echo "

" err=0 # check for /boot if ! grep -q /boot /proc/mounts then show_error "MOUNT-ERROR" "/boot is not mounted!

`mount`
" err=1 fi # check mount state of boot-partition if ! grep /boot /proc/mounts | grep -q rw then show_error "MOUNT-ERROR" "/boot is readonly!

`grep /boot /proc/mounts`
" err=1 fi if [ $err != "1" ] then if [ -f /boot/ldlinux.sys ] then wert=`sed -n 's/^DEFAULT \([rn]\).*/\1/p' /boot/syslinux.cfg` case $wert in n) sed -i 's/^DEFAULT [rn].*/DEFAULT r/' /boot/syslinux.cfg;; *) sed -i 's/^DEFAULT [rn].*/DEFAULT n/' /boot/syslinux.cfg;; esac fi #todo - code to switch version for pygrub/grub based systems if [ -f /boot/grub/menu.lst ] then wert=`sed -n 's/^default \([01]\).*/\1/p' /boot/grub/menu.lst` case $wert in 0) sed -i 's/^default [01].*/default 1/' /boot/grub/menu.lst;; 1) sed -i 's/^default [01].*/default 0/' /boot/grub/menu.lst;; esac fi fi show_html_footer ;; esac