#!/bin/bash /usr/lib/turtle/turtle_module
VERSION="1.0"
DESCRIPTION="Module Manager"
EXECUTABLE="0"
CONF=/tmp/modulemanager.form

: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}

function delete_modules {
    modlist=""
    n=1
    ls -1 /etc/turtle/modules/ > /tmp/installed_mods
    while read mod;
    do
            modlist="$modlist $mod $n off"
            n=$[n+1]
    done < /tmp/installed_mods

    choices=$(dialog --stdout --checklist 'Choose item:' 18 72 20 $modlist)

    if [ $? -eq 0 ]
    then
        dialog --yesno "Are you sure you want to delete modules:\n $choices" 8 60
        response=$?
        case $response in
            0) 
            for choice in $choices
            do
                rm /etc/turtle/modules/$choice
            done
            dialog --title "Notice" --msgbox "Modules deleted." 5 60
            configure
            ;;
           1) configure;;
           255) configure;;
        esac
    else
        configure
    fi
}

function update_modules {
    BASE_URL='http://lanturtle.com/modules'
    dialog --yesno "Are you sure you want to connect to LANTurtle.com and update all installed modules?" 6 60
    response=$?
    case $response in
        0)
            for module in /etc/turtle/modules/*
            do
                module=$(echo $module | awk -F '/' '{print $5}')
                wget -q $BASE_URL/$module -O /etc/turtle/modules/$module
                chmod +x /etc/turtle/modules/$module
            done
            dialog --title "Notice" --msgbox "Modules updated" 5 60
            configure
        ;;
       1) configure;;
       255) configure;;
    esac
}


function module_directory {
dialog --yesno "Are you sure you want to connect to LANTurtle.com?" 6 60
response=$?
case $response in
    0) 
    BASE_URL='http://lanturtle.com/modules'
    wget -q $BASE_URL/module_list -O /tmp/module_list

    pkglist=""
    while read pkg;
    do
        pkg_name=$(echo $pkg | awk '{print $1}')
        pkg_desc="$(echo $pkg | sed 's/^[^ ][^ ]* //')"

        if [ ! -f /etc/turtle/modules/$pkg_name  ]
            then
            pkglist="$pkglist $pkg_name '"$pkg_desc"' off"
        fi
    done < /tmp/module_list

    if [ -z $pkglist ]; then
        dialog --msgbox "No modules available" 6 60
        configure
    fi

    install_modules=$(eval "dialog --stdout --checklist 'Available Modules:' 18 72 20 $pkglist")

    if [ $? -eq 0 ]
        then
        for module in $install_modules
        do
            module=$(echo $module | awk '{print $1}')
            wget -qO- $BASE_URL/$module > /etc/turtle/modules/$module
            chmod +x /etc/turtle/modules/$module
            echo $module >> /tmp/installed_modules
        done
        message=$(cat /tmp/installed_modules)
        dialog --msgbox "Installed Modules:\n $message" 8 60
        rm /tmp/installed_modules
        configure
    else
        configure
    fi
    ;;
   1) configure;;
   255) configure;;
esac
}

function configure {
dialog --title "Module Manager" --menu "" 15 60 4 \
    "Directory" "Download modules from LANTurtle.com" \
    "Delete"    "Delete installed modules" \
    "Update"    "Update installed modules" \
    "Back"      "Return to Previous Menu" 2> /tmp/directory.out
result=$(cat /tmp/directory.out && rm /tmp/directory.out &>/dev/null)
    case $result in
        "Directory")
            module_directory
        ;;
        "Delete")
            delete_modules
        ;;
        "Update")
            update_modules
        ;;
        "Back")
            exit
        ;;
    esac
}