#!/bin/sh
# de:Kopiere aktuelle Installation als neue Recovery-Version
# en:Copy current Installation to new Recovery-Installation
# fr:Copie la configuration actuelle pour une réparation ultérieure
# nl:Kopieer de huidige installatie als nieuwe herstelversie
# default:en

if [ -z "`mount | grep "/boot" `" ]
then
    mount /boot
    mount_boot=no
elif [ -z "`mount | grep "/boot" | grep "rw" `" ]
then
    mount /boot -w -o remount
    mount_boot=ro
fi

if [ -f /boot/rc999.recover ]
then

    case $lang
    in
        en)
        yeslow="y"
        yescap="Y"
        echo -e "Present Recovery-Installation will be removed"
        echo "(Enter y to continue or n to abort)"
        ;;
        de)
        yeslow="j"
        yescap="J"
        echo -e "Vorhandene Recovery-Version wird entfernt"
        echo "(Druecken Sie j um fortzufahren oder n zum abbrechen)"
        ;;
        fr)
        yeslow="o"
        yescap="O"
        echo -e "La configuration pour la réparation ultérieure sera supprimé"
        echo "(Entree o pour continuer ou n pour annuler)"
        ;;
        nl)
        yeslow="j"
        yescap="J"
        echo -e "Aanwezige herstelversie wordt verwijderd"
        echo "(Druk op j om door te gaan of n om te annuleren)"
        ;;
    esac

    input=""
    while [ "$input" = "" ]
    do
        read input
        if [ "$input" = "$yeslow" -o "$input" = "$yescap" ]
        then
            rm /boot/rc2.cfg >/dev/nul 2>/dev/nul
            rm /boot/opt2_tar.bz2 >/dev/nul 2>/dev/nul
            cp /boot/rc.cfg /boot/rc2.cfg
            if [ -f /boot/opt_tar.bz2 ]
            then
                cp /boot/opt_tar.bz2 /boot/opt2_tar.bz2
            else
                cp /boot/opt.old /boot/opt2_tar.bz2
            fi
            echo "PART_OPT='auto'" >>/boot/rc2.cfg
        
            if [ -n "`df /boot | grep 100%`" ]
            then 
                rm /boot/rc2.cfg >/dev/nul 2>/dev/nul
                rm /boot/opt2_tar.bz2 >/dev/nul 2>/dev/nul
                rm /boot/rc999.recover >/dev/nul 2>/dev/nul
                case $lang
                in
                    de)
                    echo "Der freie Platz auf der DOS-Partition reicht nicht aus,"
                    echo "die Notfallversion wurde deaktiviert!"
                    ;;
                    en)
                    echo "Not enough space for recovery. All recovery-options have"
                    echo "been removed from this router!"
                    ;;
                    fr)
                    echo "Pas assez d'espace sur la partition-DOS pour la copie des fichiers,"
                    echo "la réparation ultérieure a été supprimer du routeur!"
                    ;;
                    nl)
                    echo "Er is niet genoeg plaats op de DOS-partitie,"
                    echo "De hersteloptie is uitgeschakeld!"
                    ;;
                esac
            
            else
                case $lang
                in
                    de)
                    echo "Aktuelle Installation kopiert als neue Recovery-Version"
                    ;;
                    en)
                    echo "Current Installation copied as new Recovery-Installation"
                    ;;
                    fr)
                    echo "La configuration est copiée pour une réparation ultérieure"
                    ;;
                    nl)
                    echo "De huidige installatie als nieuwe herstelversie gekopieerd"
                    ;;
                esac
            fi 

        fi
    done   

else
    case $lang
    in
        de)
        echo "Auf diesem Router ist die Notfalloption nicht installiert,"
        echo "die Datei rc999.recover liegt nicht auf der Boot-Partition."
        echo "Es wurden keine Aenderungen vorgenommen!"
        ;;
        en)
        echo "No recovery-option installed on this router, the file"
        echo "rc999.recover is missing on the boot-partition."
        echo "No changes have been applied!"
        ;;
        fr)
        echo "Pas de fichier installation pour réparation ulterieure,"
        echo "le fichier rc999.recover est absent sur la Partition-boot."
        echo "Aucun changement n'a été appliqué !"
        ;;
        nl)
        echo "Op deze router is geen hersteloptie geïnstalleerd, het"
        echo "bestand rc999.recover is niet aanwezig op de boot-partitie."
        echo "Er zijn geen wijzigingen aangebracht!"        
        ;;
    esac
fi

if [ "$mount_boot" = "no" ]
then
    umount /boot
elif [ "$mount_boot" = "ro" ]
then
    mount /boot -r -o remount
fi
