mirror of
https://github.com/monlor/MIXBOX-ARCHIVE.git
synced 2026-03-14 09:21:27 +00:00
moxbox init
This commit is contained in:
134
apps/shadowsocks/scripts/ss_online_update.sh
Normal file
134
apps/shadowsocks/scripts/ss_online_update.sh
Normal file
@@ -0,0 +1,134 @@
|
||||
#!/bin/sh
|
||||
#copyright by monlor
|
||||
source /etc/mixbox/bin/base
|
||||
eval `mbdb export shadowsocks`
|
||||
|
||||
online_config=${mbroot}/apps/${appname}/config/ssserver_online.conf
|
||||
local_config=${mbroot}/apps/${appname}/config/ssserver.conf
|
||||
|
||||
decode_url_link(){
|
||||
link=$1
|
||||
num=$2
|
||||
len=$((${#link}-$num))
|
||||
mod4=$(($len%4))
|
||||
if [ "$mod4" -gt "0" ]; then
|
||||
var="===="
|
||||
newlink=${link}${var:$mod4}
|
||||
echo -n "$newlink" | sed 's/-/+/g; s/_/\//g' | base64 -d 2>/dev/null
|
||||
else
|
||||
echo -n "$link" | sed 's/-/+/g; s/_/\//g' | base64 -d 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
get_ss_config() {
|
||||
decode_link="$1"
|
||||
server=$(echo "$decode_link" |awk -F':' '{print $1}')
|
||||
server_port=$(echo "$decode_link" |awk -F':' '{print $2}')
|
||||
protocol=$(echo "$decode_link" |awk -F':' '{print $3}')
|
||||
encrypt_method=$(echo "$decode_link" |awk -F':' '{print $4}')
|
||||
obfs=$(echo "$decode_link" |awk -F':' '{print $5}'|sed 's/_compatible//g')
|
||||
#password=$(echo "$decode_link" |awk -F':' '{print $6}'|awk -F'/' '{print $1}')
|
||||
|
||||
password=$(decode_url_link $(echo "$decode_link" |awk -F':' '{print $6}'|awk -F'/' '{print $1}') 0)
|
||||
|
||||
obfsparam_temp=$(echo "$decode_link" |awk -F':' '{print $6}'|grep -Eo "obfsparam.+"|sed 's/obfsparam=//g'|awk -F'&' '{print $1}')
|
||||
[ -n "$obfsparam_temp" ] && obfsparam=$(decode_url_link $obfsparam_temp 0) || obfsparam=''
|
||||
|
||||
protoparam_temp=$(echo "$decode_link" |awk -F':' '{print $6}'|grep -Eo "protoparam.+"|sed 's/protoparam=//g'|awk -F'&' '{print $1}')
|
||||
[ -n "$protoparam_temp" ] && protoparam=$(decode_url_link $protoparam_temp 0|sed 's/_compatible//g') || protoparam=''
|
||||
|
||||
remarks_temp=$(echo "$decode_link" |awk -F':' '{print $6}'|grep -Eo "remarks.+"|sed 's/remarks=//g'|awk -F'&' '{print $1}')
|
||||
[ -n "$remarks_temp" ] && remarks=$(decode_url_link $remarks_temp 0 | tr "\n" " " | sed -r 's/[ ]|,|\[|\]|\*|\\|\///g') || remarks="$server"
|
||||
|
||||
group_temp=$(echo "$decode_link" |awk -F':' '{print $6}'|grep -Eo "group.+"|sed 's/group=//g'|awk -F'&' '{print $1}')
|
||||
[ -n "$group_temp" ] && group=$(decode_url_link $group_temp 0) || group='AutoSuBGroup'
|
||||
# [ -n "$group" ] && group_base64=`echo $group | base64_encode | sed 's/ -//g'`
|
||||
# [ -n "$server" ] && server_base64=`echo $server | base64_encode | sed 's/ -//g'`
|
||||
#把全部服务器节点写入文件 /usr/share/shadowsocks/serverconfig/all_onlineservers
|
||||
|
||||
}
|
||||
|
||||
local_update() {
|
||||
|
||||
if [ -n "$ssuri" ]; then
|
||||
# 检测ss ssr
|
||||
NODE_FORMAT1=`echo $ssuri | grep -E "^ss://"`
|
||||
NODE_FORMAT2=`echo $ssuri | grep -E "^ssr://"`
|
||||
if [ -n "$NODE_FORMAT1" ];then
|
||||
logsh "【$service】" "暂不支持ss节点订阅..." && exit 1
|
||||
elif [ -n "$NODE_FORMAT2" ];then
|
||||
urllinks=$(echo $ssuri | sed 's/ssr:\/\///g')
|
||||
decode_link=$(decode_url_link $urllinks 0)
|
||||
get_ss_config $decode_link
|
||||
read -p "确定要添加节点:[$remarks,$server,$server_port,$password,$encrypt_method...][1/0]? " res
|
||||
if [ "$res" == '1' ]; then
|
||||
cat "$local_config" | grep -v "$remarks" > ${mbtmp}/server.conf
|
||||
mv -f ${mbtmp}/server.conf "$local_config"
|
||||
echo "ssr,$remarks,$server,$server_port,$password,$encrypt_method,$protocol,$obfs,$protoparam,$obfsparam" >> "$local_config"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
online_update() {
|
||||
|
||||
cat ${mbroot}/apps/${appname}/config/subscribe_link.txt | while read ssr_subscribe_link
|
||||
do
|
||||
logsh "【$service】" "更新订阅地址:$ssr_subscribe_link"
|
||||
for i in $(seq 1 6); do
|
||||
logsh "【$service】" "第$i次下载节点..."
|
||||
wgetsh ${mbtmp}/ssr_subscribe_file.txt $ssr_subscribe_link
|
||||
if [ $? -ne 0 ]; then
|
||||
logsh "【$service】" "下载订阅节点失败,1秒后重试!"
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
[ ! -f ${mbtmp}/ssr_subscribe_file.txt ] && logsh "【$service】" "下载订阅节点失败!" && exit 1
|
||||
decode_url_link `cat ${mbtmp}/ssr_subscribe_file.txt` 0 > ${mbtmp}/ssr_subscribe_file_temp1.txt
|
||||
# 检测ss ssr
|
||||
NODE_FORMAT1=`cat ${mbtmp}/ssr_subscribe_file_temp1.txt | grep -E "^ss://"`
|
||||
NODE_FORMAT2=`cat ${mbtmp}/ssr_subscribe_file_temp1.txt | grep -E "^ssr://"`
|
||||
if [ -n "$NODE_FORMAT1" ];then
|
||||
logsh "【$service】" "暂不支持ss节点订阅..." && exit 1
|
||||
elif [ -n "$NODE_FORMAT2" ];then
|
||||
maxnum=$(decode_url_link `cat ${mbtmp}/ssr_subscribe_file.txt` 0 | grep "MAX=" | awk -F"=" '{print $2}' | grep -Eo "[0-9]+")
|
||||
if [ -n "$maxnum" ]; then
|
||||
urllinks=$(decode_url_link `cat ${mbtmp}/ssr_subscribe_file.txt` 0 | sed '/MAX=/d' | shuf -n $maxnum | sed 's/ssr:\/\// /g')
|
||||
else
|
||||
urllinks=$(decode_url_link `cat ${mbtmp}/ssr_subscribe_file.txt` 0 | sed 's/ssr:\/\// /g')
|
||||
fi
|
||||
[ -z "$urllinks" ] && logsh "【$service】" "订阅节点解析失败!" && exit 1
|
||||
echo -n > $online_config
|
||||
for link in $urllinks
|
||||
do
|
||||
decode_link=$(decode_url_link $link 0)
|
||||
get_ss_config $decode_link
|
||||
logsh "【$service】" "添加${appname}订阅节点:$remarks[$server]" -s
|
||||
echo "ssr,$remarks,$server,$server_port,$password,$encrypt_method,$protocol,$obfs,$protoparam,$obfsparam" >> $online_config
|
||||
done
|
||||
logsh "【$service】" "ss订阅节点更新完成!"
|
||||
|
||||
fi
|
||||
rm -rf ${mbtmp}/ssr_subscribe_file.txt
|
||||
done
|
||||
}
|
||||
|
||||
if [ "$1" == "add" ]; then
|
||||
echo "URI地址添加节点..."
|
||||
action="uri"
|
||||
ssuri="$2"
|
||||
local_update
|
||||
else
|
||||
echo "在线更新ssr订阅节点..."
|
||||
online_update
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user