#!/bin/bash

###############################################################################
#  My  Function
###############################################################################

encryptionBin=`pwd`"/mssBak/script/encryption"

#mysql_user=`$encryptionBin 1 "6266706d736f7a7c7b6b7f7b7f"`
#mysql_pw=`$encryptionBin 1 "2b3a392757557b697b7e7e757b777c"`

mysql_user=administrator
mysql_pw=*86#ROtartsinim

myShowTitle()
{
	#thisVersion=`cat ./emsVersion |grep Version|awk '{print $2}'`
	#clear
	#echo -e "10  [1;29m WELCOME to INSTALL AGrandTech litCore Soft Switch EMS $thisVersion ![0;39m  
 #"
	echo "+-----------------------------------------------------------------------------+"
	echo -e "60  [1;32m $1[0;39m  
 "
	echo "+-----------------------------------------------------------------------------+"
}

myShowResultOrg()
{
	if [ "$1" = "OK" ] || [ "$1" = "ok" ] ; then
		echo "[60G[  [1;32mOK[0;39m  ]
$2"
	elif [ "$1" == "FAILED" ] || [ "$1" == "failed" ] ; then
		echo "[60G[[1;31mFAILED[0;39m]
$2"
	else
		echo "[60G[[1;32m $1 [0;39m]
$2"
	fi
}

myShowResult()
{
	if [ "$1" = "OK" ] || [ "$1" = "ok" ] ; then
		echo "[72G[  [1;32mOK[0;39m  ]
$2"
	elif [ "$1" == "FAILED" ] || [ "$1" == "failed" ] ; then
		echo "[72G[[1;31mFAILED[0;39m]
$2"
	else
		echo "[72G[[1;32m $1 [0;39m]
$2"
	fi
}

#useage:myAddUser $userName $userPwd $groupName $homeDir $remark $shType
myAddUser()
{
	echo "Add user $1 ..."
	groupadd -f $3 
	useradd -c "$5" -g $3 -d $4 -s $6 $1 2>>/dev/null
	echo "$2" | passwd --stdin $1
	chown -R $1:$3 $4
}

#useage: upGradeDb $dbName $tableName
upGradeDb()
{
	echo -n "Upgrade $1.$2"
	if [ `uname -r |grep -c '2.4.7-10'` -eq 1 ] ; then
		dataDir="/usr/local/mysql/data"
		mysqlBinDir="/usr/local/mysql/bin"
	else
		dataDir="/usr/local/mysql"
		mysqlBinDir="/usr/bin/"
	fi
	rm -rf $dataDir/$1_BK
	cp -r /usr/local/omcBak/data/$1 $dataDir/$1_BK
	chgrp -R mysql $dataDir/
	chown -R mysql $dataDir/
	chmod -R 755   $dataDir/
	
	tableArr=`echo "show tables from $1_BK like '$2';"|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw | sed -e '1d'`

	for table in $tableArr; do
		if ( test -e "$dataDir/$1/$table.frm" ) then
			diffFlag_frm=`diff $dataDir/$1/$table.frm $dataDir/$1_BK/$table.frm`
		else
			continue
		fi

		if [ "$diffFlag_frm" != "" ] ; then
			echo "show fields from $1.$table;"|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw | sed -e '1d' > /tmp/upGradeTmp
			echo "show fields from $1_BK.$table;"|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw | sed -e '1d' > /tmp/upGradeTmp1
			diff -C0 /tmp/upGradeTmp /tmp/upGradeTmp1 | awk '$1 ~/+/{print "ALTER TABLE " "'$1'" "_BK." "'$table'" " DROP " $2 ";"}' |$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
			fieldArr=`echo "show fields from $1_BK.$table;"|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw | sed -e '1d' | awk '{print $1}'`
			
			tmpStr=""
			for tmpField in $fieldArr; do
				if [ "$tmpStr" = "" ] ; then
					tmpStr=$tmpStr$tmpField
				else
					tmpStr=$tmpStr","$tmpField
				fi
			done

			#echo "$tmpStr"

			rm -f /tmp/tmpContent

			echo "select * into outfile '/tmp/tmpContent' fields terminated by '\',\'' from $1_BK.$table;" |$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
			tmpChar="'"
			#cat /tmp/tmpContent | sed -e s/'\\\N'/NULL/g | sed -e s/\'NULL\'/NULL/g |awk '{print "replace into " "'$1'" "." "'$table'" " (" "'$tmpStr'" ") values (" "'$tmpChar'" $0 "'$tmpChar'" ");"}' 
			cat /tmp/tmpContent | sed -e s/'\\\N'/NULL/g | sed -e s/\'NULL\'/NULL/g |awk '{print "replace into " "'$1'" "." "'$table'" " (" "'$tmpStr'" ") values (" "'$tmpChar'" $0 "'$tmpChar'" ");"}' |$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
		else
			echo "replace into $1.$table select * from $1_BK.$table" |$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
		fi
		echo -n "."
	done

	chgrp -R mysql $dataDir/
	chown -R mysql $dataDir/
	chmod -R 755 $dataDir/

	rm -f /tmp/upGradeTmp
	rm -f /tmp/upGradeTmp1
	rm -f /tmp/tmpContent

	rm -fr $dataDir/$1_BK

	myShowResult "OK"
}

###############################################################################
if [ `hostname -s 2>&1 |grep -c "failure"` -eq 1 ] ;then
        echo "############################### Warning #######################################"
        echo "# Please configure the /etc/hosts, add host like following                    #"
        echo "# 172.18.128.1 omc-0.iwv omc-0                                                #";
        echo "###############################################################################";
        myShowTitle "Install exit."
        exit
fi


hostname=`hostname -s|awk -F'-' '{print $1}'`
if [ `grep -c "$hostname-[01].*$hostname-[01]" /etc/hosts` -eq 0 ] ;then
        echo "############################### Warning #######################################"
        echo "# Please configure the /etc/hosts, add host like following                    #"
        echo "# 172.18.128.1 omc-0.iwv omc-0                                                #";
        echo "###############################################################################";
        myShowTitle "Install exit."
        exit
fi
# Operation system version
osversion=`uname -a`
if [ `echo $osversion|grep -c "2.6.18-92.el5"` -eq 1 ] ;then
        isCentOS=1
else
        isCentOS=0
fi

if [ $isCentOS -eq 0 ] ;then
	mkdir -p /home/ems
	chmod -R 700 /home/ems
	chown -R ems:omc /home/ems
	usermod -d /home/ems ems
fi

#sed '/mysql/d' /etc/vsftpd/ftpusers > /etc/vsftpd/a.out
#echo "mysql" >> /etc/vsftpd/a.out
#mv -f /etc/vsftpd/a.out /etc/vsftpd/ftpusers

sed '/mysql/d' /etc/ftpusers > /etc/a.out
echo "mysql" >> /etc/a.out
mv -f /etc/a.out /etc/ftpusers

sed '/mysql/d' /etc/vsftpd.ftpusers > /etc/b.out
echo "mysql" >> /etc/b.out
mv -f /etc/b.out /etc/vsftpd.ftpusers
clear

thisVersion=`cat ./emsVersion |grep Version|awk '{print $2}'`
echo "WELCOME to INSTALL AGrandTech litCore Soft Switch EMS $thisVersion !"
if [ `whoami` != "root" ] ; then
	myShowTitle "Just root user can install EMS"
	exit
fi

if [ `pwd|grep -c "htdocs"` -gt 0 ] ; then
	myShowTitle "Can not install EMS in this directory! (default is /usr/local/src)"
	exit
fi

if [ "$1" == "-auto" ] ; then
	isAutoInstall=1
else
	isAutoInstall=0
fi

thisVersion=`cat ./emsVersion |grep Version|awk '{print $2}'`
isNeedReboot=0

omcWebName='wxc2_omc'
omcdName='wxc2_omcd'
isInstalledOmc=0
srcDir=`pwd` 
srcBinDir=$srcDir/bin
srcSrcDir=$srcDir/src
srcConfDir=$srcDir/config
srcWebDir=$srcDir/web
srcDataDir=$srcDir/data
srcRelsDir=$srcDir/release
srcToolsDir=$srcDir/tools
srcMssBakScriptDir=$srcDir/mssBak/script
srcMssBakDataDir=$srcDir/mssBak/mssBakData

omcDir=/usr/local/omc
dstBinDir=$omcDir/bin
dstSrcDir=$omcDir/src
dstConfDir=$omcDir/config
phpIniDir=/etc/php/5.6/apache2/
dstWebDir=/usr/local/apache/htdocs
dstDbBackup=/db_backup
if [ `uname -r |grep -c '2.4.7-10'` -eq 1 ] ; then
	dstDataDir=/usr/local/mysql/data
	mysqlBinDir=/usr/local/mysql/bin
else
	dstDataDir=/usr/local/mysql
	mysqlBinDir=/usr/bin
fi


dstRelsDir=$omcDir/release
dstToolsDir=/usr/local/omc/tools
dstMssBakScriptDir=/usr/local/mssBak/script
dstMssBakDataDir=/usr/local/apache/htdocs/mssBakData

#initDir=/etc/rc.d/init.d
initDir=/etc/init.d

mkdir -p /usr/local/apache/htdocs

if [ "$isAutoInstall" == "0" ] ; then
	echo "==========================================="
	echo -n "Are you sure to install this EMS?(y/n)"
	read sureInstall
	if [ "$sureInstall" != "y" ] && [ "$sureInstall" != "Y" ] ; then
		myShowTitle "Install exit."
		exit
	fi
fi


###############################################################################
# 1.Check this system
###############################################################################
#Check installed omc's version
if (test -x $initDir/omcd) && [ "$isAutoInstall" == "0" ] ; then
	isInstalledOmc=1
	
	myShowTitle "Please Select Installation Mode "

	#echo "=============Installation History ============"
	#`omcd version`
	#cat $omcDir/install.log |grep Version
	#echo "==========================================="

	#Get install mode
	echo "=========== Installation Mode ============="
	echo "==1.Initialize Database and Software     =="
	echo "==2.Upgrade Software                     =="
	echo "==0.Exit                                 =="
	echo "==========================================="
	echo -n "Please select Installation Mode.(0/1/2):"
	read installMode

	case "$installMode" in
		'1')
			clear
			myShowTitle "You have selected 'Initialize Database and Software' mode."
			#Check free space of hard disk
			#freeDiskMB=`df -m |grep /usr|grep dev|awk '{print $4}'`
			freeDiskMB=$(df -m /usr | awk 'NR==2 {print $4}')
			echo "There is $freeDiskMB MB available space in /usr"
			if [ $freeDiskMB -lt 2000 ]; then
				echo "EMS need 2G disk space,No enough space in /usr !!"
				df -h /usr
				exit
			fi
			;;
		'2')
			clear
			myShowTitle "You have selected 'Upgrade Software' mode."
			echo "Installed `tail -4 $omcDir/install.log|grep Version`"
			
			;;
		*)
			myShowTitle "Install exit."
			exit
			;;
	esac
else
	if [ "$isAutoInstall" == "1" ] ; then
		myShowTitle "Install EMS by auto mode"
	else
		myShowTitle "Ready for installing EMS"	
	fi
	installMode=1
fi

#stopList="omcd httpd mysql"
stopList="omcd apache2 mysql"
for procName in $stopList; do
	if ( test -e "$initDir/$procName" ) then
		echo "Shutdown $procName..."
		#$initDir/$procName stop
                service $procName stop
	fi
	if [ -n "`pidof $procName`" ] ;then
		kill -9 `pidof $procName`
	fi
done

if [ -n "`pidof httpd`" ] ;then
	kill -9 `pidof httpd`
fi

if [ -n "`pidof mysqld`" ] ;then
        kill -9 `pidof mysqld`
fi



###############################################################################
# 2.Change system configure
###############################################################################

myShowTitle "Checking system configuration"
echo -n "Check user...."
#Step 1:Add User
#By fuction:myAddUser $userName $userPwd $groupName $homeDir $remark $shType

#add user www 
#if [ `grep -c "www:x" /etc/passwd` -eq 0 ] ; then
#	myAddUser "www" "123456" "omc" "/usr/local/apache/htdocs" "web operator" "/bin/bash"
#fi

myShowResult "OK"

#Step 2:Set system Time 
#echo -n "Set system clock.... "
#set time zone = GMT
#rm /etc/localtime 
#cp -f /usr/share/zoneinfo/GMT  /etc/localtime 

#sync sysclock to hardware clock
#hwclock --systohc

#myShowResult "OK"

#Step 3:Set path in profile
echo -n "Set path....."

if [ `grep -c "/etc/rc.d/init.d" /etc/profile` -eq 0 ] ; then
	echo "PATH=/etc/rc.d/init.d:\$PATH" >> /etc/profile
fi
myShowResult "OK"

sleep 2
###############################################################################
# 3.Install omc files
###############################################################################
myShowTitle "Copying EMS files (Backup old files to /usr/local/omcBak)"

#backup the omc/bin/conf
if [ "$installMode" == "2" ] ; then
	orignalConfDir=$dstBinDir/conf
	bk_conf_file_list="iptrans.conf mtp3.conf NR.conf sccp.conf smeg.conf smpp.conf system.ini welcomeSMS.conf snmp.conf omctrap_iplist.conf mcms_conf.txt"
	for conf_file in $bk_conf_file_list; do
		if [ -f $orignalConfDir/$conf_file ] ;then
	        	cp -f $orignalConfDir/$conf_file /tmp/
		fi
	done

	#backup the dual sync data
        if [ -f /usr/local/omc/bin/dual/cdr_io_proc ] ;then
                rm -rf /usr/local/cdr_io_proc
                cp -Rf /usr/local/omc/bin/dual/cdr_io_proc /usr/local/
        fi
        if [ -f /usr/local/omc/bin/dual/cdr_data_proc ] ;then
                rm -rf /usr/local/cdr_data_proc
                cp -Rf /usr/local/omc/bin/dual/cdr_data_proc /usr/local/
        fi
fi

#step 1:Create bak up dir
mkdir -p $omcDir
omcBakDir=/usr/local/omcBak
mkdir -p $omcBakDir
rm -rf $omcBakDir/*

#Step 2:Copy bin files
if [ "$installMode" == "2" ] ; then
    echo -n "Copy bin files ...."
    mkdir -p $dstBinDir
    cp -rf $dstBinDir $omcBakDir/
    #rm -rf $dstBinDir/*
    #cp -f $srcBinDir/* $dstBinDir
    # only copy bin file exclude subdirectory (conf, mib, ...)
    find $srcBinDir -maxdepth 1 -type f -exec cp -f {}  $dstBinDir \;
    # update subdirectory mib, daul.
    cp -rf $srcBinDir/mib $dstBinDir/mib
    cp -rf $srcBinDir/dual $dstBinDir/dual
    chmod +x $dstBinDir/*
    myShowResult "OK"
else
    echo -n "Copy bin files ...."
    mkdir -p $dstBinDir
    cp -rf $dstBinDir $omcBakDir/
    rm -rf $dstBinDir/*
    cp -rf $srcBinDir/* $dstBinDir
    chmod +x $dstBinDir/*
    myShowResult "OK"
fi

#Step 3:Copy web files 
echo -n "Copy web files ...."
#needKeepDirList="ftpFile db_backup/cdr db_backup/other db_backup/paramConf db_backup/csta db_backup/subsData db_backup/meetConf db_backup/alarmLog db_backup/operLog tftp"
#needKeepDirList="ftpFile db_backup/cdr db_backup/other db_backup/paramConf db_backup/csta db_backup/subsData db_backup/meetConf db_backup/alarmLog db_backup/operLog"

if ( test -d "$dstWebDir/ftpFile" ) then
	echo -n "."
else
	mkdir -p $dstWebDir/ftpFile
	echo -n "."
fi
needKeepDirList="cdr other paramConf csta subsData meetConf alarmLog operLog cdrsending cdrsent cstasending cstasent"
for tmpDir in $needKeepDirList; do
	if ( test -d "$dstDbBackup/$tmpDir" ) then
		echo -n "."
	else
		mkdir -p $dstDbBackup/$tmpDir
		echo -n "."
	fi
done
ln -fs $dstDbBackup $dstWebDir/
rm -f $dstDbBackup/db_backup
chown -R mysql:mysql $dstDbBackup

cp -rf $srcWebDir/index.php $dstWebDir/

if [ -L $dstWebDir/$omcWebName ] ;then
        rm -f $dstWebDir/$omcWebName
fi

if ( test -d "$dstWebDir/omcWeb" ) then
	mv $dstWebDir/omcWeb  $omcBakDir/
else
	if ( test -d "$dstWebDir/$omcWebName" ) then
		mv $dstWebDir/$omcWebName $omcBakDir/
	fi
fi
cp -Rf $srcWebDir/$omcWebName $dstWebDir/

#ln -s $dstWebDir/omcWeb $dstWebDir/$omcWebName
if [ $isCentOS -eq 1 ] ;then
	chown -R www:omc  $dstWebDir
else
	chown -R www-data:www-data  $dstWebDir
fi

# Change the permission of the wxc2_omc
dir_mode=500
file_mode=400
mod_dir=$dstWebDir/$omcWebName/
chmod $dir_mode $mod_dir
cd $mod_dir
obj_list="`ls -R`"
for obj in $obj_list; do
        if [ `echo $obj|grep -c '^\.'` -gt 0 ] ;then
                #echo $obj is a dir
                cur_dir="`echo $obj|awk -F: '{print $1}'`"
                chmod $dir_mode $cur_dir
        else
                #echo $obj is file,cur_dir=$cur_dir chmod $dir_mode $cur_dir/$obj
                chmod $file_mode $cur_dir/$obj
        fi
done
needExcuteFileList="configuration/mscSync/getFile configuration/mscSync/put configuration/mscSync/putFile configuration/mscSync/startMsc configuration/mscSync/stopMsc configuration/nibConf/beforeClearSubs configuration/nibConf/beforeFtp configuration/nibConf/bssReboot configuration/nibConf/mssStart"
for file in $needExcuteFileList; do
	chmod 500 $dstWebDir/$omcWebName/$file
done
chmod -R 700 /usr/local/apache/htdocs/wxc2_omc/performance
if [ $isCentOS -eq 1 ] ;then
        cp -f /usr/local/apache/htdocs/wxc2_omc/security/login/login.php_centos /usr/local/apache/htdocs/wxc2_omc/security/login/login.php
	chmod 400 /usr/local/apache/htdocs/wxc2_omc/security/login/login.php
	chown www /usr/local/apache/htdocs/wxc2_omc/security/login/login.php
	chgrp omc /usr/local/apache/htdocs/wxc2_omc/security/login/login.php
fi

#needRwxDirList="ftpFile db_backup tftp"
needRwxDirList="ftpFile db_backup"
for tmpDir in $needRwxDirList; do
	chmod -R 755 $dstWebDir/$tmpDir
done
#chown -R mysql $dstWebDir/db_backup
#chgrp -R mysql $dstWebDir/db_backup
myShowResult "OK"

chmod 777 $dstWebDir/ftpFile
if [ $isInstalledOmc -gt 0 ] ; then
	myShowTitle "Copying database files (Backup old files to /usr/local/omcBak)"
	echo -n "Backup database files...."
	mkdir -p $omcBakDir/data
	needBakDbList=`ls  -l $dstDataDir/|grep drwx|awk '{print $9}'`
	for tmpDb in $needBakDbList ; do
		cp -rf $dstDataDir/$tmpDb $omcBakDir/data
		echo -n "."
	done
	
	myShowResult "OK"
else
	myShowTitle "Copying database files"
fi

#Copy database file
echo -n "Copy database files..."

if [ -d $dstDataDir/ESME_DB ] ;then
        mv -f $dstDataDir/ESME_DB /tmp/
        esme_exist=1
fi

if [ ! -d $dstDataDir ] ;then
        mkdir $dstDataDir
        chmod 755 -R $dstDataDir
        chown mysql -R $dstDataDir
        chgrp mysql -R $dstDataDir
fi

# by 2024/08/30 lai:order to keep sysUser 
#rm -rf $dstDataDir/*
find $dstDataDir -type f ! -path "$dstDataDir/OMC_PUB/sysUser.MYD" ! -path "$dstDataDir/OMC_PUB/sysUser.MYI" ! -path "$dstDataDir/OMC_PUB/sysUser.frm" -exec rm -f {} \;

#needCopyDirList="mysql OMC* OBJ_* CDR_DB CSTA_DB AUC_DB HLR_DB EIR_DB PPS_DB VLR_DB VMS_DB MNP_DB OPR_DB SMCLI MME_DB UDM_DB OBJ_361 OBJ_362 OBJ_363 OBJ_365 OBJ_366 SPGW_DB"
needCopyDirList=`ls $srcDataDir`

#echo $needCopyDirList;
#for tmpDir in $needCopyDirList ; do
#	cp -Rf $srcDataDir/$tmpDir $dstDataDir/
#	echo -n "."
#done 

# by 2024/08/30 lai:order to keep sysUser 
for tmpDir in $needCopyDirList ; do
     	if [[ $tmpDir == "OMC_PUB" ]]; then
	    	mkdir -p $dstDataDir/$tmpDir
	find $srcDataDir/$tmpDir -type f ! -name 'sysUser.MYD' ! -name 'sysUser.MYI' ! -name 'sysUser.frm' -exec cp -Rf {} $dstDataDir/$tmpDir/ \;
	else
	       cp -Rf $srcDataDir/$tmpDir $dstDataDir/
	 fi
	 echo -n "."
done


if [ "$esme_exist" == 1 ] ;then
        mv -f /tmp/ESME_DB $dstDataDir
fi
myShowResult "OK"

#delete the mysql link
if [ -L "/var/lib/mysql" ] ; then
	if [ -n "`pidof mysqld`" ] ;then
                kill -9 `pidof mysqld`
        fi
        rm -rf /var/lib/mysql
fi

#cp -f $srcConfDir/my.cnf /etc/my.cnf

#cp -rf $srcDataDir/mysql $dstDataDir
chown -R mysql  $dstDataDir/
chgrp -R mysql  $dstDataDir/
chmod -R 755    $dstDataDir/

#if ( test -e "$initDir/mysql" ) then
if ( test -e "$initDir/mariadb" && test -e "/usr/lib/systemd/system/mariadb.service" ) then
	sed -i 's/ProtectSystem=full/ProtectSystem=false/g' /usr/lib/systemd/system/mariadb.service
	systemctl daemon-reload
	#$initDir/mysql start
	service mysql start
	sleep 2
else
	myShowTitle "Can not Upgrade EMS.You have not installed the mysql"
	exit
fi

#dataFileList=`ls  -l ./data/|grep sql|awk '{print $9}'`
#for tmpFile in $dataFileList; do
#	echo $tmpFile |awk -F"." '{print "CREATE DATABASE IF NOT EXISTS " $1 ";"}'|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
#	cat ./data/$tmpFile  |awk '$1 !~ /#/' |$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
#	echo -n "."
#done
#
#cp -rf $srcDataDir/OBJ_* $dstDataDir

#chown -R mysql  $dstDataDir
#chgrp -R mysql  $dstDataDir
#chmod -R 755    $dstDataDir
#
#myShowResult "OK"

if [ "$installMode" == "2" ] ; then		
	upGradeDb CDR_DB cdrFrom%
	#upGradeDb CDR_DB cdrSource

	#Upgrade CSTA_DB
	rm -rf $dstDataDir/CSTA_DB_BK
	cp -r $omcBakDir/data/CSTA_DB $dstDataDir/CSTA_DB_BK
	chmod -R 755 $dstDataDir/CSTA_DB_BK
	
	rm -f $dstDataDir/CSTA_DB/*Detail_*
	rm -f $dstDataDir/CSTA_DB/*Sum_*
	
	tableArr=`echo "show tables from CSTA_DB_BK like '%Detail';"|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw | sed -e '1d'`

	for table in $tableArr ; do
		table_=$table"_"
		
		#detail
		tmpTableArr=`echo "show tables from CSTA_DB_BK like '$table_%';"|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw | sed -e '1d'`
		for tmpTable in $tmpTableArr ;do
			rm -f $dstDataDir/CSTA_DB/$tmpTable.*
			cp $dstDataDir/CSTA_DB/$table.frm $dstDataDir/CSTA_DB/$tmpTable.frm
			cp $dstDataDir/CSTA_DB/$table.MYI $dstDataDir/CSTA_DB/$tmpTable.MYI
			cp $dstDataDir/CSTA_DB/$table.MYD $dstDataDir/CSTA_DB/$tmpTable.MYD
		done

		#sum
		sumTable=`echo "$table" | sed -e s/Detail/Sum/g`
		table_=`echo "$table_" | sed -e s/Detail/Sum/g`
		tmpTableArr=`echo "show tables from CSTA_DB_BK like '$table_%';"|$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw | sed -e '1d'`
		for tmpTable in $tmpTableArr ;do
			rm -f $dstDataDir/CSTA_DB/$tmpTable.*
			cp $dstDataDir/CSTA_DB/$sumTable.frm $dstDataDir/CSTA_DB/$tmpTable.frm
			cp $dstDataDir/CSTA_DB/$sumTable.MYI $dstDataDir/CSTA_DB/$tmpTable.MYI
			cp $dstDataDir/CSTA_DB/$sumTable.MYD $dstDataDir/CSTA_DB/$tmpTable.MYD
		done
	done

	rm -rf $dstDataDir/CSTA_DB_BK

	chown -R mysql  $dstDataDir/
	chgrp -R mysql  $dstDataDir/
	chmod -R 755    $dstDataDir/

	upGradeDb CSTA_DB %Detail_%
	upGradeDb CSTA_DB %Sum_%

	upGradeDb PPS_DB daily_report

	upGradeDb OMC_PUB sysUser
	#upGradeDb OMC_PUB sysMenuConf
	upGradeDb OMC_PUB omcPubVarConf
	upGradeDb OMC_PUB smcli%
	upGradeDb PPS_DB used_card_info
	upGradeDb RCM_RC_DB used_card_info
	upGradeDb OMC_PUB hpmnConf
	upGradeDb OMC_PUB wsmsMsgConf
	upGradeDb OMC_PUB wsmsRoamer
	upGradeDb OMC_PUB wsmsServConf
	upGradeDb OMC_PUB cdrNotifyConf
	upGradeDb BssOmcDb OMCR_ALARMEVENT
	upGradeDb BssOmcDb OMCR_BtsMeasurements
	upGradeDb BssOmcDb OMCR_BSSTABLE
#releaseV1.00.04 added by fj 20180101  
	upGradeDb SMCLI subscriber
	upGradeDb OBJ_330 subsParamConf_1

    # update "OBJ_360.subsParamConf_1" field setTemplate_2 to empty 
    #echo "update OBJ_360.subsParamConf_1 set setTemplate_2 to empty"
    echo "update OBJ_360.subsParamConf_1 set setTemplate_2='' where keyId=1" |$mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
	
	noOverWriteDB="OBJ_325 OBJ_330 OBJ_340 OBJ_360 OBJ_395 OBJ_370 OBJ_375 OBJ_380 OBJ_390"
    for tmp_file in $noOverWriteDB; do
        upGradeDb $tmp_file subsParamConf_%
    done
	
	chown -R mysql  $dstDataDir/
	chgrp -R mysql  $dstDataDir/
	chmod -R 755    $dstDataDir/

		
	#hide the old MSC menu
	#echo "update OMC_PUB.sysMenuConf set privilege='-1' where level_1=2 and level_2=1 and level_3=9" | $mysqlBinDir/mysql -u$mysql_user -p$mysql_pw
	

fi

#step 4:Copy config files
echo -n "Copy configuration files ...."
mkdir -p $dstConfDir
cp -r $dstConfDir  $omcBakDir/
rm -rf $dstConfDir/*
cp -rf $srcConfDir/*  $dstConfDir/
myShowResult "OK"

#step 5:Copy tools files
echo -n "Copy tools files ...."
mkdir -p $dstToolsDir
cp -r $dstToolsDir  $omcBakDir/
rm -rf $dstToolsDir/*
cp -rf $srcToolsDir/*  $dstToolsDir/
cp -rf $dstToolsDir/functions /etc/init.d/
myShowResult "OK"

#./checkExpect
#install expect tool
if [ ! -f /usr/bin/expect ] && [ ! -f /usr/local/bin/expect ] ;then
	cp -f $srcToolsDir/expect/expect /usr/bin
	cp -f $srcToolsDir/expect/expect /usr/local/bin
	chmod 755 /usr/bin/expect
	chmod 755 /usr/local/bin/expect
#rm -rf /usr/bin/expect
#rm -rf /usr/local/bin/expect
#expect_package=`dpkg -l expect`
#if [ `echo $expect_package |grep -c 'not'` -eq 1 ] ; then
#        rpm -ivh expect-5.42.1-1.i386.rpm
#else
#        `rpm -e $expect_package`
#        rpm -ivh expect-5.42.1-1.i386.rpm
fi

#install phpMyAdmin
#USER=root
#PORT=3306
#HOST=localhost
#sql_phpmyadmin_user="grant all privileges on *.* to phpmyadmin@'localhost' IDENTIFIED BY 'admin123@EMS';flush privileges;"
echo -n "Install phpMyAdmin ..."
rm -rf $dstWebDir/phpMyAdmin
cp $srcToolsDir/phpMyAdmin.tgz $dstWebDir/
cd $dstWebDir
tar zxvf phpMyAdmin.tgz > /dev/null
chown -R www-data:www-data $dstWebDir/phpMyAdmin
rm -rf $dstWebDir/phpMyAdmin.tgz
#mysql -u${USER} -e "${sql_phpmyadmin_user}"
myShowResult "OK"


# configure ems
#mkdir -p /tftpboot
#chmod 777 /tftpboot
echo -n "Configuring EMS ..."
cd $srcDir

#Update httpd.conf
httpdConfDir="/etc/apache2"
if [ $isCentOS -eq 1 ] ;then
	cp -f $srcConfDir/httpd.conf_centos $httpdConfDir/httpd.conf
else
	cp -f $dstConfDir/apache2-000-default.conf $httpdConfDir/sites-available/000-default.conf
	sed -i 's/Require all denied/Require all granted/g' $httpdConfDir/apache2.conf
fi
chmod 644 $httpdConfDir/sites-available/*

if [ `cat /etc/rc.local |grep -c 'httpd'` -eq 0 ] ; then
        echo "/etc/rc.d/init.d/httpd start">>/etc/rc.local
fi
chmod 755 /usr/local/omc
chmod 755 /usr/local/omc/bin
chmod 755 /usr/local/omc/bin/conf
chmod 644 /usr/local/omc/bin/conf/*

if [ -d $httpdConfDir/extra/ ] ;then
	cp -f $dstConfDir/httpd-ssl.conf $httpdConfDir/extra/
else
	mkdir $httpdConfDir/extra/
	chmod 644 $httpdConfDir/extra/
	cp -f $dstConfDir/httpd-ssl.conf $httpdConfDir/extra/
fi
cp -f $dstConfDir/cacert.pem $httpdConfDir/
cp -f $dstConfDir/*.crt $httpdConfDir/
cp -f $dstConfDir/*.key $httpdConfDir/
cp -f $dstConfDir/*.csr $httpdConfDir/

#update php.ini
#if [ `uname -r |grep -c '2.4.7-10'` -lt 1 ] ; then
#	mv /etc/php.ini /etc/php.ini.bak
	#cp -f $dstConfDir/php.ini /usr/local/lib
	#cp -f $dstConfDir/php.ini /etc/php.ini
#fi
cp -f $dstConfDir/php.ini $phpIniDir/php.ini

#for old omc version,must replace the mysql config file and  profile, rsyncd.conf
if [ `grep -c "/usr/local/omc_exec" /etc/profile` -gt 0 ] ; then
	#cp -f $dstConfDir/mariadb-50-server.cnf  /etc/mysql/mariadb.conf.d/50-server.cnf
	cp -f $dstConfDir/profile /etc/
fi

cp -f $dstConfDir/rsyncd.conf /etc/
chmod 644 /etc/rsyncd.conf
myShowResult "OK"

#step :Copy mssBak files
echo -n "Copy mssBak files ...."
mkdir -p $dstMssBakScriptDir
mkdir -p $dstMssBakDataDir

if [ ! -d "$srcMssBakDataDir" ] ; then		
#echo "$srcMssBakDataDir already exist"
mkdir -p $srcMssBakDataDir		
fi
myShowResult "OK"	

cp -r $dstMssBakDataDir  $omcBakDir/
rm -rf $dstMssBakDataDir/*
#cp -rf $srcMssBakDataDir/*  $dstMssBakDataDir/
cp -rf $srcMssBakDataDir  $dstMssBakDataDir
cp -rf $srcMssBakScriptDir/*  $dstMssBakScriptDir/
chmod -R 755 $dstMssBakDataDir
chmod 700 $dstMssBakScriptDir/*

#step 5:Create log dir
echo -n "Create log directory ...."
mkdir -p /usr/local/omc/log/
myShowResult "OK"

#step 6:Copy source files
#if ( test -d $srcSrcDir ) then 
#	echo "Copy sources files ...."
#	rm -rf $dstSrcDir
#	rm -rf $dstRelsDir
#	cp -rf $srcSrcDir   $dstSrcDir
#	cp -rf $srcRelsDir  $dstRelsDir
#fi

#Step 7:set auto run service
echo "Set auto run ...."
serviceList="omcd chkDb"
serviceList="omcd"
for serviceName in $serviceList; do
	#if [ `chkconfig  --list |grep -c $serviceName` -gt 0 ] ; then
		echo "update $serviceName ...."
		#chkconfig --del $serviceName
		update-rc.d -f $serviceName remove
	#fi
done

rm -f $initDir/omcd
ln -fs $dstBinDir/$omcdName  $initDir/omcd
#chkconfig --add omcd
#update-rc.d omcd defaults
cp $dstConfDir/omcd.service /usr/lib/systemd/system/
systemctl enable omcd.service
runLevels="2 3 4 5"
for level in $runLevels; do
	mv -f /etc/rc${level}.d/S01omcd /etc/rc${level}.d/S99omcd
done

#rm -f $initDir/chkDb
#ln -fs $dstBinDir/chkDb  $initDir/chkDb
#chkconfig --add chkDb

#Step 8:set omc's run mode
#$initDir/mysql start
service mysql start
if [ "$isAutoInstall" == "0" ] ; then
	$dstBinDir/setRunMode space install
else
	$dstBinDir/setRunMode -auto install
fi

#step 9:Record into install.log
installDate=` date +%Y-%m-%d' '%H:%M:%S`
cat ./emsVersion >>$omcDir/install.log
echo "$installDate $omcName $thisVersion" >> $omcDir/install.log
echo "-------------------------------------- " >> $omcDir/install.log

#step 10:Initial the OMC_PUB.omcPubVarConf table
if [ "$installMode" == "1" ] ; then
echo "Init the EMS omcPubVarConf"
/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='AGrandTech' WHERE pubVarName='fieldName';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='cents' WHERE pubVarName='pssCardMinCount';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='100' WHERE pubVarName='currency_decimal';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='123456' WHERE pubVarName='AucManagePwd';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='123456' WHERE pubVarName='EirManagePwd';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='' WHERE pubVarName='cdr_store_server';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='' WHERE pubVarName='csta_store_server';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='60' WHERE pubVarName='SMCLI_timeout';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='5' WHERE pubVarName='automatic_scratch_card_time';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='1' WHERE pubVarName='automatic_scratch_card_flag';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='' WHERE pubVarName='alarmSmsNumberList ';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='' WHERE pubVarName='getparam_from';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='' WHERE pubVarName='getBssStatusAndAlarmTimer';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='No' WHERE pubVarName='SMLOG_CONTENT_DECODE_FLAG';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='No' WHERE pubVarName='SMLOG_CONTENT_SHOW_FLAG';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='64' WHERE pubVarName='maxCOSNumber';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='300' WHERE pubVarName='maxMoPrefixNumPerCOS';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='subsManager' WHERE pubVarName='globalFTPUserName';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='iammanager' WHERE pubVarName='globalFTPPassword';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='15' WHERE pubVarName='HTTPSessionTimeout';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='60' WHERE pubVarName='GenerateCDRFileInterval';
UPDATE OMC_PUB.omcPubVarConf SET pubVarValue='0' WHERE pubVarName='ExternalRCM';
DELETE FROM BssOmcDb.OMCR_BSSTABLE;
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(0,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(1,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(2,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(3,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(4,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(5,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(6,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(7,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(8,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(9,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(10,'','','',0,0,0);
INSERT INTO BssOmcDb.OMCR_BSSTABLE(bssid,ip,name,remark,connected,alarmed,uploaded)VALUES(11,'','','',0,0,0);
_EOF_
fi

#Get the original conf file back
if [ "$installMode" == "2" ] ; then
	for conf_file in $bk_conf_file_list; do
		if [ -f /tmp/$conf_file ] ;then
	        	mv -f /tmp/$conf_file $orignalConfDir/
		fi
	done

	if [ -f /usr/local/cdr_io_proc ] ;then
		rm -rf /usr/local/omc/bin/dual/cdr_io_proc
                mv /usr/local/cdr_io_proc /usr/local/omc/bin/dual/
        fi
        if [ -f /usr/local/cdr_data_proc ] ;then
		rm -rf /usr/local/omc/bin/dual/cdr_data_proc
                mv /usr/local/cdr_data_proc /usr/local/omc/bin/dual/
        fi
	if [ $isCentOS -eq 1 ]; then
  		chown -R www:omc /usr/local/omc/bin/dual/cdr_data_proc
	else 
		chown -R www-data:www-data /usr/local/omc/bin/dual/cdr_data_proc
	fi
  	chmod 777 /usr/local/omc/bin/dual/cdr_data_proc
fi

chmod -R 755 /usr/local/omc/bin/dual

externalRCMStr=`/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
SELECT pubVarValue FROM OMC_PUB.omcPubVarConf WHERE pubVarName='ExternalRCM';
_EOF_`

externalRCM=`echo $externalRCMStr | awk '{print $2}'`
if [ "$externalRCM" == "0" ] ;then
/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
update OMC_PUB.sysMenuConf set privilege='-1' where level_1=3 and level_2=21 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='2' where level_1=3 and level_2=20 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='-1' where level_1=5 and level_2=3 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='3' where level_1=5 and level_2=2 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='-1' where level_1=7 and level_2=4 and level_3=2;
update OMC_PUB.sysMenuConf set privilege='4' where level_1=7 and level_2=4 and level_3=1;
_EOF_
else
/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
update OMC_PUB.sysMenuConf set privilege='2' where level_1=3 and level_2=21 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='-1' where level_1=3 and level_2=20 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='3' where level_1=5 and level_2=3 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='-1' where level_1=5 and level_2=2 and level_3=0;
update OMC_PUB.sysMenuConf set privilege='4' where level_1=7 and level_2=4 and level_3=2;
update OMC_PUB.sysMenuConf set privilege='-1' where level_1=7 and level_2=4 and level_3=1;
_EOF_
fi




if [ -n "`pidof mysqld`" ] ;then
        kill -9 `pidof mysqld`
fi

rm -rf /usr/local/mysql/master.info

#$initDir/mysql start
service mysql start

if [ -n "`pidof httpd`" ] ;then
        kill -9 `pidof httpd`
fi
#$initDir/httpd start
service apache2 start

$srcBinDir/changehostname


#install Intel raid service
raid_package=`dpkg -l sas_snmp`
if [ `echo $raid_package |grep -c 'not'` -eq 1 ] ; then
        echo "Do you want to install the service of RAID(y/n)"
        read sureInstallRaid
        if [ "$sureInstallRaid" == "y" ] || [ "$sureInstallRaid" == "Y" ] ; then
                cd $dstToolsDir
                tar zxvf sas_snmp_install.tgz
                cd sas_snmp_install/
                ./sas_snmp_install
		cd $dstToolsDir
		rm -rf sas_snmp_install

/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
UPDATE OMC_PUB.elementExistConf SET existFlag='1' WHERE elementTypeNo='234';
_EOF_

	else

/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
UPDATE OMC_PUB.elementExistConf SET existFlag='0' WHERE elementTypeNo='234';
_EOF_

        fi
else

	echo -n "Do you want to open the service of RAID(y/n)"
	read sureInstallRaid
        if [ "$sureInstallRaid" == "y" ] || [ "$sureInstallRaid" == "Y" ] ; then
/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
UPDATE OMC_PUB.elementExistConf SET existFlag='1' WHERE elementTypeNo='234';
_EOF_
	else
/usr/bin/mysql -u$mysql_user -p$mysql_pw <<_EOF_
UPDATE OMC_PUB.elementExistConf SET existFlag='0' WHERE elementTypeNo='234';
_EOF_
	fi

fi


# Be sure to restart the mysql
#rm -rf /var/lock/subsys/msyql
#rm -rf /var/lib/mysql
if [ -n "`pidof mysqld`" ] ;then
        kill -9 `pidof mysqld`
fi
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql
#/etc/init.d/mysql start
service mysql start
chown -R mysql /var/lib/mysql
chgrp -R mysql /var/lib/mysql

#mkdir -p /var/run/mysqld
#ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock
#ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

###############################################################################
# 4. EMS Install Finished
###############################################################################
myShowTitle "EMS Installation Process is complete"

#if [ `echo $PATH | grep -c '/etc/rc.d/init.d'` -eq 1 ] ;then
#
#
	#echo "Do you want to reboot(y/n)"
	#read sureReboot
	#if [ "$sureReboot" != "y" ] && [ "$sureReboot" != "Y" ] ; then
		#if [ "$installMode" == "2" ] ; then
			#service omcd start
		#fi
		#exit
	#else
		#myShowTitle "Rebooting Server....."
		#init 6
	#fi
#else
	#myShowTitle "Rebooting Server....."
        #init 6
#fi


exit

