Your IP : 52.14.2.209
Current Path : /opt/webdir/bin/ |
|
Current File : //opt/webdir/bin/bx_cron_services.sh |
#!/bin/bash
# start site services: xmppd, smtpd
#
# options:
# $1 - module_name
# $2 - site_directory
export LANG=en_US.UTF-8
export TERM=linux
export NOLOCALE=yes
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
PROGNAME=$0
PROGPATH=$(dirname $0)
PHPCMD=/usr/bin/php
PHPCFG=/etc/php.ini
BASE_DIR=/opt/webdir
. $PROGPATH/bitrix_utils.sh || exit 1
# logging infor to file
log_to_file(){
_mess=$1
echo "$(date +"%Y/%m/%d %H:%M:%S") $$ $_mess" >> $LOGS_FILE
echo $_mess 1>&2
}
help_message(){
echo "Usage: $PROGNAME xmppd|smppd [/path/to/site/directory]"
echo "Ex."
echo " * Start xmppd daemon for default site"
echo " $PROGNAME xmppd"
echo " * Start smtpd daemon for additional site"
echo " $PROGNAME smtpd /home/bitrix/ext_www/site_name"
echo
exit 1
}
test_process(){
process_starter=$1
process_number=$(ps -ef | grep -v "grep\|$PROGNAME" | grep -c "$process_starter")
echo $process_number
}
start_xmppd(){
xmppd_script="$site_directory/bitrix/modules/xmpp/xmppd.php"
if [[ ! -f $xmppd_script ]]; then
echo "Not installed xmpp module on site in $site_directory"
exit 1
fi
xmppd_process_number=$(test_process $xmppd_script)
if [[ $xmppd_process_number -eq 0 ]]; then
$PHPCMD -c $PHPCFG -f $xmppd_script >> $LOGS_FILE 2>&1
if [[ $? -eq 0 ]]; then
service stunnel restart >> $LOGS_FILE 2>&1
fi
chown bitrix.bitrix $LOGS_FILE
fi
}
configure_init_bx_smtpd(){
TEMPLATE=/etc/ansible/roles/web/templates/init.d-bx_smtpd.j2
INIT=/etc/init.d/bx_smtpd
# create init script
TMP_TEMPLATE=/tmp/$(basename $TEMPLATE)
SITE_DIR_REGEXP=$(echo "$site_directory" | sed -e "s:/:\\\/:g")
# temporary file
cp -f $TEMPLATE $TMP_TEMPLATE
sed -i "s/{{ item.DocumentRoot }}/$SITE_DIR_REGEXP/" $TMP_TEMPLATE
# test replacement
TMP_MD5=$(md5sum $TMP_TEMPLATE | awk '{print $1}')
INIT_MD5=0
[[ -f $INIT ]] && INIT_MD5=$(md5sum $INIT | awk '{print $1}')
if [[ $TMP_MD5 != "$INIT_MD5" ]]; then
cp -f $TMP_TEMPLATE $INIT
chmod 755 $INIT
echo "Update $INIT"
fi
rm -f $TMP_TEMPLATE
}
configure_systemd_bx_smtpd(){
TEMPLATE=/etc/ansible/roles/web/templates/systemd-bx_smtpd.service.j2
SYSTEMD=/etc/systemd/system/bx_smtpd.service
# create systemd service
TMP_TEMPLATE=/tmp/$(basename $TEMPLATE)
SITE_DIR_REGEXP=$(echo "$site_directory" | sed -e "s:/:\\\/:g")
# temporary file
cp -f $TEMPLATE $TMP_TEMPLATE
sed -i "s/{{ item.DocumentRoot }}/$SITE_DIR_REGEXP/" $TMP_TEMPLATE
# test replacement
TMP_MD5=$(md5sum $TMP_TEMPLATE | awk '{print $1}')
INIT_MD5=0
[[ -f $SYSTEMD ]] && INIT_MD5=$(md5sum $SYSTEMD | awk '{print $1}')
if [[ $TMP_MD5 != "$INIT_MD5" ]]; then
cp -f $TMP_TEMPLATE $SYSTEMD
systemctl daemon-reload
echo "Update $SYSTEMD"
fi
rm -f $TMP_TEMPLATE
# enable systemd
if [[ $(systemctl is-active bx_smtpd | grep -wc active) -eq 0 ]]; then
systemctl enable bx_smtpd
systemctl start bx_smtpd
fi
}
configure_capabilities(){
PHP=$(which php)
[[ -z $PHP ]] && return 1
setcap CAP_NET_BIND_SERVICE=ep $PHP
}
configure_smtpd_centos7(){
configure_capabilities
configure_init_bx_smtpd
configure_systemd_bx_smtpd
}
start_smtpd(){
get_os_type
smtpd_script="$site_directory/bitrix/modules/mail/smtpd.php"
if [[ ! -f $smtpd_script ]]; then
echo "Not installed smtpd module on site in $site_directory"
exit 1
fi
smtpd_process_number=$(test_process $smtpd_script)
if [[ $smtpd_process_number -eq 0 ]]; then
if [[ $OS_VERSION -eq 6 ]]; then
su - bitrix -c "authbind $PHPCMD -c $PHPCFG -f $smtpd_script >> $LOGS_FILE 2>&1"
elif [[ $OS_VERSION -eq 7 ]]; then
configure_smtpd_centos7
fi
fi
}
# test options
module_name=$1
site_directory=$2
[[ ( -z "$module_name" ) || ( -z $site_directory ) ]] && help_message
if [[ ! -d $site_directory ]]; then
echo "error: Not exist site directory $site_directory"
exit 1
fi
site_directory=$(echo $site_directory | sed -e 's:/$::')
# log file /home/bitrix/ext_www/site_name/bitrix/modules/xmppd.log
LOGS_FILE=$site_directory/bitrix/modules/$module_name.log
case $module_name in
'xmppd') start_xmppd ;;
'smtpd') start_smtpd ;;
*) help_message ;;
esac