INSTALL = install
CHKCONFIG = /sbin/chkconfig
prefix  := /usr/local

PROGRAMS := precheck ioncube mysql mysqlupgrade precheckupgrade webfiles 
	
$(phony all): $(PROGRAMS)

.PHONY install: precheck ioncube mysql webfiles 
.PHONY upgrade: precheckupgrade mysqlupgrade webfiles

precheck:
	@echo "Checking if Asternic CDR Stats is already installed"
	@if [ -f /var/www/html/cdrstats/incoming.php ]; then \
		echo "Already Installed! Use: 'make upgrade' to upgrade your installation."; \
		exit 1; \
	fi
	@if [ -f /var/www/cdrstats/incoming.php ]; then \
		echo "Already Installed! Use: 'make upgrade' to upgrade your installation."; \
		exit 1; \
	fi

precheckupgrade:
	@echo "Checking if Asternic CDR Stats is already installed"
	@if [ ! -f /var/www/html/cdrstats/incoming.php ] && [ ! -f /var/www/stats/incoming.php ]; then \
		echo "Asternic CDR Stats is not installed! Cannot upgrade. If you want to install try 'make install' instead."; \
		exit 1; \
	fi

webfiles:
	@echo "Installing html files and directories..."
	@if hash lsof 2>/dev/null; then \
	user=$$(lsof -i :80 | awk '{print $$3}' | uniq -c | sort -n | tail -n 1 | awk '{print $$2}'); \
	if [ "Z$$user" = "Z" ]; then \
	user=$$(lsof -i :443 | awk '{print $$3}' | uniq -c | sort -n | tail -n 1 | awk '{print $$2}'); \
	fi; \
	fi; \
	if [ "Z$$user" = "Z" ]; then \
	user=$$(getent passwd asterisk > /dev/null && if [ $$? -eq 0 ]; then echo 'asterisk'; fi); \
	fi; \
	if [ "Z$$user" = "Z" ]; then \
	user=$$(getent passwd apache > /dev/null && if [ $$? -eq 0 ]; then echo 'apache'; fi); \
	fi; \
	if [ "Z$$user" = "Z" ]; then \
	user=$$(getent passwd www-data > /dev/null && if [ $$? -eq 0 ]; then echo 'www-data'; fi); \
	fi; \
	if [ -x /var/www/html ]; then \
		if [ -f /var/www/html/cdrstats/config.php ]; then \
			mv /var/www/html/cdrstats/config.php /var/www/html/cdrstats/config.orig.php; \
		fi; \
		$(INSTALL) -d -m 755 html /var/www/html/cdrstats; \
		cp -rp html/* /var/www/html/cdrstats/; \
		if [ -f /var/www/html/cdrstats/config.orig.php ]; then \
			mv /var/www/html/cdrstats/config.php /var/www/html/cdrstats/config.new.php; \
			mv /var/www/html/cdrstats/config.orig.php /var/www/html/cdrstats/config.php; \
		fi; \
		chown $$user /var/www/html/cdrstats; \
		chown -R $$user /var/www/html/cdrstats/*; \
		chgrp $$user /var/www/html/cdrstats; \
		chgrp -R $$user /var/www/html/cdrstats/*; \
	elif [ -x /var/www ]; then \
		if [ -f /var/www/cdrstats/config.php ]; then \
			cp /var/www/cdrstats/config.php /var/www/cdrstats/config.orig.php; \
		fi; \
		$(INSTALL) -d -m 755 html /var/www/cdrstats; \
		cp -rp html/* /var/www/cdrstats/; \
		if [ -f /var/www/cdrstats/config.orig.php ]; then \
			mv /var/www/cdrstats/config.php /var/www/cdrstats/config.new.php; \
			mv /var/www/cdrstats/config.orig.php /var/www/cdrstats/config.php; \
		fi; \
		chown $$user /var/www/cdrstats; \
		chown -R $$user /var/www/cdrstats/*; \
		chgrp $$user /var/www/cdrstats; \
		chgrp -R $$user /var/www/cdrstats/*; \
	fi; 

ioncube:
	@php -v | grep ionCube >/dev/null; \
	if [ $$? -eq 1 ]; then \
		echo "Installing Ioncube Loader..."; \
		PHPVER=$$(php -v | head -n1 | cut -d ' ' -f2 | awk -F. '{print $$1"."$$2}'); \
		PHPSOFILE="zend_extension=/usr/local/ioncubeloader/ioncube_loader_lin_$$PHPVER.so"; \
		if [ -f /etc/debian_version ]; then \
			if [ -d /etc/php5/conf.d ]; then \
				if [ ! -f /etc/php5/conf.d/00-ioncube.ini ]; then \
					echo $$PHPSOFILE > /etc/php5/conf.d/00-ioncube.ini; \
				fi; \
			fi; \
			if [ -d /etc/php5/apache2/conf.d ]; then \
				if [ ! -f /etc/php5/apache2/conf.d/00-ioncube.ini ]; then \
					echo $$PHPSOFILE > /etc/php5/apache2/conf.d/00-ioncube.ini; \
				fi; \
			fi; \
			if [ -d /etc/php5/cli/conf.d ]; then \
				if [ ! -f /etc/php5/cli/conf.d/00-ioncube.ini ]; then \
					echo $$PHPSOFILE > /etc/php5/cli/conf.d/00-ioncube.ini; \
				fi; \
			fi; \
		elif [ -f /etc/redhat-release ]; then \
			if [ ! -f /etc/php.d/00-ioncube.ini ]; then \
				echo $$PHPSOFILE > /etc/php.d/00-ioncube.ini; \
			fi; \
		fi; \
		uname -a | grep 64; \
		if [ $$? -eq 1 ]; then \
			echo "IONCUBE 32 bits"; \
			wget -qnc http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz; \
			tar zxvf ioncube_loaders_lin_x86.tar.gz >/dev/null; \
			mkdir -p /usr/local/ioncubeloader; \
			cp -rp ioncube/*.so /usr/local/ioncubeloader/; \
		else \
			echo "IONCUBE 64 bits"; \
			wget -qnc http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz; \
			tar zxvf ioncube_loaders_lin_x86-64.tar.gz >/dev/null; \
			mkdir -p /usr/local/ioncubeloader; \
			cp -rp ioncube/*.so /usr/local/ioncubeloader/; \
		fi; \
	else \
		echo "Ioncube already installed..."; \
	fi; 

mysql:
	@echo "Creating MySQL database and tables..."
	@if [ -f /etc/elastix.conf ]; then \
		echo "Using MySQL root password from elastix.conf"; \
		NEWMYSQLROOT=$$(cat /etc/elastix.conf | grep mysqlrootpwd | cut -d= -f2); \
		export MYSQLROOT=$${NEWMYSQLROOT}; \
		export PARAMMYSQLPWD="-p$${NEWMYSQLROOT}"; \
		mysql -sss -u root $${PARAMMYSQLPWD} -e "SELECT ''"; \
    		if [ $$? -ne 0 ]; then \
			echo "Bad MySQL password in elastix.conf. Abort!"; \
			exit 1; \
		fi; \
	fi; \
	if [ -f /etc/issabel.conf ]; then \
		echo "Using MySQL root password from issabel.conf"; \
		NEWMYSQLROOT=$$(cat /etc/issabel.conf | grep mysqlrootpwd | cut -d= -f2); \
		export MYSQLROOT=$${NEWMYSQLROOT}; \
		export PARAMMYSQLPWD="-p$${NEWMYSQLROOT}"; \
		mysql -sss -u root $${PARAMMYSQLPWD} -e "SELECT ''"; \
    		if [ $$? -ne 0 ]; then \
			echo "Bad MySQL password in issabel.conf. Abort!"; \
			exit 1; \
		fi; \
	fi; \
	if [ "$${MYSQLROOT}" = "" ]; then \
		export x=1; \
		while [ $$x -le 3 ]; do \
			x=$$(( $$x + 1 )); \
			read -p "Please enter the MySQL root password: " MYSQLROOT; \
			if [ "$${MYSQLROOT}" = "" ]; then \
				export PARAMMYSQLPWD=""; \
			else \
				export PARAMMYSQLPWD="-p$${MYSQLROOT}"; \
			fi; \
			mysql -sss -u root $${PARAMMYSQLPWD} -e "SELECT ''"; \
	    		if [ $$? -ne 0 ]; then \
				echo "Bad MySQL password!"; \
			else \
				echo "Correct!"; \
				x=$$(( $$x + 100 )); \
			fi; \
		done; \
		if [ $${x} -lt 90 ]; then \
			echo "Bad Password. Abort"; \
			exit 1; \
		fi; \
	fi; \
	echo "Creating CDR tables"; \
	if [ -f /etc/asterisk/cdr_mysql.conf ]; then \
		echo "Using mysql data from Asterisk's cdr_mysql.conf"; \
		export MYSQLCDRDB=$$(cat /etc/asterisk/cdr_mysql.conf | grep dbname | head -n 1 | cut -d= -f2); \
	else \
		export MYSQLCDRDB=asteriskcdrdb; \
	fi; \
	mysql -s -u root $${PARAMMYSQLPWD} -e "SELECT now()"; \
	if [ $$? -eq 0 ]; then \
		echo "Creating tables"; \
		mysql -f -u root $${PARAMMYSQLPWD} $${MYSQLCDRDB}< sql/db.sql; \
		mysql -f -u root $${PARAMMYSQLPWD} $${MYSQLCDRDB}< sql/trigger.sql; \
	else \
		echo; \
		echo "Could not create tables due to bad user/password"; \
		echo; \
	fi
mysqlupgrade:
	@echo "Updating MySQL database and tables..."
	@if [ -f /etc/elastix.conf ]; then \
		echo "Using MySQL root password from elastix.conf"; \
		NEWMYSQLROOT=$$(cat /etc/elastix.conf | grep mysqlrootpwd | cut -d= -f2); \
		export MYSQLROOT=$${NEWMYSQLROOT}; \
		export PARAMMYSQLPWD="-p$${NEWMYSQLROOT}"; \
		mysql -sss -u root $${PARAMMYSQLPWD} -e "SELECT ''"; \
    		if [ $$? -ne 0 ]; then \
			echo "Bad MySQL password in elastix.conf. Abort!"; \
			exit 1; \
		fi; \
	fi; \
	if [ -f /etc/issabel.conf ]; then \
		echo "Using MySQL root password from issabel.conf"; \
		NEWMYSQLROOT=$$(cat /etc/issabel.conf | grep mysqlrootpwd | cut -d= -f2); \
		export MYSQLROOT=$${NEWMYSQLROOT}; \
		export PARAMMYSQLPWD="-p$${NEWMYSQLROOT}"; \
		mysql -sss -u root $${PARAMMYSQLPWD} -e "SELECT ''"; \
    		if [ $$? -ne 0 ]; then \
			echo "Bad MySQL password in issabel.conf. Abort!"; \
			exit 1; \
		fi; \
	fi; \
	if [ "$${MYSQLROOT}" = "" ]; then \
		export x=1; \
		while [ $$x -le 3 ]; do \
			x=$$(( $$x + 1 )); \
			read -p "Please enter the MySQL root password: " MYSQLROOT; \
			if [ "$${MYSQLROOT}" = "" ]; then \
				export PARAMMYSQLPWD=""; \
			else \
				export PARAMMYSQLPWD="-p$${MYSQLROOT}"; \
			fi; \
			mysql -sss -u root $${PARAMMYSQLPWD} -e "SELECT ''"; \
	    		if [ $$? -ne 0 ]; then \
				echo "Bad MySQL password!"; \
			else \
				echo "Correct!"; \
				x=$$(( $$x + 100 )); \
			fi; \
		done; \
		if [ $${x} -lt 90 ]; then \
			echo "Bad Password. Abort"; \
			exit 1; \
		fi; \
	fi; \
	echo "Updating CDR tables"; \
	if [ -f /etc/asterisk/cdr_mysql.conf ]; then \
		echo "Using mysql data from Asterisk's cdr_mysql.conf"; \
		export MYSQLCDRDB=$$(cat /etc/asterisk/cdr_mysql.conf | grep dbname | head -n 1 | cut -d= -f2); \
	else \
		export MYSQLCDRDB=asteriskcdrdb; \
	fi; \
	mysql -s -u root $${PARAMMYSQLPWD} -e "SELECT now()"; \
	if [ $$? -eq 0 ]; then \
		echo "Updating tables"; \
		cat sql/dbupgrade_*.sql | mysql -s -f -u root $${PARAMMYSQLPWD} $${MYSQLCDRDB};  \
		mysql -f -u root $${PARAMMYSQLPWD} $${MYSQLCDRDB}< sql/trigger.sql; \
	else \
		echo; \
		echo "Could not update tables due to bad user/password"; \
		echo; \
	fi

