#!/bin/bash
# Confixxmigrationscript
# (c) IP-Exchange.de
# written by Igor Kov && Milan Berger
# contributions by Jens Heisterkamp, Thomas Tischner
# Markus Fischer and Magic Google.
# Version v0.0.4

# Changelog
# 0.0.1	Initial Release
# 0.0.2	Steps werden geecho'ed
# 0.0.3	Erste "read" Steps eingebaut, bugfixing,
#	alle DB PWs aus bestehenden Files auslesen
# 0.0.4 "read" enhanced mit Abbruch Funktion


function die()
{
	exit 1
}



echo "Dienste stoppen"

/etc/init.d/apache2 stop
/etc/init.d/postfix stop
/etc/init.d/mysql stop
/etc/init.d/courier-imap stop
/etc/init.d/courier-imap-ssl stop
/etc/init.d/courier-pop stop
/etc/init.d/courier-pop-ssl stop

echo "Dienste gestoppt"
echo "Wurden Dienste sauber gestoppt?"
read -p "Fortfahren (j/n)?"
[ "$REPLY" == "j" ] || die "Confixxmigration abgebrochen, 2nd Level informieren!"


echo "Verschiebe Counterscript"
mv /etc/cron.d/counterscript /var/tmp

echo "Verschiebe WEBs und Mail"
cd /root/oldsystem/var/www
cp -avR web* /var/www/
cd /root/oldsystem/home/
cp -avR web* /home/
cp -avR /root/oldsystem/etc/apache2/ssl.* /etc/apache2/

echo "Verschiebe Webalizer"
cd /root/oldsystem/var/www/confixx/html/webalizer/
cp -avR web* /var/www/confixx/html/webalizer/

echo "Verschiebe mySQL DBs"
cd /root/oldsystem/var/lib/mysql/
mkdir /root/oldsystem/backup
cp -avR /var/lib/mysql/mysql/ /var/lib/mysql/confixx/ /root/oldsystem/backup/
cp -avR usr_web* mysql* confixx* /var/lib/mysql/
chown mysql:mysql -R /var/lib/mysql/
/etc/init.d/mysql start

echo "Daten kopiert"
read -p "Fortfahren (j/n)?"
[ "$REPLY" == "j" ] || die "Confixxmigration abgebrochen, 2nd Level informieren!"

echo "Setze Passwort fuer debian-sys-maint"
mysql -p$(awk '/mysqlUserPw/ { print $3 }' /root/oldsystem/opt/confixx/confixx_main.conf| sed -e "s|;||;s|'||g")  mysql -e "update user set password='$(grep password /etc/mysql/debian.cnf | sort -u | awk '{ print $3 }')' where user='debian-sys-maint';" 


egrep "dbPw|mysqlUserPw|min_uid|user_prefix|ServerID" /root/oldsystem/opt/confixx/confixx_main.conf | while read a; do ALT=`echo $a | cut -d " " -f1 `; sed -i "s|$ALT.*|$a|1" /opt/confixx/confixx_main.conf; done

echo "Passwoerter und Confixx angepasst"
echo "Confixx Upgrade starten"
read -p "Fortfahren (j/n)?"
[ "$REPLY" == "j" ] || die "Confixxmigration abgebrochen, 2nd Level informieren!"

cd /opt/confixx/
mv admin /root/oldsystem/backup/
wget http://ftp.ip-exchange.de/pub/swsoft/Confixx/ConfixxPro3.3/3.3.9/current_confixx_pro_update.tgz
tar xzf current_confixx_pro_update.tgz
./admin/updates/update_3.x.pl<<<0

echo "Confixx Upgrade fertig"
echo "magic admin.pl geficke..."
read -p "Fortfahren (j/n)?"
[ "$REPLY" == "j" ] || die "Confixxmigration abgebrochen, 2nd Level informieren!"

mysql confixx -uroot -p$(awk '/mysqlUserPw/ { print $3 }' /opt/confixx/confixx_main.conf| sed -e "s|;||;s|'||g") -e "UPDATE admin set httpd_options='1', idn='1', shareddomains='1';"
sed -i 's|$idn_shell.*|$idn_shell = '\'/usr/local/bin/idnconv\'';|' /opt/confixx/confixx_main.conf
sed -i 's|$idn_vendor.*|$idn_vendor = '\'idnkit\'';|' /opt/confixx/confixx_main.conf
sed -i 's|$iconv_shell.*|$iconv_shell = '\'/usr/bin/iconv\'';|' /opt/confixx/confixx_main.conf

/opt/confixx/admin/subs/scripts_install.pl
/opt/confixx/admin/subs/webPages_install.pl
/opt/confixx/confixx_counterscript.pl --force-all --debug

echo "Pass Permissions fuer Web und Mail an"
read -p "Fortfahren (j/n)?"
[ "$REPLY" == "j" ] || die "Confixxmigration abgebrochen, 2nd Level informieren!"

cd /var/www
for((i=0;i<500;i++));do chown web$i:www-data web$i; chown -R web$i:www-data web$i/html 2>/dev/null; done
cd /home
for DIR in $(find -maxdepth 1 -type d -name web\* | cut -c "3 4 5 6 7" ); do chown -R $DIR\:poponly $DIR; done

echo "Spamassassin und Counterscript..."
read -p "Fortfahren (j/n)?"
[ "$REPLY" == "j" ] || die "Confixxmigration abgebrochen, 2nd Level informieren!"

mkdir /home/spamd/.spamassassin
chown -R spamd:spamd /home/spamd
mv /var/tmp/counterscript /etc/cron.d/

echo 'Loesche nun Migrationsscript'
rm $0