#!/bin/bash

set -u
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin:/usr/local/psa/bin:/opt/psa/bin"
umask 022
log="/var/log/plesk/force-log-rotation.log"

log(){
	echo "$(date) $*" | tee -a "$log"
}

plesk_db(){
	MYSQL_PWD=$(cat /etc/psa/.psa.shadow) mysql -u admin psa -e "$1" | tail -n +2
}

getDomainPlans(){
	plesk_db "select Templates.name from Templates join clients where clients.id=Templates.owner_id and Templates.type='domain'";
}

getResellerPlans(){
	plesk_db "select Templates.name from Templates join clients where clients.id=Templates.owner_id and Templates.type='reseller'";
}

getDomains(){
	plesk_db "SELECT name FROM domains";
}

keep_log_files=${1:-1}
case $keep_log_files in
	[0-9]*) ;;
	*) log "Incorrect number of log files for keep specified: expected number, got $keep_log_files"
		exit 1;;
esac

Parameters="-log-rotate true -log-bytime daily -log-max-num-files $keep_log_files"

log "Updateing Domain Service Plans"
getDomainPlans | while read -r line; do
	log "Executing: /usr/local/psa/bin/service_plan -u $line $Parameters -manage_log false"
	service_plan -u "$line" $Parameters -manage_log false 2>&1 | tee -a "$log"
done

log "Updateing Reseller Service Plans"
getResellerPlans  | while read -r line; do
	log "Executing: /usr/local/psa/bin/reseller_service_plan -u $line -manage_log false"
	reseller_service_plan -u "$line" -manage_log false 2>&1 | tee -a "$log"
done

log "Updateing Domains"
getDomains | while read -r line; do
	log "Executing: /usr/local/psa/bin/domain -u $line $Parameters"
	domain -u "$line" $Parameters 2>&1 | tee -a "$log"
done
