#/bin/sh #********************************************************************************* # The contents of this file are subject to the vtiger CRM Public License Version 1.0 # ("License"); You may not use this file except in compliance with the License # The Original Code is: vtiger CRM Open Source # The Initial Developer of the Original Code is vtiger. # Portions created by vtiger are Copyright (C) vtiger. # All Rights Reserved. # # ******************************************************************************** setVariables() { wdir=`pwd` echo 'copying the migrator_backup_connection file to the migrator_connection file' cp -f ../apache/htdocs/vtigerCRM/migrator_backup_connection.php ../apache/htdocs/vtigerCRM/migrator_connection.php chmod 777 ../apache/htdocs/vtigerCRM/migrator_connection.php export diffmac=0 } checkInstallDir() { bindir=$1 retval=1 if [ -d ${bindir} ] then if [ -f ${bindir}/startvTiger.sh -a -f ${bindir}/stopvTiger.sh ] then retval=0 else echo "No such file ${bindir}/startvtiger.sh ${bindir}/stopvtiger.sh." echo "Invalid vtiger 4.0.1 directory specified" fi else echo "No such Directory: $bindir" fi return ${retval} } getvtiger4_0_1_installdir() { cancontinue=false while [ $cancontinue != "true" ] do local flag=0 while [ $flag -eq 0 ] do echo "" echo "Is 4.0.1 mysql installed in the same machine as 4.2 GA? (Y/N)" echo "" read RESPONSE case $RESPONSE in [nN]|[nN][oO]) echo "**********************" echo "**********************" echo "**********************" echo "Please ensure that the mysql server instance for 4.0.1 is running " echo "**********************" echo "**********************" echo "**********************" while [ "$macname" = "" ] do echo "Please enter the machine name" read macname done while [ "$macport" = "" ] do echo "Please enter the mysql Port Number" read macport done while [ "${username}" = "" ] do echo "Please enter the mysql User Name" read username done echo "Please enter the mysql Password" read passwd while [ "${apache_port_4_2}" = "" ] do echo '' echo "Specify the apache port of the vtiger CRM 4.2" read apache_port_4_2 done getRemoteMySQLDump $macname $macport $username $passwd export diffmac=1 flag=1 cancontinue=true ;; [yY]|[yY][eE][sS]) echo "" flag=1 ;; *) echo "invalid option" ;; esac done if [ ${diffmac} -eq 0 ] then res=0 while [ "$dir_4_0" = "" ] || [ $res != 0 ] do echo "" echo "Specify the absolute path of the bin directory of the vtiger CRM 4.0.1" echo "(For example /home/test/vtigerCRM4_0_1/bin):" read dir_4_0 if [ "${dir_4_0}" = "" ] then echo "Kindly enter a valid value please!" fi checkInstallDir ${dir_4_0} res=$? ##res stores the result of the previous op cancontinue=true done fi done echo "" echo 'The 4.0.1 vtiger CRM installation directory is' $dir_4_0 } getvtiger4_0_1_data() { scrfile=${dir_4_0}/startvTiger.sh while [ "${mysql_host_name_4_0}" = "" ] do echo "" echo "Specify the host name of the vtiger CRM 4.0.1 mysql server" read mysql_host_name_4_0 done while [ "${apache_port_4_0_1}" = "" ] do echo '' echo "Specify the apache port of the vtiger CRM 4.2" read apache_port_4_0_1 done mysql_dir=`grep "mysql_dir=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo 'mysql dir is ' $mysql_dir mysql_username=`grep "mysql_username=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo 'mysql username is ' $mysql_username mysql_password=`grep "mysql_password=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo 'mysql password is ' $mysql_password mysql_port=`grep "mysql_port=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo 'mysql port is ' $mysql_port mysql_socket=`grep "mysql_socket=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo $mysql_socket mysql_bundled=`grep "mysql_bundled=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo $mysql_bundled pwd src_file_4_0_1=./startvTiger.sh mysql_dir_4_0_1=`grep "mysql_dir=" ${src_file_4_0_1} | cut -d "=" -f2 | cut -d "'" -f2` echo $mysql_dir_4_0_1 finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLHOSTNAME ${mysql_host_name_4_0} finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLUSERNAME ${mysql_username} finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLPASSWORD ${mysql_password} finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLPORT ${mysql_port} chmod 777 ../apache/htdocs/vtigerCRM/migrator_connection.php } finAndReplace() { fileName=$1 var=$2 val=$3 tmpFile=${fileName}.$$ sed -e "s@${var}@${val}@g" ${fileName} > ${tmpFile} mv -f ${tmpFile} ${fileName} } isvtiger_MySQL_Running() { version=$1 retval=1 echo "select 1" | ${mysql_dir}/bin/mysql --user=${mysql_username} --password=${mysql_password} --port=${mysql_port} --socket=${mysql_socket} > /dev/null exit_status=$? if [ $exit_status -eq 0 ] then echo " " echo "The vtiger CRM $version MySQL server is running" echo " " retval=0 fi return ${retval} } checkInput() { checkcharlower=$1 checkcharupper=$2 correctkey=false while [ "${correctkey}" != "true" ] do read char if [ "$char" != "${checkcharlower}" -a "$char" != "${checkcharupper}" ] then echo "Press ${checkcharlower} (or) ${checkcharupper}" else correctkey=true fi done } promptAndCheckMySQL() { version=$1 echo "" echo "**************************************************" echo "Mysql server in the directory $mysql_dir is not running at port $mysql_port." echo "Start the vtiger CRM $version mysql server and then Press C to contiunue" echo "**************************************************" echo "" checkInput "c" "C" } getRemoteMySQLDump() { machine_name=$1 m_port=$2 m_uname=$3 m_passwd=$4 echo '' echo '' echo '###########################################################' echo '###########################################################' echo 'replacing the values in the migrator_connection.php file ' echo '###########################################################' echo '###########################################################' echo '' echo '' finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLHOSTNAME ${machine_name} finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLUSERNAME ${m_uname} finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLPASSWORD ${m_passwd} finAndReplace ../apache/htdocs/vtigerCRM/migrator_connection.php MYSQLPORT ${m_port} chmod 777 ../apache/htdocs/vtigerCRM/migrator_connection.php scrfile=./startvTiger.sh mysql_dir=`grep "mysql_dir=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` #take the dump of the 4.0.1 mysql echo 'set FOREIGN_KEY_CHECKS=0;' > vtiger4_0_1_dump.txt ${mysql_dir}/bin/mysqldump -u $m_uname -h $machine_name --port=$m_port --password=$m_passwd vtigercrm4_0_1 >> vtiger4_0_1_dump.txt if [ $? -eq 0 ] then echo 'Data dump taken successfully in vtiger_4_0_1_dump.txt' else echo 'Unable to take the database dump. vtigercrm database may be corrupted' exit fi #this should be the 4.0.1 mysql, so create the bkup database in it ${mysql_dir}/bin/mysql -h $machine_name --user=$m_uname --password=$m_passwd --port=$m_port -e "create database vtigercrm_4_0_1_bkp" #dump the 4.0.1 dump into the bkup database ${mysql_dir}/bin/mysql -h $machine_name --user=$m_uname --password=$m_passwd --port=$m_port vtigercrm_4_0_1_bkp < vtiger4_0_1_dump.txt wget http://localhost:${apache_port_4_2}/Migrate.php echo 'set FOREIGN_KEY_CHECKS=0;' > migrated_vtiger_4_2_dump.txt #dump the migrated bkup database to a file echo 'about to take the dump of the bkup file and put into the migrated_dump.txt file' ${mysql_dir}/bin/mysqldump -h $machine_name --user=$m_uname --password=$m_passwd --port=$m_port vtigercrm_4_0_1_bkp >> migrated_vtiger_4_2_dump.txt echo 'about to drop the database vtigercrm_4_0_1_bkp' #${mysql_dir}/bin/mysql -h $machine_name --user=$m_uname --password=$m_passwd --port=$m_port -e "drop database vtigercrm_4_0_1_bkp" } #end of getRemoteMySQLDump startMySQL() { version=$1 if [ "$mysql_bundled" == "false" ] then mysql_running=false while [ "${mysql_running}" != "true" ] do promptAndCheckMySQL $version isvtiger_MySQL_Running $version if [ $? = 0 ] then mysql_running=true fi done else mysql_running=false while [ "${mysql_running}" != "true" ] do echo "vtiger CRM $version Mysql Server is not running." echo "Going to start the vtiger CRM $version mysql server at port $mysql_port" ${mysql_dir}/bin/mysqld_safe --basedir=$mysql_dir --datadir=$mysql_dir/data --socket=$mysql_socket --tmpdir=$mysql_dir/tmp --user=root --port=$mysql_port --default-table-type=INNODB > /dev/null & sleep 8 isvtiger_MySQL_Running $version if [ $? -ne 0 ] then echo "" echo "*****************************************" echo "Unable to start vtiger CRM $version mysql server." echo "Check whether the port $mysql_port is free." echo "Free the port and press c to continue" echo "*****************************************" echo "" checkInput "c" "C" else mysql_running=true fi done fi } getdump4_0_1_db() { echo "********************************************" echo "Taking the dump of vtiger CRM 4.0.1 database" echo "*******************************************" echo 'set FOREIGN_KEY_CHECKS=0;' > vtiger_4_0_1_dump.txt ${mysql_dir_4_0_1}/bin/mysqldump --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket vtigercrm4_0_1 >> vtiger_4_0_1_dump.txt if [ $? -eq 0 ] then echo 'Data dump taken successfully in vtiger_4_0_1_dump.txt' else echo 'Unable to take the database dump. vtigercrm database may be corrupted' exit fi ${mysql_dir}/bin/mysql --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket -e "create database vtigercrm_4_0_1_bkp" ${mysql_dir}/bin/mysql --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket vtigercrm_4_0_1_bkp < vtiger_4_0_1_dump.txt wget http://localhost:${apache_port_4_0_1}/Migrate.php #${mysql_dir}/bin/mysql --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket vtigercrm_4_0_bkp < migrate_4_0to4_0_1.sql echo 'set FOREIGN_KEY_CHECKS=0;' > migrated_vtiger_4_2_dump.txt ${mysql_dir_4_0_1}/bin/mysqldump --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket vtigercrm_4_0_1_bkp >> migrated_vtiger_4_2_dump.txt ${mysql_dir}/bin/mysql --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket -e "drop database vtigercrm_4_0_1_bkp" } stopvtiger4_0_1MySQL() { echo "Shutting down the vtiger CRM 4.0.1 mysql server" ${mysql_dir}/bin/mysqladmin --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket shutdown echo "vtiger CRM 4.0.1 MySQL server shutdown" } getvtiger4_2data() { echo 'in get vtiger 4_2 data ' scrfile=./startvTiger.sh echo "" mysql_dir=`grep "mysql_dir=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo "4.2 dir is$mysql_dir" echo "" mysql_username=`grep "mysql_username=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo "4.2 user name is $mysql_username" mysql_password=`grep "mysql_password=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo "" echo "4.2 password is $mysql_password" echo "" mysql_port=`grep "mysql_port=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo "4.2 port is $mysql_port" echo "" mysql_socket=`grep "mysql_socket=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo "4.2 socket is $mysql_socket" echo "" mysql_bundled=`grep "mysql_bundled=" ${scrfile} | cut -d "=" -f2 | cut -d "'" -f2` echo "4.2 bundled status is $mysql_bundled" } dumpinto4_2db() { ${mysql_dir}/bin/mysql --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket -e "drop database vtigercrm4_2" ${mysql_dir}/bin/mysql --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket -e "create database if not exists vtigercrm4_2" ${mysql_dir}/bin/mysql --user=$mysql_username --password=$mysql_password --port=$mysql_port --socket=$mysql_socket vtigercrm4_2 --force < migrated_vtiger_4_2_dump.txt 2> migrate_log.txt if [ $? -eq 0 ] then echo 'vTiger CRM 4.0.1 Data successfully migrated into vtiger CRM 4.2 database vtigercrm4_2' else echo 'Unable to dump data into the vtiger CRM 4.2 database vtigercrm4_2. Check the migrate_log.txt in the $wdir directory' exit fi } main() { setVariables $* getvtiger4_0_1_installdir if [ ${diffmac} -eq 0 ] then getvtiger4_0_1_data isvtiger_MySQL_Running 4_0_1 if [ $? != 0 ] then startMySQL 4_0_1 fi getdump4_0_1_db if [ "$mysql_bundled" == "true" ] then stopvtiger4_0_1MySQL fi fi getvtiger4_2data isvtiger_MySQL_Running 4_2 if [ $? != 0 ] then startMySQL 4_2 fi dumpinto4_2db } main $*