|
@@ -11,7 +11,6 @@
|
|
|
START=95
|
|
|
STOP=15
|
|
|
SERVICE_DAEMONIZE=1
|
|
|
-EXTRA_COMMANDS=rules
|
|
|
MAXFD=32768
|
|
|
NAME=shadowsocksr
|
|
|
LOCK_FILE=/var/lock/${NAME}.lock
|
|
@@ -59,14 +58,10 @@ uci_get_by_cfgid() {
|
|
|
|
|
|
get_host_ip() {
|
|
|
local host=$1
|
|
|
- local isip=""
|
|
|
- local ip=$host
|
|
|
- isip=$(echo $host | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
|
|
|
- if [ -z "$isip" ]; then
|
|
|
- if [ "$host" != "${host#*:[0-9a-fA-F]}" ]; then
|
|
|
- ip=$host
|
|
|
- else
|
|
|
- local ip=$(resolveip -4 -t 3 $host | awk 'NR==1{print}')
|
|
|
+ local ip=$1
|
|
|
+ if [ -z "$(echo $1 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}")" ]; then
|
|
|
+ if [ "$1" == "${1#*:[0-9a-fA-F]}" ]; then
|
|
|
+ ip=$(resolveip -4 -t 3 $1 | awk 'NR==1{print}')
|
|
|
[ -z "$ip" ] && ip=$(wget -q -O- http://119.29.29.29/d?dn=$1 | awk -F ';' '{print $1}')
|
|
|
fi
|
|
|
fi
|
|
@@ -134,9 +129,8 @@ gen_config_file() {
|
|
|
else
|
|
|
uci_set_by_name $1 ip $hostip
|
|
|
fi
|
|
|
- [ "$2" == "0" -a "$kcp_flag" == "1" ] && hostip="127.0.0.1"
|
|
|
case "$2" in
|
|
|
- 0) config_file=$CONFIG_FILE ;;
|
|
|
+ 0) config_file=$CONFIG_FILE && [ "$kcp_flag" == "1" ] && hostip="127.0.0.1" ;;
|
|
|
1) config_file=$CONFIG_UDP_FILE ;;
|
|
|
2) config_file=$CONFIG_NETFLIX_FILE ;;
|
|
|
*) config_file=$CONFIG_SOCK5_FILE ;;
|
|
@@ -266,9 +260,6 @@ start_dns() {
|
|
|
start_pdnsd() {
|
|
|
local usr_dns="$1"
|
|
|
local usr_port="$2"
|
|
|
- [ -z "$usr_dns" ] && usr_dns="8.8.8.8"
|
|
|
- [ -z "$usr_port" ] && usr_port="53"
|
|
|
- [ -d /var/etc ] || mkdir -p /var/etc
|
|
|
if [ ! -f "/var/pdnsd/pdnsd.cache" ]; then
|
|
|
mkdir -p /var/pdnsd
|
|
|
touch /var/pdnsd/pdnsd.cache
|
|
@@ -585,7 +576,6 @@ start_server() {
|
|
|
iptables -t filter -A SSR-SERVER-RULE -p udp --dport $(uci_get_by_name $1 server_port) -j ACCEPT
|
|
|
return 0
|
|
|
}
|
|
|
- mkdir -p /var/run /var/etc
|
|
|
config_load $NAME
|
|
|
config_foreach server_service server_config
|
|
|
gen_serv_include
|
|
@@ -631,6 +621,24 @@ check_server() {
|
|
|
}
|
|
|
|
|
|
start_rules() {
|
|
|
+ if [ -z "$switch_server" ]; then
|
|
|
+ GLOBAL_SERVER=$(uci_get_by_type global global_server nil)
|
|
|
+ else
|
|
|
+ GLOBAL_SERVER=$switch_server
|
|
|
+ switch_enable=1
|
|
|
+ fi
|
|
|
+ if [ "$GLOBAL_SERVER" == "nil" ]; then
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+ NETFLIX_SERVER=$(uci_get_by_type global netflix_server nil)
|
|
|
+ if [ "$NETFLIX_SERVER" == "same" ]; then
|
|
|
+ NETFLIX_SERVER=$GLOBAL_SERVER
|
|
|
+ fi
|
|
|
+ run_mode=$(uci_get_by_type global run_mode)
|
|
|
+ UDP_RELAY_SERVER=$(uci_get_by_type global udp_relay_server)
|
|
|
+ if [ "$UDP_RELAY_SERVER" == "same" ] ; then
|
|
|
+ UDP_RELAY_SERVER=$GLOBAL_SERVER
|
|
|
+ fi
|
|
|
local server=$(get_host_ip $(uci_get_by_name $GLOBAL_SERVER server))
|
|
|
if [ "$server" == "ERROR" ]; then
|
|
|
server=$(uci_get_by_name $GLOBAL_SERVER ip)
|
|
@@ -711,52 +719,21 @@ start_rules() {
|
|
|
return $?
|
|
|
}
|
|
|
|
|
|
-rules() {
|
|
|
- if [ "$GLOBAL_SERVER" == "nil" ]; then
|
|
|
- return 1
|
|
|
- fi
|
|
|
- mkdir -p /var/run /var/etc
|
|
|
- run_mode=$(uci_get_by_type global run_mode)
|
|
|
- UDP_RELAY_SERVER=$(uci_get_by_type global udp_relay_server)
|
|
|
- [ "$UDP_RELAY_SERVER" == "same" ] && UDP_RELAY_SERVER=$GLOBAL_SERVER
|
|
|
- if start_rules; then
|
|
|
- return 0
|
|
|
- else
|
|
|
- return 1
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
start() {
|
|
|
[ -f "$LOCK_FILE" ] && exit 2
|
|
|
touch "$LOCK_FILE"
|
|
|
- echo "-----------start-----------" >>/tmp/ssrplus.log
|
|
|
- if [ -z "$switch_server" ]; then
|
|
|
- GLOBAL_SERVER=$(uci_get_by_type global global_server nil)
|
|
|
- else
|
|
|
- GLOBAL_SERVER=$switch_server
|
|
|
- switch_enable=1
|
|
|
- fi
|
|
|
- NETFLIX_SERVER=$(uci_get_by_type global netflix_server nil)
|
|
|
- if [ "$NETFLIX_SERVER" == "same" ]; then
|
|
|
- NETFLIX_SERVER=$GLOBAL_SERVER
|
|
|
- fi
|
|
|
- mkdir -p /tmp/dnsmasq.d /tmp/dnsmasq.ssr
|
|
|
+ echo "----------start------------" >>/tmp/ssrplus.log
|
|
|
+ mkdir -p /tmp/dnsmasq.d /tmp/dnsmasq.ssr /var/run /var/etc
|
|
|
cat <<-EOF >/tmp/dnsmasq.d/dnsmasq-ssr.conf
|
|
|
conf-dir=/tmp/dnsmasq.ssr
|
|
|
EOF
|
|
|
- if rules; then
|
|
|
+ if start_rules; then
|
|
|
if start_redir_tcp; then
|
|
|
start_redir_udp
|
|
|
start_shunt
|
|
|
start_switch
|
|
|
start_dns
|
|
|
add_cron
|
|
|
- if [ "$run_mode" == "oversea" ]; then
|
|
|
- cp -rf /etc/ssr/oversea_list.conf /tmp/dnsmasq.ssr/
|
|
|
- else
|
|
|
- cp -rf /etc/ssr/gfw_list.conf /tmp/dnsmasq.ssr/
|
|
|
- cp -rf /etc/ssr/gfw_base.conf /tmp/dnsmasq.ssr/
|
|
|
- fi
|
|
|
/usr/share/shadowsocksr/gfw2ipset.sh $switch_server
|
|
|
else
|
|
|
/usr/bin/ssr-rules -f
|
|
@@ -778,13 +755,14 @@ start() {
|
|
|
start_monitor
|
|
|
check_server
|
|
|
clean_log
|
|
|
- echo "------------end------------" >>/tmp/ssrplus.log
|
|
|
+ echo "-----------end------------" >>/tmp/ssrplus.log
|
|
|
rm -f $LOCK_FILE
|
|
|
}
|
|
|
|
|
|
boot() {
|
|
|
+ echo "$(date "+%Y-%m-%d %H:%M:%S") boot!" >/tmp/ssrplus.log
|
|
|
ulimit -n 65535
|
|
|
- (/usr/share/shadowsocksr/chinaipset.sh && sleep 3 && start >/dev/null 2>&1) &
|
|
|
+ start
|
|
|
}
|
|
|
|
|
|
stop() {
|