From 52372e8c279168fa56521e8784b4643655b7c1a6 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Tue, 3 Mar 2020 15:30:43 +0800 Subject: [PATCH] luci-app-serverchan: sync with upstream source --- .../root/etc/init.d/serverchan | 23 +++++++------------ .../root/usr/bin/serverchan/serverchan | 22 ++++++++++++++---- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan b/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan index e2770eaec7..87da5f7863 100755 --- a/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan +++ b/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan @@ -4,27 +4,20 @@ START=99 STOP=10 start() { -flag=$(ps | grep "serverchan/serverchan" | grep -v "grep" | wc -l) -if [ $flag -eq 0 ] ;then -/usr/bin/serverchan/serverchan & -else -/usr/bin/serverchan/serverchan crontab -fi enable=$(uci get serverchan.serverchan.serverchan_enable) if [ $enable -eq 1 ]; then - kill -9 $(ps | grep serverchan/serverchan | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1 - sleep 1 - nohup /usr/bin/serverchan/serverchan 2>&1 & + /usr/bin/serverchan/serverchan & + echo "serverchan is starting now ..." + else + /usr/bin/serverchan/serverchan crontab + echo "serverchan is not enable, detect crontab and exit ..." + stop fi } stop() { -kill -9 `pgrep -f serverchan/serverchan` - enable=$(uci get serverchan.serverchan.serverchan_enable) - if [ $enable -ne 1 ]; then - kill $(pidof serverchan) >/dev/null 2>&1 - kill -9 $(ps | grep serverchan | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1 - fi + kill -9 `pgrep -f "/usr/bin/serverchan/serverchan"` 2>/dev/null + echo "serverchan exit ..." } restart(){ diff --git a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan index 3a15e17df8..ec942af533 100755 --- a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan +++ b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan @@ -123,7 +123,13 @@ function serverchan_cron(){ if ( echo `crontab -l` | grep -q "serverchan" ); then crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf >/dev/null 2>&1 fi - fi + fi + serverchan_enable=`get_config serverchan_enable` + if [ -z "$serverchan_enable" ] ; then + if ( echo `crontab -l` | grep -q "serverchan" ); then + crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf >/dev/null 2>&1 + fi + fi /etc/init.d/cron stop /etc/init.d/cron start } @@ -439,8 +445,7 @@ function up(){ if [ ! -f "${dir}ipAddress" ] ; then > ${dir}ipAddress;fi if [ "$1" ] ;then # 如果 ipAddress 文件中存在此ip,则跳过,待断线检测 - grep -w -q $1 ${dir}ipAddress - if [ $? -ne 0 ] ; then + if ( ! echo ${dir}ipAddress | grep -q -w $1 ) ; then local ip_mac=`getmac $1` local ip_name=`getname $1 $ip_mac` @@ -791,7 +796,6 @@ function send(){ fi uci set serverchan.serverchan.send_enable=0 uci commit serverchan - exit } # 初始化在线设备列表 @@ -825,6 +829,15 @@ if [ "$1" ] ;then exit fi +# 防止重复启动 +basePath=$(cd `dirname $0`; pwd) +fullPathProc=$basePath/${0##*/} +pCount=$(ps -ef | grep $fullPathProc | grep -v 'grep' | grep -v ' -c sh' | grep -v $$ | grep -c 'sh') +if [ $pCount -gt 1 ]; then + echo "serverchan is running ..." + exit 0 +fi + # 初始化 serverchan_cron read_config @@ -835,6 +848,7 @@ serverchan_first while [ "$serverchan_enable" -eq "1" ] ; do deltemp + read_config rand_geturl usage # 外网IP变化检测