#!/bin/bash
NGINXHOST=/usr/local/nginx/etc/virtual.conf;
PATH_CONF=/usr/local/directadmin/data/users;
NGINXTEMPATE=/usr/local/directadmin/data/templates/custom/nginx.conf;
NGINXSUBTEMPATE=/usr/local/directadmin/data/templates/custom/nginx_sub.conf;
HOLD=/tmp/nginx.conf.$$;
showHelp() {
echo "Rewrite all users's nginx.conf from template:";
echo "$0 all ";
echo "Rewrite users nginx.conf :";
echo "$0 -u username";
echo "For useing modify nginx.conf , you mast create file:";
echo "/usr/local/directadmin/data/users/USERNAME/domains/DOMAIN_NAME.custom_nginx with modify config.";
}
do_exit() {
exit 1;
}
check_user(){
if [ "$1" = "" ] ; then
#echo "User not exit";
return 1;
else
return 0;
fi
}
check_domain()
{
if [ ! -s $1 ];then
return 1;
else
return 0;
fi
}
user_configs(){
_UHOME=`grep -e "^${1}:" /etc/passwd | cut -d: -f6`;
_USER=$1;
_DOMAINLIST=${PATH_CONF}/$_USER/domains.list;
_NGINXCONF=${PATH_CONF}/$_USER/nginx.conf;
if ! check_user $_UHOME; then
return 1;
fi
if ! check_domain $_DOMAINLIST; then
return 1;
fi
_UIP=`cat ${PATH_CONF}/$_USER/user.conf | grep ip= | cut -d= -f2`;
if [ ! -f $_NGINXCONF ]
then
echo "include $_NGINXCONF;" >> $NGINXHOST;
else
cat $_NGINXCONF > $HOLD;
rm -rf $_NGINXCONF;
fi
for i in `cat $_DOMAINLIST`; do
if [ -f ${PATH_CONF}/$_USER/domains/$i.custom_nginx ]
then
cat ${PATH_CONF}/$_USER/domains/$i.custom_nginx >> $_NGINXCONF;
else
if [ -f ${PATH_CONF}/$_USER/domains/$i.pointers ]
then
for j in `cat ${PATH_CONF}/$_USER/domains/$i.pointers | awk -F= '{print $1}' `; do
park=`echo "$park $j www.$j"`;
done
fi
if ! cat $NGINXTEMPATE | sed 's#|HOME|#'$_UHOME'#g' | sed 's!|DOMAIN|!'$i'!g' |sed 's/|SERVER_ALIASES|/'"$park"'/' | sed 's!|IP|!'$_UIP'!' | sed 's!|USERNAME!'$1'!' >> $_NGINXCONF; then
if [ -f $HOLD ]; then
cat $HOLD > $_NGINXCONF;
fi
return 1;
fi
fi
for l in `cat ${PATH_CONF}/$_USER/domains/$i.subdomains`; do
cat $NGINXSUBTEMPATE | sed 's#|HOME|#'$_UHOME'#g' | sed 's!|DOMAIN|!'$i'!g'|sed 's/|SUB|/'$l'/g' | sed 's!|IP|!'$_UIP'!' | sed 's!|USERNAME|!'$1'!' >> $_NGINXCONF;
done
park="";
done
if [ -f $HOLD ]; then
rm -rf $HOLD;
fi
}
doAll(){
for i in `ls /usr/local/directadmin/data/users/`; do
user_configs $i;
done
}
case "$1" in
all) doAll;
;;
-u) user_configs $2;
;;
* ) showHelp;
do_exit 0;
;;
esac
do_exit 0;