#!/bin/sh

#Constants
###############################################################################
ALTERNATE_PPD_DIRECTORY=/usr/share/cups/model/kyocera
PRIMARY_PPD_DIRECTORY=/usr/share/ppd/kyocera/
INSTALLED_PPD_DIRECTORY=/usr/share/kyocera/ppd7
TMP_INSTALL=/usr/share/kyocera7/

PYTHON_DIRECTORY=/usr/share/kyocera/Python/

KYOCERA_CONFIG=/usr/share/kyocera

TMP_DIR=/tmp/kyocera_printers

CONFIG_TMP=/tmp/kyocera_config

#Phase 5 post install
###############################################################################

install_from_tmp(){
    sudo rm -rf $KYOCERA_CONFIG
    sudo ln -s $TMP_INSTALL $KYOCERA_CONFIG 
}

install_ppds(){
    mkdir -p $PRIMARY_PPD_DIRECTORY
    cp -r $INSTALLED_PPD_DIRECTORY/* $PRIMARY_PPD_DIRECTORY
}

fix_file_permissions(){
    chmod 777 /usr/share/kyocera
    chmod 755 /usr/bin/kyodialog7
    chmod 755 /usr/bin/kyoPPDWrite_F
}

link_alternate_ppds(){
    if [ ! -h $ALTERNATE_PPD_DIRECTORY ]; then
        ln -s $PRIMARY_PPD_DIRECTORY $ALTERNATE_PPD_DIRECTORY
    fi
}

install_pypdf(){
    if python -c 'import PyPDF2' 2> /dev/null ; then
        #echo "PyPDF found"
        true
    else 
        cd $PYTHON_DIRECTORY/PyPDF2-1.26.0/
        python setup.py install
    fi
}

fix_mime_file(){
    mime_line="application/postscript      application/vnd.cups-pdf 66  pstopdf"
    cups_conf='/etc/cups/local.convs'
    if [ -e "/usr/lib/cups/filter/pstopdf" ]; then
        if [ -e $cups_conf ]; then
            grep -q -F "$mime_line" $cups_conf || echo "$mime_line" >> $cups_conf
        else 
            echo "$mime_line" > $cups_conf
        fi
    fi
}

start_knmd(){
    user=`logname` 2>/dev/null
    if [ -z $user ]; then
        /usr/bin/knmd
    else
        su $user -c /usr/bin/knmd
    fi
}

#Phase 4 Upgrade
###############################################################################

upgrade_config(){
    if [ -d $CONFIG_TMP ]; then
        mv $CONFIG_TMP/* $KYOCERA_CONFIG/
    fi
    #rm -rf $CONFIG_TMP
}

reinstall_printers(){
    if [ -d $TMP_DIR ]; then
        for file in $TMP_DIR/*; do
            reinstall_printer $file
        done
        rm -rf $TMP_DIR
    fi
}

reinstall_printer(){
    printer=`sed '1q;d' $1`
    address=`sed '2q;d' $1`
    model=`sed '3q;d' $1`

    ppd=`get_ppd "$model"`

    lpadmin -p "$printer" -E -v "$address" -P "$ppd"

    while read -r line
    do
        if echo "$line" | grep -q "Option" ; then
            option=$(echo "$line" | cut -f1 -d:)
            choice=$(echo "$line" | cut -f2 -d ' ')
            lpadmin -p "$printer" -o "$option"="$choice"
        fi
    done < "$1" 
}

get_ppd(){
    ppd=`grep -l "$1" $PRIMARY_PPD_DIRECTORY/*`
    echo $ppd
}

print_warning(){
    echo ""
    lang="$LANGUAGE"
    if [ -z "$lang" ]; then
        lang="$LANG"
    fi
    case "$lang" in
        *en*) echo "You may need to restart dbus for full functionality." ;;
        *fr*) echo "Vous devrez éventuellement redémarrer D-Bus pour obtenir toutes les fonctionnalités." ;;
        *de*) echo "Für den vollen Funktionsumfang müssen Sie D-Bus neu starten." ;;
        *it*) echo "Per la completa funzionalità, potrebbe essere necessario il riavvio di D-Bus." ;;
        *es*) echo "Debe reiniciar D-Bus para una funcionalidad completa." ;;
        *pt*) echo "Você pode precisar reiniciar o D-Bus para uma completa funcionalidade." ;;
        *) echo "You may need to restart dbus for full functionality." ;;
    esac
    echo ""
}


#Execution
###############################################################################

install_from_tmp
install_ppds
fix_file_permissions
link_alternate_ppds
install_pypdf
fix_mime_file
start_knmd

upgrade_config
reinstall_printers
print_warning
