#!/bin/sh #------------------------------------------------------------------------------ # /usr/local/htdocs/unimount/unimount.cgi - mount or dismount volumes, CDs # or shares # # Copyright (c) 2004-2010 Marcus Herleb, herleb(at)herleb(dot)de # Copyright (c) 2011-2018 The Eisfair Team, team(at)eisfair(dot)org # # Creation: 2004-01-01 mh # Last Update: $Id$ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version.. #------------------------------------------------------------------------------ eval "`proccgi $*`" . /etc/config.d/mini_httpd_unimount RTIME=20 myname=`basename $0` tag=`date +%d.%m.%Y` uhr=`date +%T` log='/var/log/log.admin' echo "Content-Type: text/html; charset=iso-8859-1" echo "Cache-control: no-store" # HTTP/1.1 (or no-cache?) echo "Pragma: no-cache" # HTTP/1.0 echo "Expires: `date -Ru`" # Expires now! echo echo "" echo '' echo "" echo "" echo "Mounter" echo "" echo "

Universal Mounter

" if [ "${START_UNIMOUNT}" = "yes" ] then if [ "${UNIMOUNT_N}" = "0" -a "${UNIMOUNT_INFO}" = "no" ] then echo 'Es wurden keine Mount Devices definiert ...
' echo ' ... Mount-Info ist ebenfalls deaktiviert.
' fi if [ "${UNIMOUNT_USB}" = "yes" ] then echo if [ -f /var/run/unimount.usb ] then rm /var/run/unimount.usb fi if [ -z "`/sbin/lsmod | grep usb-storage`" ] then /sbin/modprobe usb-storage if [ $? -eq 1 ] then ./do_usb.sh { echo "-------------------------------------------------------------------------" echo echo "USB Treiber wurden durch unimount geladen ;-)" echo echo "- ${tag}, ${uhr} --- unimount: ------------------------------------" echo } >> ${log} echo " " > /var/run/unimount.usb fi fi fi else echo 'Universal Mounter ist zur Zeit deaktiviert.' fi echo '
'
echo ''

if [ "${START_UNIMOUNT}" = "yes" -a "${UNIMOUNT_N}" != "0" ]
then
    echo '  '
    echo '    '
    echo '  '

    ROWCOLOR="#e9e9e9"

    idx=1
    while [ ${UNIMOUNT_N} -ge ${idx} ]
    do
        eval UNIMOUNT_ACTIVE='$UNIMOUNT_'${idx}'_ACTIVE'

        if [ "${UNIMOUNT_ACTIVE}" = "yes" ]
        then
            # active, go on ...
            eval UNIMOUNT_NAME='$UNIMOUNT_'${idx}'_NAME'
            eval UNIMOUNT_DEVICE='$UNIMOUNT_'${idx}'_DEVICE'
            eval UNIMOUNT_POINT='$UNIMOUNT_'${idx}'_POINT'
            eval UNIMOUNT_OPTION='$UNIMOUNT_'${idx}'_OPTION'
            eval UNIMOUNT_USER='$UNIMOUNT_'${idx}'_USER'
            eval UNIMOUNT_GROUP='$UNIMOUNT_'${idx}'_GROUP'
            eval UNIMOUNT_TYPE='$UNIMOUNT_'${idx}'_TYPE'

            if [ "${UNIMOUNT_TYPE}" = "smbfs" ]
            then
                eval UNIMOUNT_AUTH_USER='$UNIMOUNT_'${idx}'_AUTH_USER'
                eval UNIMOUNT_AUTH_PASS='$UNIMOUNT_'${idx}'_AUTH_PASS'
            fi

            if [ "${UNIMOUNT_OPTION}" = "ro" ]
            then
                UNIMOUNT_OPTION="ro"
            elif [ "${UNIMOUNT_OPTION}" = "rw" ]
            then
                UNIMOUNT_OPTION="rw"
            else
                UNIMOUNT_OPTION="???"
            fi

            if [ -z "${UNIMOUNT_USER}" ]
            then
                UNIMOUNT_USER='root'
            fi

            if [ -z "${UNIMOUNT_GROUP}" ]
            then
                UNIMOUNT_GROUP='root'
            fi

            if [ "${FORM_action}" = "mount" ]
            then
                if [ "${FORM_id}" = "${idx}" ]
                then
                    if [ "${UNIMOUNT_OPTION}" = "rw" ]
                    then
                        parameter="-w"
                    else
                        parameter="-r"
                    fi

                    if [ "${UNIMOUNT_OPTION}" = "???" -o -z "${UNIMOUNT_OPTION}" ]
                    then
                        parameter=""
                    fi

                    if [ -z "${UNIMOUNT_TYPE}" ]
                    then
                        parameter="${parameter}"
                    fi

                    if [ "${UNIMOUNT_DEVICE}" = "/dev/fd0" ]
                    then
                        parameter="${parameter} -o uid=${UNIMOUNT_USER},gid=${UNIMOUNT_GROUP}"
                    else
                        if [ "${UNIMOUNT_TYPE}" = "ext2" -o "${UNIMOUNT_TYPE}" = "ext3" -o -z "${UNIMOUNT_TYPE}" ]
                        then
                            parameter="${parameter}"
                        else
                            parameter="${parameter} -t ${UNIMOUNT_TYPE} -o uid=${UNIMOUNT_USER},gid=${UNIMOUNT_GROUP}"
                        fi
                    fi

                    if [ "${UNIMOUNT_TYPE}" = "smbfs" ]
                    then
                        parameter="${parameter},username=${UNIMOUNT_AUTH_USER},password=${UNIMOUNT_AUTH_PASS}"
                    fi

                    if [ "${UNIMOUNT_TYPE}" = "vfat" -o "${UNIMOUNT_TYPE}" = "smbfs" ]
                    then
                        parameter="${parameter},iocharset=iso8859-1"
                    fi

                    parameter="${parameter} ${UNIMOUNT_DEVICE} ${UNIMOUNT_POINT} "

                    {
                        echo "-------------------------------------------------------------------------"
                        echo
                        echo "mount ${parameter}"
                        echo
                        echo "- ${tag}, ${uhr} --- unimount: ------------------------------------"
                        echo
                    } >> $log
                    mount ${parameter}
                fi
            fi

            if [ "${FORM_action}" = "umount" ]
            then
                if [ "${FORM_id}" = "${idx}" ]
                then
                    {
                        echo "-------------------------------------------------------------------------"
                        echo
                        echo "umount ${UNIMOUNT_POINT}"
                        echo
                        echo "- ${tag}, ${uhr} --- unimount: ------------------------------------"
                        echo
                    } >> $log
                    umount ${UNIMOUNT_POINT}
                fi
            fi

            mount | grep ${UNIMOUNT_POINT} > /dev/null

            if [ $? -ne 0 ]
            then
                status="nicht geladen"
                action=""
                status='nicht geladen'
                image="cross.gif"
            else
                status='geladen'
                action=""
                image="ongreen.gif"
            fi

            if [ "${ROWCOLOR}" = "#ffffff" ]
            then
                ROWCOLOR="#e9e9e9"
            else
                ROWCOLOR="#ffffff"
            fi

            echo "  "
            echo "    "
            echo "    "
            echo "    "
            echo "    "
            echo "  "
        fi

        idx=`expr ${idx} + 1`
    done
fi

if [ "${UNIMOUNT_INFO}" = "yes" ]
then
    echo '  '
#   echo '    '
    echo '    '
    echo '  '
    echo '  '
    echo '  '

    ROWCOLOR="#e9e9e9"

    /bin/df -h | grep -v "Available" | sed -e :a -e '$!N;s/\n / /;ta' -e 'P;D' | while read Filesystem Size Used Available Use2 Mounted
    do
        if [ "${ROWCOLOR}" = "#ffffff" ]
        then
            ROWCOLOR="#e9e9e9"
        else
            ROWCOLOR="#ffffff"
        fi

        echo "  "

        if [ "${Filesystem}" = "Filesystem" ]
        then
            echo
        else
            echo "    "
            echo "    "

            idx=1
            unimounted=0
            while [ ${idx} -le ${UNIMOUNT_N} ]
            do
                eval active='$UNIMOUNT_'${idx}'_ACTIVE'

                if [ "${active}" = "yes" ]
                then
                    eval device='$UNIMOUNT_'${idx}'_DEVICE'

                    if [ "${Filesystem}" = "${device}" ]
                    then
                        unimounted=1
                        break
                    fi
                fi

                idx=`expr ${idx} + 1`
            done

            if [ ${unimounted} -eq 1 ]
            then
                image="ongreen.gif"
                text="durch Unimount gemountet, kann entladen werden"
            else
               image="cross.gif"
               text="ist ein Systemmount"
            fi

            echo "    "
            echo '  '
        fi
    done
fi

echo '
NameDevice/VolumeDirectoryZugriffTypeUserGroupStatus 
${UNIMOUNT_NAME}${UNIMOUNT_DEVICE}${UNIMOUNT_POINT}${UNIMOUNT_OPTION}${UNIMOUNT_TYPE}${UNIMOUNT_USER}${UNIMOUNT_GROUP}${action}
          
Device/VolumeGrösseBelegtVerfügbarBelegt in %unimount?  
${Filesystem}${Size}${Used}${Available}${Use2}  
' exit 0