#!/bin/bash
#
###############################################################################
#                                                                             #
#              华为终端数据卡linux 后台注册软件                               #
#              版权属于华为技术有限公司，不得盗用，违者必究                   #
#              Huawei linux MobilePartner licensed software                   #
#              Copyright (c) 2007-2009 by Huawei Tech. Corp. Ltd..            #
#              作者：张乾春 2008.7.8                                          #
#                                                                             #
###############################################################################
#

BAKCURRENTPATH=`pwd`
SOFTWARENAME="Alice_MOBILE_E1692"
INSTALLPATH="/usr/local/${SOFTWARENAME}"
TEMPWORKPATH="/tmp/${SOFTWARENAME}_$$"
INSTALLWORKPATH=`echo $0|sed 's/\install$//'`
TEMPFILE="${SOFTWARENAME}_install_$PPID"
CONFIG_FILE="/etc/datacard_config"

#Language String
LANGUAGESTRING[0]="zh"
LANGUAGESTRING[1]="en_US"
LANGUAGECODE[0]=0
LANGUAGECODE[1]=1


LANGCODE=${LANGUAGECODE[1]}
i=0
while [ ".${LANGUAGESTRING[${i}]}" != "." ]
do
    if [ ${LANGUAGESTRING[${i}]} = "${LANG}" ]
    then
        LANGCODE=${LANGUAGECODE[${i}]}
        break
    fi
    i=`expr ${i} + 1`
done
unset i


LYouMustBeRoot[0]="您必须以root用户运行本安装程序"
LYouMustBeRoot[1]="You must run the process by root"

LPlsInputInstallPath[0]="请输入安装目录"
LPlsInputInstallPath[1]="Please input the install path"

LInstallPath[0]="安装路径"
LInstallPath[1]="install path"

LNoFile[0]="找不到文件："
LNoFile[1]="Can not find file: "

LCanNotCreateDir[0]="无法创建目录"
LCanNotCreateDir[1]="Can not create dir"

LMobilePartnerInstall[0]="${SOFTWARENAME}安装程序"
LMobilePartnerInstall[1]="${SOFTWARENAME} installer"

LJREInstalled[0]="JRE已经安装过了, 要覆盖安装吗"
LJREInstalled[1]="JRE have installed before, will want to cover with before version"

LJREInstalling[0]="开始安装JRE, 请稍后..."
LJREInstalling[1]="JRE is being installed, please wait..."

LJREInstallComplete[0]="已经完成JRE安装"
LJREInstallComplete[1]="JRE install have completed"

LStartInstallPartner[0]="开始安装后台, 请稍后..."
LStartInstallPartner[1]="${SOFTWARENAME} is being installed, please wait..."

LCompleteInstallPartner[0]="已经完成后台安装"
LCompleteInstallPartner[1]="${SOFTWARENAME} install have completed"

LOverwriteInstalled[0]="已经安装有后台, 是否覆盖"
LOverwriteInstalled[1]="The software is exist, do you want overwrite"

LInstallJRE[0]="安装JRE"
LInstallJRE[1]="install JRE"

LInstallMP[0]="安装后台"
LInstallMP[1]="install ${SOFTWARENAME}"

LInstallAll[0]="安装JRE和后台"
LInstallAll[1]="install JRE and ${SOFTWARENAME}"

LQuitInstall[0]="退出"
LQuitInstall[1]="Exit"

LPlsSelect[0]="请选择："
LPlsSelect[1]="Please select: "

LYouMustSelect[0]="你必须选择："
LYouMustSelect[1]="You must select: "

LInstallEnd[0]="结束, 按任意键退出"
LInstallEnd[1]="Finished, press enter key to exit"


# /*yes or no 公共函数, yes返回0, no返回1*/
yes_or_no()
{
    if [ ${#} -ne 2 ]
    then
        echo -e "yes_or_or: ${ErrorPara[${LANGCODE}]}"
        return 1
    fi
    if [ "${2}" = "Y" ]
    then
        DEFPMPT="([Y]/N):\c "
        DEFVAL="Y"
    else
        DEFPMPT="(Y/[N]):\c "
        DEFVAL="N"
    fi
    echo -e "${1} ${DEFPMPT}"
    read ANS
    while [ "${ANS}" != "Y" -a "${ANS}" != "y" -a "${ANS}" != "N" -a "${ANS}" != "n" -a ! -z "${ANS}" ]
    do
        echo -e "${1} ${DEFPMPT}"
        read ANS
    done
    : ${ANS:="${DEFVAL}"}
    if [ "${ANS}" != "Y" -a "${ANS}" != "y" ]
    then
        unset ANS
        return 1
    fi
    unset ASN
    return 0
}

#检查启动安装脚本的用户是否为root用户
CheckID()
{
    if [ `id | awk '{print $1}'` != "uid=0(root)" ]
    then
        echo -e "${LYouMustBeRoot[${LANGCODE}]}"
        exit
    fi
}

#检查相关文件，在硬盘上建立存放安装文件的临时目录，并拷贝安装文件到该目录
PreInstall()
{
    #检查JRE文件
    if [ ! -f "${INSTALLWORKPATH}"/jre-1_5_0_15-linux-i586.bin ]
    then
        echo -e "${LNoFile[${LANGCODE}]}jre-1_5_0_15-linux-i586.bin"
        exit
    fi
    #检查安装包文件
    if [ ! -f "${INSTALLWORKPATH}"/MobilePartner.tar.gz ]
    then
        echo -e "${LNoFile[${LANGCODE}]}MobilePartner.tar.gz"
        exit
    fi
    
    if [ ! -d "${TEMPWORKPATH}" ]
    then
        mkdir ${TEMPWORKPATH}
    fi
    if [ ! -d "${TEMPWORKPATH}" ]
    then
        echo -e "\n${LCanNotCreateDir[${LANGCODE}]}: ${TEMPWORKPATH}"
        exit
    fi
    
    #拷贝JRE安装文件
    cp -f "${INSTALLWORKPATH}"/jre-1_5_0_15-linux-i586.bin ${TEMPWORKPATH}
    chmod a+x ${TEMPWORKPATH}/jre-1_5_0_15-linux-i586.bin
    
    #拷贝后台安装文件
    cp -f "${INSTALLWORKPATH}"/MobilePartner.tar.gz ${TEMPWORKPATH}

    #拷贝安装脚本到硬盘上
    cp -f "${INSTALLWORKPATH}"/install ${TEMPWORKPATH}
    chmod a+x ${TEMPWORKPATH}/install    
    

    #add by liuzhiqiang... begin
    if [ -f $CONFIG_FILE ]
    then
        #如果以前已经安装过后台则提示是否覆盖	
        yes_or_no "${LOverwriteInstalled[${LANGCODE}]}?" Y
        if [ ${?} -ne 0 ]
        then
            DisplayEndMsg
            exit
        fi
        INSTALLPATH=`egrep "^path=" $CONFIG_FILE | awk -F  '=' '{print $2}'`
        
    else
        #输入安装目录
        echo -e "\n ${LPlsInputInstallPath[${LANGCODE}]}[${INSTALLPATH}]: \c"
        read ANS
        : ${ANS:="${INSTALLPATH}"}
        INSTALLPATH=${ANS}
        #创建安装目录
        if [  -d "${INSTALLPATH}" ]
        then
            INSTALLPATH=${INSTALLPATH}/${SOFTWARENAME}
        fi
    fi
    
    #创建安装目录
    if [ ! -d "${INSTALLPATH}" ]
    then
        mkdir ${INSTALLPATH}
    fi
    if [ ! -d "${INSTALLPATH}" ]
    then
        echo -e "\n${LCanNotCreateDir[${LANGCODE}]}: ${INSTALLPATH}"
        DisplayEndMsg
        exit
    fi

}


#安装JRE
InstallJRE()
{
    mkdir -p "${INSTALLPATH}/java"
    cd "${INSTALLPATH}/java"
    echo -e "\n${LJREInstalling[${LANGCODE}]}"
    ${TEMPWORKPATH}/jre-1_5_0_15-linux-i586.bin >/dev/null 2>&1 <<!
Y
!
# for jre compatibility
    sed -i 's/XINERAMA/FAKEEXTN/g' ${INSTALLPATH}/java/jre1.5.0_15/lib/i386/xawt/libmawt.so

    echo -e "\n${LJREInstallComplete[${LANGCODE}]}"
    
    return 0
}


#安装后台
InstallMobilePartner()
{
    echo -e "\n${LStartInstallPartner[${LANGCODE}]}"
    
    cd "${INSTALLPATH}"
#在安装路径下解压缩安装包   
    tar zxf ${TEMPWORKPATH}/MobilePartner.tar.gz >/dev/null 2>&1

#安装autorun
#    chmod +x ./autorun/*
    
#    ./autorun/huawei_autostart install >/dev/null 2>&1
#    ./autorun/huawei_autostart restart >/dev/null 2>&1
    
#运行驱动工具安装脚本
    chmod +x ./driver/*
    ./driver/install ${INSTALLPATH} >/dev/null  2>&1
    
#copy相关文件到相应目录
    cp -rf ./lib/librxtxSerial.so ./java/jre1.5.0_15/lib/i386
    cp -rf ./lib/libjnotify.so ./java/jre1.5.0_15/lib/i386
    chmod +x ./ppp/*
    cp -rf ./ppp /etc
    chmod +x ./sbin/*
#    cp -rf ./sbin/* /usr/sbin
    

#编辑并创建桌面启动图标和开始菜单启动图标   
    egrep -v "^Exec=|^Icon=|^Path=" ./MobilePartner.desktop > /tmp/${TEMPFILE} 2> /dev/null
    cp -f /tmp/${TEMPFILE} ./MobilePartner.desktop
    echo -e "Exec=${INSTALLPATH}/MobilePartner" >> ./MobilePartner.desktop
    echo -e "Icon=${INSTALLPATH}/config/images/mobile.gif" >> ./MobilePartner.desktop
    echo -e "Path=${INSTALLPATH}" >> ./MobilePartner.desktop
    if [ -d /root/Desktop ]
    then
        cp -f ./MobilePartner.desktop /root/Desktop
        
    else
        cp -f ./MobilePartner.desktop /root
    fi  
    cp -f ./MobilePartner.desktop /usr/share/applications
    
#编辑并创建开始菜单卸载图标    
    egrep -v "^Exec=|^Icon=|^Path=" ./UninstallMobilePartner.desktop > /tmp/${TEMPFILE} 2> /dev/null
    cp -f /tmp/${TEMPFILE} ./UninstallMobilePartner.desktop
    echo -e "Exec=${INSTALLPATH}/UninstallMobilePartner" >> ./UninstallMobilePartner.desktop
    echo -e "Icon=${INSTALLPATH}/config/images/uninstall.gif" >> ./UninstallMobilePartner.desktop
    echo -e "Path=${INSTALLPATH}" >> ./UninstallMobilePartner.desktop
    cp -f ./UninstallMobilePartner.desktop /usr/share/applications
    
#编辑并创建运行脚本
    echo -e "#!/bin/bash" > ./MobilePartner

# for ubuntu 特效
    echo -e "grep -i \"Ubuntu\" /etc/issue && export AWT_TOOLKIT=\"MToolkit\"" >> ./MobilePartner

# for jre compatibility
    echo -e "export LIBXCB_ALLOW_SLOPPY_LOCK=1" >> ./MobilePartner

    echo -e "export JAVA_HOME=${INSTALLPATH}/java/jre1.5.0_15" >> ./MobilePartner
    echo -e "export CLASSPATH=${INSTALLPATH}/java/jre1.5.0_15/lib:." >> ./MobilePartner

    echo -e "APPDIR=${INSTALLPATH}" >> ./MobilePartner
    echo -e "cd \${APPDIR}" >> ./MobilePartner
    echo -e "\${APPDIR}/java/jre1.5.0_15/bin/java -Djava.library.path=\${APPDIR}/lib -jar MobilePartner.jar &" >> ./MobilePartner
    chmod +x ./MobilePartner
        
#编辑并创建卸载脚本
    echo -e "#!/bin/bash" > ./UninstallMobilePartner
    echo -e "${INSTALLPATH}/driver/Uninstall" >> ./UninstallMobilePartner
#    echo -e "${INSTALLPATH}/autorun/huawei_autostart stop" >> ./UninstallMobilePartner
#    echo -e "${INSTALLPATH}/autorun/huawei_autostart uninstall" >> ./UninstallMobilePartner
    echo -e "rm -rf ${INSTALLPATH}" >> ./UninstallMobilePartner
    if [ -d /root/Desktop ]
    then
        echo -e "rm -rf /root/Desktop/MobilePartner.desktop" >> ./UninstallMobilePartner
    
    else
        echo -e "rm -rf /root/MobilePartner.desktop" >> ./UninstallMobilePartner
    fi
    echo -e "rm -rf /usr/share/applications/MobilePartner.desktop" >> ./UninstallMobilePartner
    echo -e "rm -rf /usr/share/applications/UninstallMobilePartner.desktop" >> ./UninstallMobilePartner
    chmod +x ./UninstallMobilePartner
    
    echo -e "\n${LCompleteInstallPartner[${LANGCODE}]}"
}


# /*提供选择语言*/
SelectLanguage()
{
    while :
    do
        case ${LANGCODE} in
            0)
                echo -e "\n\t1. 简体中文"
                echo -e "\t2. 英文"
                echo -e "\n\t请选择语言: [1]\c"
                read RESP
                : ${RESP:="1"}
            ;;
            *)
                echo -e "\n\t1. Simplified Chinese"
                echo -e "\t2. English"
                echo -e "\n\tPlease select Language: [2]\c"
                read RESP
                : ${RESP:="2"}
            ;;
        esac
        case ${RESP} in
            [1,2])
                LANGCODE=`expr ${RESP} - 1`
                return ${LANGCODE}
            ;;
            *)
                case ${LANGCODE} in
                    0)
                        echo -e - "\n\t你必须选择: 1, 2\n"
                    ;;
                    *)
                        echo -e "\n\tPlease select: 1, 2\n"
                    ;;
                esac
            ;;
        esac
    done
}

# /*显示程序启动时的信息*/
DisplayStartMsg()
{
    clear
}

# /*显示程序结束时的信息*/
DisplayEndMsg()
{
    cd "${BAKCURRENTPATH}"
    rm -rf "${TEMPWORKPATH}"
    echo -e "\n${LInstallEnd[${LANGCODE}]}"
    read RESP
}



GenConfigFile()
{
    cd $INSTALLPATH
    echo "path=$INSTALLPATH"               > $CONFIG_FILE
    echo "name=MobilePartner"              >> $CONFIG_FILE
    echo "Exec=$INSTALLPATH/MobilePartner" >> $CONFIG_FILE
    
    echo "if [ -f \"$CONFIG_FILE\" ]" >>./UninstallMobilePartner
    echo "then"                       >>./UninstallMobilePartner
    echo -e "rm -rf $CONFIG_FILE"     >>./UninstallMobilePartner
    echo "fi"                         >>./UninstallMobilePartner
}


clear
CheckID
#SelectLanguage
DisplayStartMsg
#当让用户选择安装时，如下部分代码到应该放到while循环中
PreInstall
InstallJRE
InstallMobilePartner
GenConfigFile
DisplayEndMsg
exit 0

#不让用户选择安装，如下代码无效
while :
do
    echo -e - "***\t\t${LMobilePartnerInstall[${LANGCODE}]}\t\t***\n"
    echo -e - "${LPlsSelect[${LANGCODE}]}\n"
    echo -e - "\t1) ${LInstallMP[${LANGCODE}]}"
    echo -e - "\t0) ${LQuitInstall[${LANGCODE}]}\n"
    echo -e - "Choice: [0]\c"
    read RESP
    : ${RESP:="0"}
    case ${RESP} in
        1)
             PreInstall
             InstallJRE
             InstallMobilePartner
             GenConfigFile
        ;;
        0)
            DisplayEndMsg
            exit 0
        ;;
        *)
            echo -e - "${LYouMustSelect[${LANGCODE}]}1, 0"
        ;;
    esac
done
