#!/bin/bash
#DEBUG_MODE=on
unset DEBUG_MODE
RESOURCE_SERVER_LOCKFILE=/tmp/resource_service.lock
FAST_CGI_LOCK_FILE=/tmp/fastcgi.lock
. /home/teaegg/bin/functions-eucs.sh
. /home/teaegg/bin/functions.sh
. /home/teaegg/etc/general.ini
. /home/teaegg/etc/network.ini
. /etc/init.d/pocinit/led_func
send_message_to_all_poc_clients() {
#/home/teaegg/opensips/sbin/opensipsctl miscapps send_message 'sip:10004@127.0.0.1:6067' 'sip:10001999@127.0.0.1:6067' 'eyJtZXRob2QiOiJhZGREZXZpY2UiLCJkYXRhIjp7ImthaXlhbmciOiIyMDAwNCJ9fQ==' 'sip:10001999@127.0.0.1:6067' 'sip:192.168.139.122:6067' ''
sleep_before_send=$1
timestamp=`get_current_timestamp`
msg=`echo '{ "method":"noticeServerReady", "event_type":"broadcast", "time":"'$timestamp'" }'`
[ "$DEBUG_MODE" != "" ] && echo $msg && return
sleep $sleep_before_send
from="sip:10000@127.0.0.1:${SIP_LISTEN_PORT}"
to="sip:10001999@127.0.0.1:${SIP_LISTEN_PORT}"
body=`echo $msg|base64`
body=`echo $body|sed 's/ //g'`
proxy="sip:${CURRENT_EXTERNAL_IPADDR}:${SIP_LISTEN_PORT}"
/home/teaegg/opensips/sbin/opensipsctl miscapps send_message "$from" "$to" "$body" "$to" "$proxy" '' > /dev/null 2>&1
}
resource_service_wait_for_asterisk() {
cnt=0
while [ $cnt -lt 20 -a -e $RESOURCE_SERVER_LOCKFILE ]; do
/home/teaegg/opensips/sbin/opensipsctl online |grep 10001001 > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && return 0
let cnt=$cnt+1
sleep 1
done
return 1
}
on_resource_service_exit_abnormal() {
#如果资源服务不正常退出,则杀掉asterisk
killall -9 asterisk
}
run_resource_service() {
while [ -e $RESOURCE_SERVER_LOCKFILE ]; do
resource_service_wait_for_asterisk
ret=$?
if [ $ret -eq 0 ]; then
#5秒后send message给所有终端,通知其重新加入
send_message_to_all_poc_clients 5 &
cd /home/teaegg/resourceService/bin/
./resourceService > /tmp/resource-service.log 2>&1
fi
if [ -e $RESOURCE_SERVER_LOCKFILE ]; then
on_resource_service_exit_abnormal
fi
sleep 5
done
}
run_fastcgi() {
while [ -e $FAST_CGI_LOCK_FILE ]; do
ps ax|grep fcgi|grep -v grep >/dev/null 2>&1
ret=$?
if [ $ret -ne 0 ]; then
cd /home/teaegg/fcgi/bin
#ulimit -c unlimited
CWD=`pwd`
${CWD}/spawn-fcgi -a127.0.0.1 -p9001 -f ${CWD}/fcgi
echo ${CWD}/spawn-fcgi -a127.0.0.1 -p9001 -f ${CWD}/fcgi
fi
sleep 60
done
}
start_nginx() {
/home/teaegg/nginx/sbin/nginx -c /home/teaegg/nginx/conf/nginx.conf
}
stop_nginx() {
killall -9 nginx
}
start_phpfpm() {
/usr/sbin/php-fpm7.0
}
stop_phpfpm() {
ps aux | grep "php-fpm" |grep -v grep| cut -c 9-15 | xargs kill -9
}
start_fastcgi() {
touch $FAST_CGI_LOCK_FILE
run_fastcgi >/dev/null 2>&1 &
}
stop_fastcgi() {
rm -rf $FAST_CGI_LOCK_FILE
cgi_id=`ps -ef | grep fcgi | grep -v grep | awk '{print $2}'`
[ -n "$cgi_id" ] && kill -9 $cgi_id
}
start_opensips() {
/home/teaegg/opensips/sbin/opensipsctl start
}
stop_opensips() {
/home/teaegg/opensips/sbin/opensipsctl stop
sleep 3
everything_is_ok
ret=$?
if [ $ret != 0 ]; then
echo "error in everything_is_ok check"
#点亮故障灯
error_led ON
return
fi
#调整运行灯
sys_led BL
#放开服务端口
#iptables -I INPUT -p tcp --dport ${SIP_LISTEN_PORT} -j ACCEPT
#iptables -I INPUT -p tcp --dport ${IDRC_ENCRYPTION_PORT} -j ACCEPT
#iptables -I INPUT -p tcp --dport ${POC_CONF_PORT} -j ACCEPT
#iptables -I INPUT -p tcp --dport ${TURN_LISTEN_PORT} -j ACCEPT
#iptables -I INPUT -p tcp --dport ${TURN_TLS_LISTEN_PORT} -j ACCEPT
#iptables -I INPUT -i $EXTERNAL_NETWORK_INTERFACE -p udp -m udp --dport 1024:65535 -j ACCEPT
#if [ "$DATA_STREAM" = "on" ]; then
#iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE
#fi
#echo 1>/proc/sys/net/ipv4/ip_forward
}
#调用stopall之前,可以调用此方法,关闭所有服务端口
pre_stop() {
sleep 1
#iptables -D INPUT -p tcp --dport ${SIP_LISTEN_PORT} -j ACCEPT
#iptables -D INPUT -p tcp --dport ${IDRC_ENCRYPTION_PORT} -j ACCEPT
#iptables -D INPUT -p tcp --dport ${POC_CONF_PORT} -j ACCEPT
#iptables -D INPUT -p tcp --dport ${TURN_LISTEN_PORT} -j ACCEPT
#iptables -D INPUT -p tcp --dport ${TURN_TLS_LISTEN_PORT} -j ACCEPT
}
start_all() {
sys_led ON
apply_configs
ulimit -n 655350
ulimit -c unlimited
echo "starting turnserver..."
start_webrtc_turn
sleep 1
echo "starting nginx..."
start_nginx
sleep 1
echo "starting phpfpm..."
start_phpfpm
sleep 1
#echo "starting fastcgi..."
#start_fastcgi
echo "starting opensips..."
start_opensips
sleep 1
echo "starting asterisk..."
start_asterisk
sleep 2
echo "starting resourceserver..."
start_resource_service
sleep 2
echo "post start..."
#start_media_proxy
post_start
}
stop_all() {
pre_stop
sys_led OFF
stop_resource_service
stop_webrtc_turn
#stop_media_proxy
stop_asterisk
stop_opensips
#stop_fastcgi
stop_phpfpm
stop_nginx
}
start_maintance() {
start_nginx
start_phpfpm
post_start
#iptables -I INPUT -p tcp -i $EXTERNAL_NETWORK_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -I INPUT -p tcp -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
}
#main
case $1 in
start)
echo "starting all services ..."
start_all
;;
stop)
echo "stopping all ..."
stop_all
;;
restart)
echo "restaring all ..."
stop_all
sleep 5
start_all
;;
maintance)
echo "starting in maintance mode ..."
stop_all
sleep 5
start_maintance
;;
*)
echo "usage $0 [start|stop|restart]"
;;
esac