moxbox init

This commit is contained in:
monlor
2020-03-05 00:08:40 +08:00
commit 76dbe98978
856 changed files with 170708 additions and 0 deletions

View 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