#!/bin/bash -e
# atokx2 install/uninstall script for Debian systems

# definition of variables
ARCHIVEFILE=atokx-17.0-2.0.i386.tar.gz
ARCHIVEMD5=dfa73d583cac1c82b6d1a2b71148f588
PATCHURL=http://www3.justsystem.co.jp/download/atok/up/lin/atokforlinux_update_17_0_2_1.tar.gz
PATCHMD5=5abaf8e95d8d49347191aa9160459a3a
ARCHIVEDIR=/usr/lib/atokx2
DEFAULTDIR=/cdrom/bin/ATOK

# definition of function
usage () {
    echo "Usage: atokx2-install install [sourcedir]"
    echo "       atokx2-install upgrade"
    echo "       atokx2-install fix_symlinks"
    echo "       atokx2-install uninstall"
}

install_atokx2 () {
    check_archive ${srcdir}/${ARCHIVEFILE} ${ARCHIVEMD5}
    cd ${ARCHIVEDIR} && tar xzf ${srcdir}/${ARCHIVEFILE} 2>/dev/null
    fix_symlinks
    upgrade_atokx2
}

fix_symlinks () {
    mkdir -p /opt /etc/opt/atokx2 /var/opt/atokx2/users /var/opt/atokx2/system
    ln -sf ${ARCHIVEDIR}/opt/atokx2/sbin/atokx2mngdaemon /usr/sbin/atokx2mngdaemon
    ln -sf ${ARCHIVEDIR}/usr/lib/im/leif/atokx2.so /usr/lib/im/leif/atokx2.so
    ln -sf ${ARCHIVEDIR}/usr/lib/im/leif/atokx2.so /usr/lib/iiim/le/atokx2/atokx2.so
    ln -sf ${ARCHIVEDIR}/usr/lib/im/locale/ja/atokx2/atokx2aux.so /usr/lib/im/locale/ja/atokx2/atokx2aux.so
    ln -sf ${ARCHIVEDIR}/usr/lib/im/locale/ja/atokx2/atokx2aux.so /usr/lib/iiim/locale/ja/atokx2/atokx2aux.so
    ln -sf ${ARCHIVEDIR}/etc/opt/atokx2/atokx2client.cf /etc/opt/atokx2/atokx2client.cf
    ln -sf ${ARCHIVEDIR}/etc/opt/atokx2/atokx2server.cf /etc/opt/atokx2/atokx2server.cf
    ln -sf ${ARCHIVEDIR}/opt/atokx2 ${ATOKX2ROOT}/opt/
}

upgrade_atokx2 () {
    cd ${ARCHIVEDIR}
    download_file $PATCHURL $PATCHMD5
    echo ./atokforlinux_update_17_0_2_1/bin/ATOK/atokx-17.0-2.1.i386.patch.tar.gz > patch_file
    patchfilename=`basename ${PATCHURL}`
    tar xzfTO ${patchfilename} patch_file | tar xz
    rm -f patch_file
    /etc/init.d/atokx2 restart
    echo 17.0-2.1 > atokx2-version
}

uninstall_atokx2 () {
    rm -f /usr/sbin/atokx2mngdaemon
    rm -f /usr/lib/im/leif/atokx2.so
    rm -f /usr/lib/iiim/le/atokx2/atokx2.so
    rm -f /usr/lib/im/locale/ja/atokx2/atokx2aux.so
    rm -f /usr/lib/iiim/locale/ja/atokx2/atokx2aux.so
    rm -f /etc/opt/atokx2/atokx2client.cf
    rm -f /etc/opt/atokx2/atokx2server.cf
    rm -f /opt/atokx2
    rmdir -p --ignore-fail-on-non-empty /opt /etc/opt/atokx2 /var/opt/atokx2/users /var/opt/atokx2/system 2>/dev/null || true
    rm -rf ${ARCHIVEDIR}/*
}

check_archive () {
    local filename=$1
    local md5sum=$2
    if [ ! -e "${filename}" -o \
	"`md5sum -b ${filename} | sed -e 's/ .*$//'`" != "${md5sum}" ]; then
	bad_archive ${filename}
	return 1
    fi
    return 0
}

bad_archive () {
    echo "Bad archive: $1" 1>&2
    exit 1
}

download_file () {
    local url=$1
    local md5sum=$2
    local filename=`basename $url`
    wget -q ${url} -O ${ARCHIVEDIR}/${filename} && check_archive ${ARCHIVEDIR}/${filename} ${md5sum}
}

if [ "$1" = "install" ]; then

    # get archive source dir
    if [ -z "$2" ]; then
    	echo -n "Please input source directory [$DEFAULTDIR]: "
	read srcdir
	if [ -z "$srcdir" ]; then
		srcdir=$DEFAULTDIR
	fi
    else
	srcdir=$2
    fi

    install_atokx2

    if [ -z "`/bin/pidof atokx2mngdaemon`" ]; then
    	/etc/init.d/atokx2 start
    fi

elif [ "$1" = "upgrade" ]; then
    upgrade_atokx2

elif [ "$1" = "fix_symlinks" ]; then
    fix_symlinks

elif [ "$1" = "uninstall" ]; then
    if [ -n "`/bin/pidof atokx2mngdaemon`" ]; then
    	/etc/init.d/atokx2 stop
    fi
    uninstall_atokx2

else
    usage
    exit 1
fi
