#!/bin/bash

# Un'idea alternativa sarebbe impedire il caricamento del modulo
# usb-storage. Occorre pero' rimuoverlo dai moduli gia' caricati,
# e fare qualcosa nel caso in cui sia impossibile rimuoverlo
# (magari riavviare la macchina, ma al termine del processo per
# lanciare l'esame).
# echo 'install usb-storage : ' >> /etc/modprobe.conf

smontaerimuovimodulo() {
    modprobe -r uas
    modprobe -r usb_storage
        while lsmod | grep usb_storage; do
                cat /proc/mounts |grep "/run/media" | awk '{print $2}' | xargs -L 1 umount
                echo "Can't remove usb_storage on `uname -n`, sleeping for 10 s"
                sleep 10
        modprobe -r uas
                modprobe -r usb_storage
        done
}

disabilitamodulo() {
        cat <<EOF_MODPROBE >/etc/modprobe.d/nousbpen.conf
install usb_storage /bin/true
EOF_MODPROBE
}

riabilitamodulo() {
        rm -f /etc/modprobe.d/nousbpen.conf
}

stop() {
    pkill -ALRM bta-no-usbpen
    riabilitamodulo
    echo "STOP ESAME-USB"
    :
}

start() {
    echo "ESAME_USB = ${ESAME_USB}"
    if [ ${ESAME_USB} -eq 0 ]; then
        # Fedora 13
        #nohup udisks --inhibit -- /opt/esame/bin/bta-no-usbpen 999999 &
        nohup udisks --inhibit-all-polling -- /opt/esame/bin/bta-no-usbpen 999999 &

        smontaerimuovimodulo
        disabilitamodulo
    else
        echo "USBPEN: nothing to do"
        pkill -ALRM bta-no-usbpen
        riabilitamodulo
    fi

    # A new idea to test: a /etc/udev/rules.d file (but does it get
    # loaded if added after the boot, or does it requires a reboot,
    # and so it's useless for the lab?)
    # CAT <<EOF >/etc/udev/rules.d/10-bta-local.rules
    # ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[b-e]*|sr", ENV{UDISKS_PRESENTATION_HIDE}="1"
    # EOF
    #
}

args=("$@")

case "$1" in
'start')
    start
    ;;
'stop')
    stop
    ;;
'restart')
    stop
    start
    ;;
*)
    echo "Usage: $0 { start | stop | restart }";
    exit 1;
    ;;
esac
exit 0