diff --git a/serv00keep.sh b/serv00keep.sh index 08e3c2f..45df1a2 100644 --- a/serv00keep.sh +++ b/serv00keep.sh @@ -82,38 +82,6 @@ curl -sk "http://${snb}.${USERNAME}.serv00.net/up" > /dev/null 2>&1 sleep 5 } -read_ip(){ -ym=("$HOSTNAME" "cache$nb.serv00.com" "web$nb.serv00.com") -rm -rf ip.txt -for host in "${ym[@]}"; do -response=$(curl -sL --connect-timeout 5 --max-time 7 "https://ss.fkj.pp.ua/api/getip?host=$host") -if [[ "$response" =~ (unknown|not|error) ]]; then -dig @8.8.8.8 +time=5 +short $host | sort -u >> ip.txt -sleep 1 -else -while IFS='|' read -r ip status; do -if [[ $status == "Accessible" ]]; then -echo "$ip: 可用" >> ip.txt -else -echo "$ip: 被墙 (Argo与CDN回源节点、proxyip依旧有效)" >> ip.txt -fi -done <<< "$response" -fi -done -if [[ ! "$response" =~ (unknown|not|error) ]]; then -grep ':' $WORKDIR/ip.txt | sort -u -o $WORKDIR/ip.txt -fi -if [[ -z "$IP" ]]; then -IP=$(grep -m 1 "可用" ip.txt | awk -F ':' '{print $1}') -if [ -z "$IP" ]; then -IP=$(okip) -if [ -z "$IP" ]; then -IP=$(head -n 1 ip.txt | awk -F ':' '{print $1}') -fi -fi -fi -} - okip(){ IP_LIST=($(devil vhost list | awk '/^[0-9]+/ {print $1}')) API_URL="https://status.eooce.com/api" @@ -233,7 +201,86 @@ get_argodomain() { fi } -download_and_run_singbox() { + +if [ ! -f serv00keep.sh ]; then +curl -sSL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/beta1/serv00keep.sh -o serv00keep.sh && chmod +x serv00keep.sh +echo '#!/bin/bash +red() { echo -e "\e[1;91m$1\033[0m"; } +green() { echo -e "\e[1;32m$1\033[0m"; } +yellow() { echo -e "\e[1;33m$1\033[0m"; } +purple() { echo -e "\e[1;35m$1\033[0m"; } +USERNAME=$(whoami | tr '\''[:upper:]'\'' '\''[:lower:]'\'') +WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs" +snb=$(hostname | awk -F '\''.'\'' '\''{print $1}'\'') +' > webport.sh +declare -f resallport >> webport.sh +declare -f check_port >> webport.sh +echo 'resallport' >> webport.sh +chmod +x webport.sh +green "开始安装多功能主页,请稍等……" +devil www del ${snb}.${USERNAME}.serv00.net > /dev/null 2>&1 +devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1 +devil www add ${snb}.${USERNAME}.serv00.net nodejs /usr/local/bin/node18 > /dev/null 2>&1 +ln -fs /usr/local/bin/node18 ~/bin/node > /dev/null 2>&1 +ln -fs /usr/local/bin/npm18 ~/bin/npm > /dev/null 2>&1 +mkdir -p ~/.npm-global +npm config set prefix '~/.npm-global' +echo 'export PATH=~/.npm-global/bin:~/bin:$PATH' >> $HOME/.bash_profile && source $HOME/.bash_profile +rm -rf $HOME/.npmrc > /dev/null 2>&1 +cd "$keep_path" +npm install basic-auth express dotenv axios --silent > /dev/null 2>&1 +rm $HOME/domains/${snb}.${USERNAME}.serv00.net/public_nodejs/public/index.html > /dev/null 2>&1 +devil www restart ${snb}.${USERNAME}.serv00.net +green "安装完毕,多功能主页地址:http://${snb}.${USERNAME}.serv00.net" +fi + +if [[ "$resport" =~ ^[Yy]$ ]]; then +portlist=$(devil port list | grep -E '^[0-9]+[[:space:]]+[a-zA-Z]+' | sed 's/^[[:space:]]*//') +if [[ -z "$portlist" ]]; then +yellow "无端口" +else +while read -r line; do +port=$(echo "$line" | awk '{print $1}') +port_type=$(echo "$line" | awk '{print $2}') +yellow "删除端口 $port ($port_type)" +devil port del "$port_type" "$port" +done <<< "$portlist" +fi +check_port +fi +rm -rf $HOME/domains/${snb}.${USERNAME}.serv00.net/logs/* + + +cd $WORKDIR +ym=("$HOSTNAME" "cache$nb.serv00.com" "web$nb.serv00.com") +rm -rf ip.txt +for host in "${ym[@]}"; do +response=$(curl -sL --connect-timeout 5 --max-time 7 "https://ss.fkj.pp.ua/api/getip?host=$host") +if [[ "$response" =~ (unknown|not|error) ]]; then +dig @8.8.8.8 +time=5 +short $host | sort -u >> ip.txt +sleep 1 +else +while IFS='|' read -r ip status; do +if [[ $status == "Accessible" ]]; then +echo "$ip: 可用" >> ip.txt +else +echo "$ip: 被墙 (Argo与CDN回源节点、proxyip依旧有效)" >> ip.txt +fi +done <<< "$response" +fi +done +if [[ ! "$response" =~ (unknown|not|error) ]]; then +grep ':' $WORKDIR/ip.txt | sort -u -o $WORKDIR/ip.txt +fi +if [[ -z "$IP" ]]; then +IP=$(grep -m 1 "可用" ip.txt | awk -F ':' '{print $1}') +if [ -z "$IP" ]; then +IP=$(okip) +if [ -z "$IP" ]; then +IP=$(head -n 1 ip.txt | awk -F ':' '{print $1}') +fi +fi +fi if [[ -z "$UUID" ]]; then UUID=$(uuidgen -r) @@ -1164,57 +1211,5 @@ EOF cat list.txt sleep 2 rm -rf sb.log core tunnel.yml tunnel.json fake_useragent_0.2.0.json -} -if [ ! -f serv00keep.sh ]; then -curl -sSL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/beta1/serv00keep.sh -o serv00keep.sh && chmod +x serv00keep.sh -echo '#!/bin/bash -red() { echo -e "\e[1;91m$1\033[0m"; } -green() { echo -e "\e[1;32m$1\033[0m"; } -yellow() { echo -e "\e[1;33m$1\033[0m"; } -purple() { echo -e "\e[1;35m$1\033[0m"; } -USERNAME=$(whoami | tr '\''[:upper:]'\'' '\''[:lower:]'\'') -WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs" -snb=$(hostname | awk -F '\''.'\'' '\''{print $1}'\'') -' > webport.sh -declare -f resallport >> webport.sh -declare -f check_port >> webport.sh -echo 'resallport' >> webport.sh -chmod +x webport.sh -green "开始安装多功能主页,请稍等……" -devil www del ${snb}.${USERNAME}.serv00.net > /dev/null 2>&1 -devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1 -devil www add ${snb}.${USERNAME}.serv00.net nodejs /usr/local/bin/node18 > /dev/null 2>&1 -ln -fs /usr/local/bin/node18 ~/bin/node > /dev/null 2>&1 -ln -fs /usr/local/bin/npm18 ~/bin/npm > /dev/null 2>&1 -mkdir -p ~/.npm-global -npm config set prefix '~/.npm-global' -echo 'export PATH=~/.npm-global/bin:~/bin:$PATH' >> $HOME/.bash_profile && source $HOME/.bash_profile -rm -rf $HOME/.npmrc > /dev/null 2>&1 -cd "$keep_path" -npm install basic-auth express dotenv axios --silent > /dev/null 2>&1 -rm $HOME/domains/${snb}.${USERNAME}.serv00.net/public_nodejs/public/index.html > /dev/null 2>&1 -devil www restart ${snb}.${USERNAME}.serv00.net -green "安装完毕,多功能主页地址:http://${snb}.${USERNAME}.serv00.net" -fi - -if [[ "$resport" =~ ^[Yy]$ ]]; then -portlist=$(devil port list | grep -E '^[0-9]+[[:space:]]+[a-zA-Z]+' | sed 's/^[[:space:]]*//') -if [[ -z "$portlist" ]]; then -yellow "无端口" -else -while read -r line; do -port=$(echo "$line" | awk '{print $1}') -port_type=$(echo "$line" | awk '{print $2}') -yellow "删除端口 $port ($port_type)" -devil port del "$port_type" "$port" -done <<< "$portlist" -fi -check_port -fi -rm -rf $HOME/domains/${snb}.${USERNAME}.serv00.net/logs/* - -cd $WORKDIR -read_ip -download_and_run_singbox cd