Update serv00.sh
This commit is contained in:
@@ -10,17 +10,23 @@ yellow() { echo -e "\e[1;33m$1\033[0m"; }
|
|||||||
purple() { echo -e "\e[1;35m$1\033[0m"; }
|
purple() { echo -e "\e[1;35m$1\033[0m"; }
|
||||||
reading() { read -p "$(red "$1")" "$2"; }
|
reading() { read -p "$(red "$1")" "$2"; }
|
||||||
USERNAME=$(whoami | tr '[:upper:]' '[:lower:]')
|
USERNAME=$(whoami | tr '[:upper:]' '[:lower:]')
|
||||||
HOSTNAME=$(hostname)
|
snb=$(hostname | cut -d. -f1)
|
||||||
WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs"
|
|
||||||
snb=$(hostname | awk -F '.' '{print $1}')
|
|
||||||
nb=$(hostname | cut -d '.' -f 1 | tr -d 's')
|
nb=$(hostname | cut -d '.' -f 1 | tr -d 's')
|
||||||
devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1
|
HOSTNAME=$(hostname)
|
||||||
FILE_PATH="${HOME}/domains/${USERNAME}.serv00.net/public_html"
|
hona=$(hostname | cut -d. -f2)
|
||||||
|
if [ "$hona" = "serv00" ]; then
|
||||||
|
address="serv00.net"
|
||||||
keep_path="${HOME}/domains/${snb}.${USERNAME}.serv00.net/public_nodejs"
|
keep_path="${HOME}/domains/${snb}.${USERNAME}.serv00.net/public_nodejs"
|
||||||
[ -d "$FILE_PATH" ] || mkdir -p "$FILE_PATH"
|
|
||||||
[ -d "$keep_path" ] || mkdir -p "$keep_path"
|
[ -d "$keep_path" ] || mkdir -p "$keep_path"
|
||||||
|
else
|
||||||
|
address="useruno.com"
|
||||||
|
fi
|
||||||
|
WORKDIR="${HOME}/domains/${USERNAME}.${address}/logs"
|
||||||
|
devil www add ${USERNAME}.${address} php > /dev/null 2>&1
|
||||||
|
FILE_PATH="${HOME}/domains/${USERNAME}.${address}/public_html"
|
||||||
|
[ -d "$FILE_PATH" ] || mkdir -p "$FILE_PATH"
|
||||||
[ -d "$WORKDIR" ] || (mkdir -p "$WORKDIR" && chmod 777 "$WORKDIR")
|
[ -d "$WORKDIR" ] || (mkdir -p "$WORKDIR" && chmod 777 "$WORKDIR")
|
||||||
curl -sk "http://${snb}.${USERNAME}.serv00.net/up" > /dev/null 2>&1
|
curl -sk "http://${snb}.${USERNAME}.${hona}.net/up" > /dev/null 2>&1
|
||||||
devil binexec on >/dev/null 2>&1
|
devil binexec on >/dev/null 2>&1
|
||||||
|
|
||||||
read_ip() {
|
read_ip() {
|
||||||
@@ -47,12 +53,12 @@ read_uuid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
read_reym() {
|
read_reym() {
|
||||||
yellow "方式一:(推荐)使用Serv00自带域名,不支持proxyip功能:输入回车"
|
yellow "方式一:(推荐)使用${hona}自带域名,不支持proxyip功能:输入回车"
|
||||||
yellow "方式二:使用CF域名(www.speedtest.net),支持proxyip+非标端口反代ip功能:输入s"
|
yellow "方式二:使用CF域名(www.speedtest.net),支持proxyip+非标端口反代ip功能:输入s"
|
||||||
yellow "方式三:支持其他域名,注意要符合reality域名规则:输入域名"
|
yellow "方式三:支持其他域名,注意要符合reality域名规则:输入域名"
|
||||||
reading "请输入reality域名 【请选择 回车 或者 s 或者 输入域名】: " reym
|
reading "请输入reality域名 【请选择 回车 或者 s 或者 输入域名】: " reym
|
||||||
if [[ -z "$reym" ]]; then
|
if [[ -z "$reym" ]]; then
|
||||||
reym=$USERNAME.serv00.net
|
reym=$USERNAME.${address}
|
||||||
elif [[ "$reym" == "s" || "$reym" == "S" ]]; then
|
elif [[ "$reym" == "s" || "$reym" == "S" ]]; then
|
||||||
reym=www.speedtest.net
|
reym=www.speedtest.net
|
||||||
fi
|
fi
|
||||||
@@ -76,25 +82,24 @@ if [[ -e $WORKDIR/config.json ]]; then
|
|||||||
hyp=$(jq -r '.inbounds[0].listen_port' $WORKDIR/config.json)
|
hyp=$(jq -r '.inbounds[0].listen_port' $WORKDIR/config.json)
|
||||||
vlp=$(jq -r '.inbounds[3].listen_port' $WORKDIR/config.json)
|
vlp=$(jq -r '.inbounds[3].listen_port' $WORKDIR/config.json)
|
||||||
vmp=$(jq -r '.inbounds[4].listen_port' $WORKDIR/config.json)
|
vmp=$(jq -r '.inbounds[4].listen_port' $WORKDIR/config.json)
|
||||||
purple "检测到Serv00-sb-yg脚本已安装,执行端口替换,请稍等……"
|
purple "检测到${hona}-sb-yg脚本已安装,执行端口替换,请稍等……"
|
||||||
sed -i '' "12s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
sed -i '' "12s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
||||||
sed -i '' "33s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
sed -i '' "33s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
||||||
sed -i '' "54s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
sed -i '' "54s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
||||||
sed -i '' "75s/$vlp/$vless_port/g" $WORKDIR/config.json
|
sed -i '' "75s/$vlp/$vless_port/g" $WORKDIR/config.json
|
||||||
sed -i '' "102s/$vmp/$vmess_port/g" $WORKDIR/config.json
|
sed -i '' "102s/$vmp/$vmess_port/g" $WORKDIR/config.json
|
||||||
|
if [ "$hona" = "serv00" ]; then
|
||||||
sed -i '' -e "17s|'$vlp'|'$vless_port'|" serv00keep.sh
|
sed -i '' -e "17s|'$vlp'|'$vless_port'|" serv00keep.sh
|
||||||
sed -i '' -e "18s|'$vmp'|'$vmess_port'|" serv00keep.sh
|
sed -i '' -e "18s|'$vmp'|'$vmess_port'|" serv00keep.sh
|
||||||
sed -i '' -e "19s|'$hyp'|'$hy2_port'|" serv00keep.sh
|
sed -i '' -e "19s|'$hyp'|'$hy2_port'|" serv00keep.sh
|
||||||
bash -c 'ps aux | grep $(whoami) | grep -v "sshd\|bash\|grep" | awk "{print \$2}" | xargs -r kill -9 >/dev/null 2>&1' >/dev/null 2>&1
|
fi
|
||||||
sleep 1
|
resservsb
|
||||||
curl -sk "http://${snb}.${USERNAME}.serv00.net/up" > /dev/null 2>&1
|
|
||||||
sleep 5
|
|
||||||
green "端口替换完成!"
|
green "端口替换完成!"
|
||||||
ps aux | grep '[r]un -c con' > /dev/null && green "主进程启动成功,单节点用户修改下客户端三协议端口,订阅链接用户更新下订阅即可" || yellow "Sing-box主进程启动失败,再次重置端口或者多刷几次保活网页,可能会自动恢复"
|
ps aux | grep '[r]un -c con' > /dev/null && green "主进程启动成功,单节点用户修改下客户端三协议端口" || yellow "Sing-box主进程启动失败"
|
||||||
if [ -f "$WORKDIR/boot.log" ]; then
|
if [ -f "$WORKDIR/boot.log" ]; then
|
||||||
ps aux | grep '[t]unnel --u' > /dev/null && green "Argo临时隧道启动成功,单节点用户在客户端host/sni更换临时域名,订阅链接用户更新下订阅即可" || yellow "Argo临时隧道启动失败,再次重置端口或者多刷几次保活网页,可能会自动恢复"
|
ps aux | grep '[t]unnel --u' > /dev/null && green "Argo临时隧道已启动,临时域名可能已变更" || yellow "Argo临时隧道启动失败"
|
||||||
else
|
else
|
||||||
ps aux | grep '[t]unnel --n' > /dev/null && green "Argo固定隧道启动成功" || yellow "Argo固定隧道启动失败,请先在CF更改隧道端口:$vmess_port,多刷几次保活网页可能会自动恢复"
|
ps aux | grep '[t]unnel --n' > /dev/null && green "Argo固定隧道已启动" || yellow "Argo固定隧道启动失败,请先在CF更改隧道端口:$vmess_port,再重启下Argo隧道"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -199,15 +204,19 @@ sleep 2
|
|||||||
fastrun
|
fastrun
|
||||||
green "创建快捷方式:sb"
|
green "创建快捷方式:sb"
|
||||||
echo
|
echo
|
||||||
|
if [ "$hona" = "serv00" ]; then
|
||||||
servkeep
|
servkeep
|
||||||
|
fi
|
||||||
cd $WORKDIR
|
cd $WORKDIR
|
||||||
echo
|
echo
|
||||||
get_links
|
get_links
|
||||||
cd
|
cd
|
||||||
purple "************************************************************"
|
purple "************************************************************"
|
||||||
purple "Serv00-sb-yg脚本安装结束,退出SHH"
|
purple "${hona}-sb-yg脚本安装结束"
|
||||||
purple "再次进入脚本时,请输入快捷方式:sb"
|
purple "退出SSH"
|
||||||
|
purple "请再次连接SSH,查看主菜单,请输入快捷方式:sb"
|
||||||
purple "************************************************************"
|
purple "************************************************************"
|
||||||
|
sleep 2
|
||||||
kill -9 $(ps -o ppid= -p $$) >/dev/null 2>&1
|
kill -9 $(ps -o ppid= -p $$) >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,11 +226,10 @@ uninstall_singbox() {
|
|||||||
[Yy])
|
[Yy])
|
||||||
bash -c 'ps aux | grep $(whoami) | grep -v "sshd\|bash\|grep" | awk "{print \$2}" | xargs -r kill -9 >/dev/null 2>&1' >/dev/null 2>&1
|
bash -c 'ps aux | grep $(whoami) | grep -v "sshd\|bash\|grep" | awk "{print \$2}" | xargs -r kill -9 >/dev/null 2>&1' >/dev/null 2>&1
|
||||||
rm -rf domains bin serv00keep.sh webport.sh
|
rm -rf domains bin serv00keep.sh webport.sh
|
||||||
#crontab -l | grep -v "serv00keep" >rmcron
|
sed -i '' '/export PATH="\$HOME\/bin:\$PATH"/d' ~/.bashrc
|
||||||
#crontab rmcron >/dev/null 2>&1
|
source ~/.bashrc
|
||||||
#rm rmcron
|
|
||||||
purple "************************************************************"
|
purple "************************************************************"
|
||||||
purple "Serv00-sb-yg卸载完成!"
|
purple "${hona}-sb-yg卸载完成!"
|
||||||
purple "欢迎继续使用脚本:bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh)"
|
purple "欢迎继续使用脚本:bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh)"
|
||||||
purple "************************************************************"
|
purple "************************************************************"
|
||||||
;;
|
;;
|
||||||
@@ -235,13 +243,12 @@ reading "\n清理所有进程并清空所有安装内容,将退出ssh连接,
|
|||||||
case "$choice" in
|
case "$choice" in
|
||||||
[Yy])
|
[Yy])
|
||||||
bash -c 'ps aux | grep $(whoami) | grep -v "sshd\|bash\|grep" | awk "{print \$2}" | xargs -r kill -9 >/dev/null 2>&1' >/dev/null 2>&1
|
bash -c 'ps aux | grep $(whoami) | grep -v "sshd\|bash\|grep" | awk "{print \$2}" | xargs -r kill -9 >/dev/null 2>&1' >/dev/null 2>&1
|
||||||
devil www del ${snb}.${USERNAME}.serv00.net > /dev/null 2>&1
|
devil www del ${snb}.${USERNAME}.${address} > /dev/null 2>&1
|
||||||
devil www del ${USERNAME}.serv00.net > /dev/null 2>&1
|
devil www del ${USERNAME}.${address} > /dev/null 2>&1
|
||||||
#crontab -l | grep -v "serv00keep" >rmcron
|
sed -i '' '/export PATH="\$HOME\/bin:\$PATH"/d' ~/.bashrc
|
||||||
#crontab rmcron >/dev/null 2>&1
|
source ~/.bashrc
|
||||||
#rm rmcron
|
|
||||||
purple "************************************************************"
|
purple "************************************************************"
|
||||||
purple "Serv00-sb-yg清理重置完成!"
|
purple "${hona}-sb-yg清理重置完成!"
|
||||||
purple "欢迎继续使用脚本:bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh)"
|
purple "欢迎继续使用脚本:bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh)"
|
||||||
purple "************************************************************"
|
purple "************************************************************"
|
||||||
find ~ -type f -exec chmod 644 {} \; 2>/dev/null
|
find ~ -type f -exec chmod 644 {} \; 2>/dev/null
|
||||||
@@ -267,9 +274,12 @@ argo_configure() {
|
|||||||
fi
|
fi
|
||||||
if [[ "$argo_choice" == "g" || "$argo_choice" == "G" ]]; then
|
if [[ "$argo_choice" == "g" || "$argo_choice" == "G" ]]; then
|
||||||
reading "请输入argo固定隧道域名: " ARGO_DOMAIN
|
reading "请输入argo固定隧道域名: " ARGO_DOMAIN
|
||||||
|
echo "$ARGO_DOMAIN" > ARGO_DOMAIN.log
|
||||||
green "你的argo固定隧道域名为: $ARGO_DOMAIN"
|
green "你的argo固定隧道域名为: $ARGO_DOMAIN"
|
||||||
reading "请输入argo固定隧道密钥(当你粘贴Token时,必须以ey开头): " ARGO_AUTH
|
reading "请输入argo固定隧道密钥(当你粘贴Token时,必须以ey开头): " ARGO_AUTH
|
||||||
|
echo "$ARGO_AUTH" > ARGO_AUTH.log
|
||||||
green "你的argo固定隧道密钥为: $ARGO_AUTH"
|
green "你的argo固定隧道密钥为: $ARGO_AUTH"
|
||||||
|
rm -rf boot.log
|
||||||
else
|
else
|
||||||
green "使用Argo临时隧道"
|
green "使用Argo临时隧道"
|
||||||
fi
|
fi
|
||||||
@@ -335,7 +345,7 @@ public_key=$(echo "${output}" | awk '/PublicKey:/ {print $2}')
|
|||||||
echo "${private_key}" > private_key.txt
|
echo "${private_key}" > private_key.txt
|
||||||
echo "${public_key}" > public_key.txt
|
echo "${public_key}" > public_key.txt
|
||||||
openssl ecparam -genkey -name prime256v1 -out "private.key"
|
openssl ecparam -genkey -name prime256v1 -out "private.key"
|
||||||
openssl req -new -x509 -days 3650 -key "private.key" -out "cert.pem" -subj "/CN=$USERNAME.serv00.net"
|
openssl req -new -x509 -days 3650 -key "private.key" -out "cert.pem" -subj "/CN=$USERNAME.${address}"
|
||||||
cat > config.json << EOF
|
cat > config.json << EOF
|
||||||
{
|
{
|
||||||
"log": {
|
"log": {
|
||||||
@@ -347,7 +357,7 @@ openssl req -new -x509 -days 3650 -key "private.key" -out "cert.pem" -subj "/CN=
|
|||||||
{
|
{
|
||||||
"tag": "hysteria-in1",
|
"tag": "hysteria-in1",
|
||||||
"type": "hysteria2",
|
"type": "hysteria2",
|
||||||
"listen": "$(dig @8.8.8.8 +time=5 +short "web$nb.serv00.com" | sort -u)",
|
"listen": "$(dig @8.8.8.8 +time=5 +short "web$nb.${hona}.com" | sort -u)",
|
||||||
"listen_port": $hy2_port,
|
"listen_port": $hy2_port,
|
||||||
"users": [
|
"users": [
|
||||||
{
|
{
|
||||||
@@ -389,7 +399,7 @@ openssl req -new -x509 -days 3650 -key "private.key" -out "cert.pem" -subj "/CN=
|
|||||||
{
|
{
|
||||||
"tag": "hysteria-in3",
|
"tag": "hysteria-in3",
|
||||||
"type": "hysteria2",
|
"type": "hysteria2",
|
||||||
"listen": "$(dig @8.8.8.8 +time=5 +short "cache$nb.serv00.com" | sort -u)",
|
"listen": "$(dig @8.8.8.8 +time=5 +short "cache$nb.${hona}.com" | sort -u)",
|
||||||
"listen_port": $hy2_port,
|
"listen_port": $hy2_port,
|
||||||
"users": [
|
"users": [
|
||||||
{
|
{
|
||||||
@@ -539,7 +549,6 @@ fi
|
|||||||
if [ -e "$(basename "${FILE_MAP[bot]}")" ]; then
|
if [ -e "$(basename "${FILE_MAP[bot]}")" ]; then
|
||||||
echo "$(basename "${FILE_MAP[bot]}")" > ag.txt
|
echo "$(basename "${FILE_MAP[bot]}")" > ag.txt
|
||||||
agg=$(cat ag.txt)
|
agg=$(cat ag.txt)
|
||||||
rm -rf boot.log
|
|
||||||
if [[ $ARGO_AUTH =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
|
if [[ $ARGO_AUTH =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
|
||||||
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 run --token ${ARGO_AUTH}"
|
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 run --token ${ARGO_AUTH}"
|
||||||
args="tunnel --no-autoupdate run --token ${ARGO_AUTH}"
|
args="tunnel --no-autoupdate run --token ${ARGO_AUTH}"
|
||||||
@@ -570,9 +579,9 @@ fi
|
|||||||
sleep 2
|
sleep 2
|
||||||
if ! pgrep -x "$(cat sb.txt)" > /dev/null; then
|
if ! pgrep -x "$(cat sb.txt)" > /dev/null; then
|
||||||
red "主进程未启动,根据以下情况一一排查"
|
red "主进程未启动,根据以下情况一一排查"
|
||||||
yellow "1、选择7重置端口,自动生成随机可用端口(重要)"
|
yellow "1、选择8重置端口,自动生成随机可用端口(重要)"
|
||||||
yellow "2、选择8重置"
|
yellow "2、选择9重置"
|
||||||
yellow "3、当前Serv00服务器炸了?等会再试"
|
yellow "3、当前${hona}服务器炸了?等会再试"
|
||||||
red "4、以上都试了,哥直接躺平,交给进程保活,过会再来看"
|
red "4、以上都试了,哥直接躺平,交给进程保活,过会再来看"
|
||||||
sleep 6
|
sleep 6
|
||||||
fi
|
fi
|
||||||
@@ -580,7 +589,6 @@ fi
|
|||||||
|
|
||||||
get_argodomain() {
|
get_argodomain() {
|
||||||
if [[ -n $ARGO_AUTH ]]; then
|
if [[ -n $ARGO_AUTH ]]; then
|
||||||
echo "$ARGO_DOMAIN" > gdym.log
|
|
||||||
echo "$ARGO_DOMAIN"
|
echo "$ARGO_DOMAIN"
|
||||||
else
|
else
|
||||||
local retry=0
|
local retry=0
|
||||||
@@ -604,15 +612,15 @@ get_argodomain() {
|
|||||||
get_links(){
|
get_links(){
|
||||||
argodomain=$(get_argodomain)
|
argodomain=$(get_argodomain)
|
||||||
echo -e "\e[1;32mArgo域名:\e[1;35m${argodomain}\e[0m\n"
|
echo -e "\e[1;32mArgo域名:\e[1;35m${argodomain}\e[0m\n"
|
||||||
vl_link="vless://$UUID@$IP:$vless_port?encryption=none&flow=xtls-rprx-vision&security=reality&sni=$reym&fp=chrome&pbk=$public_key&type=tcp&headerType=none#$snb-reality"
|
vl_link="vless://$UUID@$IP:$vless_port?encryption=none&flow=xtls-rprx-vision&security=reality&sni=$reym&fp=chrome&pbk=$public_key&type=tcp&headerType=none#$snb-reality-$USERNAME"
|
||||||
echo "$vl_link" > jh.txt
|
echo "$vl_link" > jh.txt
|
||||||
vmws_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws\", \"add\": \"$IP\", \"port\": \"$vmess_port\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\", \"sni\": \"\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
vmws_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-$USERNAME\", \"add\": \"$IP\", \"port\": \"$vmess_port\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\", \"sni\": \"\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
echo "$vmws_link" >> jh.txt
|
echo "$vmws_link" >> jh.txt
|
||||||
vmatls_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo\", \"add\": \"icook.hk\", \"port\": \"8443\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
vmatls_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo-$USERNAME\", \"add\": \"icook.hk\", \"port\": \"8443\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
echo "$vmatls_link" >> jh.txt
|
echo "$vmatls_link" >> jh.txt
|
||||||
vma_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo\", \"add\": \"icook.hk\", \"port\": \"8880\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
vma_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME\", \"add\": \"icook.hk\", \"port\": \"8880\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
echo "$vma_link" >> jh.txt
|
echo "$vma_link" >> jh.txt
|
||||||
hy2_link="hysteria2://$UUID@$IP:$hy2_port?sni=www.bing.com&alpn=h3&insecure=1#$snb-hy2"
|
hy2_link="hysteria2://$UUID@$IP:$hy2_port?security=tls&sni=www.bing.com&alpn=h3&insecure=1#$snb-hy2-$USERNAME"
|
||||||
echo "$hy2_link" >> jh.txt
|
echo "$hy2_link" >> jh.txt
|
||||||
baseurl=$(base64 -w 0 < jh.txt)
|
baseurl=$(base64 -w 0 < jh.txt)
|
||||||
|
|
||||||
@@ -716,16 +724,16 @@ cat > sing_box.json <<EOF
|
|||||||
"default": "auto",
|
"default": "auto",
|
||||||
"outbounds": [
|
"outbounds": [
|
||||||
"auto",
|
"auto",
|
||||||
"vless-$snb",
|
"vless-$snb-$USERNAME",
|
||||||
"vmess-$snb",
|
"vmess-$snb-$USERNAME",
|
||||||
"hy2-$snb",
|
"hy2-$snb-$USERNAME",
|
||||||
"vmess-tls-argo-$snb",
|
"vmess-tls-argo-$snb-$USERNAME",
|
||||||
"vmess-argo-$snb"
|
"vmess-argo-$snb-$USERNAME"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "vless",
|
"type": "vless",
|
||||||
"tag": "vless-$snb",
|
"tag": "vless-$snb-$USERNAME",
|
||||||
"server": "$IP",
|
"server": "$IP",
|
||||||
"server_port": $vless_port,
|
"server_port": $vless_port,
|
||||||
"uuid": "$UUID",
|
"uuid": "$UUID",
|
||||||
@@ -748,7 +756,7 @@ cat > sing_box.json <<EOF
|
|||||||
{
|
{
|
||||||
"server": "$IP",
|
"server": "$IP",
|
||||||
"server_port": $vmess_port,
|
"server_port": $vmess_port,
|
||||||
"tag": "vmess-$snb",
|
"tag": "vmess-$snb-$USERNAME",
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"server_name": "www.bing.com",
|
"server_name": "www.bing.com",
|
||||||
@@ -775,7 +783,7 @@ cat > sing_box.json <<EOF
|
|||||||
|
|
||||||
{
|
{
|
||||||
"type": "hysteria2",
|
"type": "hysteria2",
|
||||||
"tag": "hy2-$snb",
|
"tag": "hy2-$snb-$USERNAME",
|
||||||
"server": "$IP",
|
"server": "$IP",
|
||||||
"server_port": $hy2_port,
|
"server_port": $hy2_port,
|
||||||
"password": "$UUID",
|
"password": "$UUID",
|
||||||
@@ -791,7 +799,7 @@ cat > sing_box.json <<EOF
|
|||||||
{
|
{
|
||||||
"server": "icook.hk",
|
"server": "icook.hk",
|
||||||
"server_port": 8443,
|
"server_port": 8443,
|
||||||
"tag": "vmess-tls-argo-$snb",
|
"tag": "vmess-tls-argo-$snb-$USERNAME",
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"server_name": "$argodomain",
|
"server_name": "$argodomain",
|
||||||
@@ -818,7 +826,7 @@ cat > sing_box.json <<EOF
|
|||||||
{
|
{
|
||||||
"server": "icook.hk",
|
"server": "icook.hk",
|
||||||
"server_port": 8880,
|
"server_port": 8880,
|
||||||
"tag": "vmess-argo-$snb",
|
"tag": "vmess-argo-$snb-$USERNAME",
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"server_name": "$argodomain",
|
"server_name": "$argodomain",
|
||||||
@@ -850,11 +858,11 @@ cat > sing_box.json <<EOF
|
|||||||
"tag": "auto",
|
"tag": "auto",
|
||||||
"type": "urltest",
|
"type": "urltest",
|
||||||
"outbounds": [
|
"outbounds": [
|
||||||
"vless-$snb",
|
"vless-$snb-$USERNAME",
|
||||||
"vmess-$snb",
|
"vmess-$snb-$USERNAME",
|
||||||
"hy2-$snb",
|
"hy2-$snb-$USERNAME",
|
||||||
"vmess-tls-argo-$snb",
|
"vmess-tls-argo-$snb-$USERNAME",
|
||||||
"vmess-argo-$snb"
|
"vmess-argo-$snb-$USERNAME"
|
||||||
],
|
],
|
||||||
"url": "https://www.gstatic.com/generate_204",
|
"url": "https://www.gstatic.com/generate_204",
|
||||||
"interval": "1m",
|
"interval": "1m",
|
||||||
@@ -970,7 +978,7 @@ dns:
|
|||||||
- 240.0.0.0/4
|
- 240.0.0.0/4
|
||||||
|
|
||||||
proxies:
|
proxies:
|
||||||
- name: vless-reality-vision-$snb
|
- name: vless-reality-vision-$snb-$USERNAME
|
||||||
type: vless
|
type: vless
|
||||||
server: $IP
|
server: $IP
|
||||||
port: $vless_port
|
port: $vless_port
|
||||||
@@ -984,7 +992,7 @@ proxies:
|
|||||||
public-key: $public_key
|
public-key: $public_key
|
||||||
client-fingerprint: chrome
|
client-fingerprint: chrome
|
||||||
|
|
||||||
- name: vmess-ws-$snb
|
- name: vmess-ws-$snb-$USERNAME
|
||||||
type: vmess
|
type: vmess
|
||||||
server: $IP
|
server: $IP
|
||||||
port: $vmess_port
|
port: $vmess_port
|
||||||
@@ -1000,7 +1008,7 @@ proxies:
|
|||||||
headers:
|
headers:
|
||||||
Host: www.bing.com
|
Host: www.bing.com
|
||||||
|
|
||||||
- name: hysteria2-$snb
|
- name: hysteria2-$snb-$USERNAME
|
||||||
type: hysteria2
|
type: hysteria2
|
||||||
server: $IP
|
server: $IP
|
||||||
port: $hy2_port
|
port: $hy2_port
|
||||||
@@ -1011,7 +1019,7 @@ proxies:
|
|||||||
skip-cert-verify: true
|
skip-cert-verify: true
|
||||||
fast-open: true
|
fast-open: true
|
||||||
|
|
||||||
- name: vmess-tls-argo-$snb
|
- name: vmess-tls-argo-$snb-$USERNAME
|
||||||
type: vmess
|
type: vmess
|
||||||
server: icook.hk
|
server: icook.hk
|
||||||
port: 8443
|
port: 8443
|
||||||
@@ -1027,7 +1035,7 @@ proxies:
|
|||||||
headers:
|
headers:
|
||||||
Host: $argodomain
|
Host: $argodomain
|
||||||
|
|
||||||
- name: vmess-argo-$snb
|
- name: vmess-argo-$snb-$USERNAME
|
||||||
type: vmess
|
type: vmess
|
||||||
server: icook.hk
|
server: icook.hk
|
||||||
port: 8880
|
port: 8880
|
||||||
@@ -1050,11 +1058,11 @@ proxy-groups:
|
|||||||
interval: 300
|
interval: 300
|
||||||
strategy: round-robin
|
strategy: round-robin
|
||||||
proxies:
|
proxies:
|
||||||
- vless-reality-vision-$snb
|
- vless-reality-vision-$snb-$USERNAME
|
||||||
- vmess-ws-$snb
|
- vmess-ws-$snb-$USERNAME
|
||||||
- hysteria2-$snb
|
- hysteria2-$snb-$USERNAME
|
||||||
- vmess-tls-argo-$snb
|
- vmess-tls-argo-$snb-$USERNAME
|
||||||
- vmess-argo-$snb
|
- vmess-argo-$snb-$USERNAME
|
||||||
|
|
||||||
- name: Auto
|
- name: Auto
|
||||||
type: url-test
|
type: url-test
|
||||||
@@ -1062,11 +1070,11 @@ proxy-groups:
|
|||||||
interval: 300
|
interval: 300
|
||||||
tolerance: 50
|
tolerance: 50
|
||||||
proxies:
|
proxies:
|
||||||
- vless-reality-vision-$snb
|
- vless-reality-vision-$snb-$USERNAME
|
||||||
- vmess-ws-$snb
|
- vmess-ws-$snb-$USERNAME
|
||||||
- hysteria2-$snb
|
- hysteria2-$snb-$USERNAME
|
||||||
- vmess-tls-argo-$snb
|
- vmess-tls-argo-$snb-$USERNAME
|
||||||
- vmess-argo-$snb
|
- vmess-argo-$snb-$USERNAME
|
||||||
|
|
||||||
- name: Select
|
- name: Select
|
||||||
type: select
|
type: select
|
||||||
@@ -1074,11 +1082,11 @@ proxy-groups:
|
|||||||
- Balance
|
- Balance
|
||||||
- Auto
|
- Auto
|
||||||
- DIRECT
|
- DIRECT
|
||||||
- vless-reality-vision-$snb
|
- vless-reality-vision-$snb-$USERNAME
|
||||||
- vmess-ws-$snb
|
- vmess-ws-$snb-$USERNAME
|
||||||
- hysteria2-$snb
|
- hysteria2-$snb-$USERNAME
|
||||||
- vmess-tls-argo-$snb
|
- vmess-tls-argo-$snb-$USERNAME
|
||||||
- vmess-argo-$snb
|
- vmess-argo-$snb-$USERNAME
|
||||||
rules:
|
rules:
|
||||||
- GEOIP,LAN,DIRECT
|
- GEOIP,LAN,DIRECT
|
||||||
- GEOIP,CN,DIRECT
|
- GEOIP,CN,DIRECT
|
||||||
@@ -1091,17 +1099,17 @@ v2sub=$(cat jh.txt)
|
|||||||
echo "$v2sub" > ${FILE_PATH}/${UUID}_v2sub.txt
|
echo "$v2sub" > ${FILE_PATH}/${UUID}_v2sub.txt
|
||||||
cat clash_meta.yaml > ${FILE_PATH}/${UUID}_clashmeta.txt
|
cat clash_meta.yaml > ${FILE_PATH}/${UUID}_clashmeta.txt
|
||||||
cat sing_box.json > ${FILE_PATH}/${UUID}_singbox.txt
|
cat sing_box.json > ${FILE_PATH}/${UUID}_singbox.txt
|
||||||
V2rayN_LINK="https://${USERNAME}.serv00.net/${UUID}_v2sub.txt"
|
V2rayN_LINK="https://${USERNAME}.${address}/${UUID}_v2sub.txt"
|
||||||
Clashmeta_LINK="https://${USERNAME}.serv00.net/${UUID}_clashmeta.txt"
|
Clashmeta_LINK="https://${USERNAME}.${address}/${UUID}_clashmeta.txt"
|
||||||
Singbox_LINK="https://${USERNAME}.serv00.net/${UUID}_singbox.txt"
|
Singbox_LINK="https://${USERNAME}.${address}/${UUID}_singbox.txt"
|
||||||
cat > list.txt <<EOF
|
cat > list.txt <<EOF
|
||||||
=================================================================================================
|
=================================================================================================
|
||||||
|
|
||||||
当前客户端正在使用的IP:$IP
|
当前客户端正在使用的IP:$IP
|
||||||
如默认节点IP被墙,可在客户端地址更换以下其他IP
|
如默认节点IP被墙,可在客户端地址更换以下其他IP
|
||||||
$(dig @8.8.8.8 +time=5 +short "web$nb.serv00.com" | sort -u)
|
$(dig @8.8.8.8 +time=5 +short "web$nb.${hona}.com" | sort -u)
|
||||||
$(dig @8.8.8.8 +time=5 +short "$HOSTNAME" | sort -u)
|
$(dig @8.8.8.8 +time=5 +short "$HOSTNAME" | sort -u)
|
||||||
$(dig @8.8.8.8 +time=5 +short "cache$nb.serv00.com" | sort -u)
|
$(dig @8.8.8.8 +time=5 +short "cache$nb.${hona}.com" | sort -u)
|
||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
一、Vless-reality分享链接如下:
|
一、Vless-reality分享链接如下:
|
||||||
@@ -1120,8 +1128,8 @@ CF节点落地到CF网站的地区为:$IP所在地区
|
|||||||
CF节点的TLS必须开启
|
CF节点的TLS必须开启
|
||||||
CF节点落地到非CF网站的地区为:$IP所在地区
|
CF节点落地到非CF网站的地区为:$IP所在地区
|
||||||
|
|
||||||
注:如果Serv00的IP被墙,proxyip依旧有效,但用于客户端地址与端口的非标端口反代IP将不可用
|
注:如果${hona}的IP被墙,proxyip依旧有效,但用于客户端地址与端口的非标端口反代IP将不可用
|
||||||
注:可能有大佬会扫Serv00的反代IP作为其共享IP库或者出售,请慎重将reality域名设置为CF域名
|
注:可能有大佬会扫${hona}的反代IP作为其共享IP库或者出售,请慎重将reality域名设置为CF域名
|
||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -1222,26 +1230,18 @@ yellow() { echo -e "\e[1;33m$1\033[0m"; }
|
|||||||
purple() { echo -e "\e[1;35m$1\033[0m"; }
|
purple() { echo -e "\e[1;35m$1\033[0m"; }
|
||||||
USERNAME=$(whoami | tr '\''[:upper:]'\'' '\''[:lower:]'\'')
|
USERNAME=$(whoami | tr '\''[:upper:]'\'' '\''[:lower:]'\'')
|
||||||
WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs"
|
WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs"
|
||||||
snb=$(hostname | awk -F '\''.'\'' '\''{print $1}'\'')
|
snb=$(hostname | cut -d. -f1)
|
||||||
|
hona=$(hostname | cut -d. -f2)
|
||||||
' > webport.sh
|
' > webport.sh
|
||||||
declare -f resallport >> webport.sh
|
declare -f resallport >> webport.sh
|
||||||
declare -f check_port >> webport.sh
|
declare -f check_port >> webport.sh
|
||||||
|
declare -f resservsb >> webport.sh
|
||||||
echo 'resallport' >> webport.sh
|
echo 'resallport' >> webport.sh
|
||||||
chmod +x webport.sh
|
chmod +x webport.sh
|
||||||
#if ! crontab -l 2>/dev/null | grep -q 'serv00keep'; then
|
|
||||||
#if [ -f "$WORKDIR/boot.log" ] || grep -q "trycloudflare.com" "$WORKDIR/boot.log" 2>/dev/null; then
|
|
||||||
#check_process="! ps aux | grep '[c]onfig' > /dev/null || ! ps aux | grep [l]ocalhost > /dev/null"
|
|
||||||
#else
|
|
||||||
#check_process="! ps aux | grep '[c]onfig' > /dev/null || ! ps aux | grep [t]oken > /dev/null"
|
|
||||||
#fi
|
|
||||||
#(crontab -l 2>/dev/null; echo "*/10 * * * * if $check_process; then /bin/bash serv00keep.sh; fi") | crontab -
|
|
||||||
#fi
|
|
||||||
#green "安装完毕,默认每10分钟执行一次,运行 crontab -e 可自行修改保活执行间隔" && sleep 2
|
|
||||||
#echo
|
|
||||||
green "开始安装多功能主页,请稍等……"
|
green "开始安装多功能主页,请稍等……"
|
||||||
devil www del ${snb}.${USERNAME}.serv00.net > /dev/null 2>&1
|
devil www del ${snb}.${USERNAME}.${hona}.net > /dev/null 2>&1
|
||||||
devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1
|
devil www add ${USERNAME}.${hona}.net php > /dev/null 2>&1
|
||||||
devil www add ${snb}.${USERNAME}.serv00.net nodejs /usr/local/bin/node18 > /dev/null 2>&1
|
devil www add ${snb}.${USERNAME}.${hona}.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/node18 ~/bin/node > /dev/null 2>&1
|
||||||
ln -fs /usr/local/bin/npm18 ~/bin/npm > /dev/null 2>&1
|
ln -fs /usr/local/bin/npm18 ~/bin/npm > /dev/null 2>&1
|
||||||
mkdir -p ~/.npm-global
|
mkdir -p ~/.npm-global
|
||||||
@@ -1250,10 +1250,10 @@ echo 'export PATH=~/.npm-global/bin:~/bin:$PATH' >> $HOME/.bash_profile && sourc
|
|||||||
rm -rf $HOME/.npmrc > /dev/null 2>&1
|
rm -rf $HOME/.npmrc > /dev/null 2>&1
|
||||||
cd "$keep_path"
|
cd "$keep_path"
|
||||||
npm install basic-auth express dotenv axios --silent > /dev/null 2>&1
|
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
|
rm $HOME/domains/${snb}.${USERNAME}.${hona}.net/public_nodejs/public/index.html > /dev/null 2>&1
|
||||||
devil www restart ${snb}.${USERNAME}.serv00.net
|
devil www restart ${snb}.${USERNAME}.${hona}.net
|
||||||
curl -sk "http://${snb}.${USERNAME}.serv00.net/up" > /dev/null 2>&1
|
curl -sk "http://${snb}.${USERNAME}.${hona}.net/up" > /dev/null 2>&1
|
||||||
green "安装完毕,多功能主页地址:http://${snb}.${USERNAME}.serv00.net" && sleep 2
|
green "安装完毕,多功能主页地址:http://${snb}.${USERNAME}.${hona}.net" && sleep 2
|
||||||
}
|
}
|
||||||
|
|
||||||
okip(){
|
okip(){
|
||||||
@@ -1284,16 +1284,19 @@ if [[ -e $WORKDIR/config.json ]]; then
|
|||||||
mkdir -p "$HOME/bin"
|
mkdir -p "$HOME/bin"
|
||||||
curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh > "$SCRIPT_PATH"
|
curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh > "$SCRIPT_PATH"
|
||||||
chmod +x "$SCRIPT_PATH"
|
chmod +x "$SCRIPT_PATH"
|
||||||
if [[ ":$PATH:" != *":$HOME/bin:"* ]]; then
|
if [[ ":$PATH:" != *":$HOME/bin:"* ]]; then
|
||||||
echo "export PATH=\"\$HOME/bin:\$PATH\"" >> "$HOME/.bashrc"
|
echo 'export PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
|
||||||
source "$HOME/.bashrc"
|
grep -qxF 'source ~/.bashrc' ~/.bash_profile 2>/dev/null || echo 'source ~/.bashrc' >> ~/.bash_profile
|
||||||
fi
|
source ~/.bashrc
|
||||||
|
fi
|
||||||
|
if [ "$hona" = "serv00" ]; then
|
||||||
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/app.js -o "$keep_path"/app.js
|
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/app.js -o "$keep_path"/app.js
|
||||||
sed -i '' "15s/name/$snb/g" "$keep_path"/app.js
|
sed -i '' "15s/name/$snb/g" "$keep_path"/app.js
|
||||||
sed -i '' "60s/key/$UUID/g" "$keep_path"/app.js
|
sed -i '' "60s/key/$UUID/g" "$keep_path"/app.js
|
||||||
sed -i '' "75s/name/$USERNAME/g" "$keep_path"/app.js
|
sed -i '' "75s/name/$USERNAME/g" "$keep_path"/app.js
|
||||||
sed -i '' "75s/where/$snb/g" "$keep_path"/app.js
|
sed -i '' "75s/where/$snb/g" "$keep_path"/app.js
|
||||||
curl -sSL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00keep.sh -o serv00keep.sh && chmod +x serv00keep.sh
|
curl -sSL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00keep.sh -o serv00keep.sh && chmod +x serv00keep.sh
|
||||||
|
fi
|
||||||
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/index.html -o "$FILE_PATH"/index.html
|
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/index.html -o "$FILE_PATH"/index.html
|
||||||
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sversion | awk -F "更新内容" '{print $1}' | head -n 1 > $WORKDIR/v
|
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sversion | awk -F "更新内容" '{print $1}' | head -n 1 > $WORKDIR/v
|
||||||
else
|
else
|
||||||
@@ -1309,7 +1312,7 @@ ps aux | grep '[r]un -c con' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2
|
|||||||
sbb=$(cat sb.txt)
|
sbb=$(cat sb.txt)
|
||||||
nohup ./"$sbb" run -c config.json >/dev/null 2>&1 &
|
nohup ./"$sbb" run -c config.json >/dev/null 2>&1 &
|
||||||
sleep 1
|
sleep 1
|
||||||
curl -sk "http://${snb}.${USERNAME}.serv00.net/up" > /dev/null 2>&1
|
curl -sk "http://${snb}.${USERNAME}.${hona}.net/up" > /dev/null 2>&1
|
||||||
sleep 5
|
sleep 5
|
||||||
if pgrep -x "$sbb" > /dev/null; then
|
if pgrep -x "$sbb" > /dev/null; then
|
||||||
green "$sbb 主进程重启成功"
|
green "$sbb 主进程重启成功"
|
||||||
@@ -1322,34 +1325,102 @@ red "未安装脚本,请选择1进行安装" && exit
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resargo(){
|
||||||
|
if [[ -e $WORKDIR/config.json ]]; then
|
||||||
|
cd $WORKDIR
|
||||||
|
argogdshow(){
|
||||||
|
if [ -f ARGO_AUTH.log ]; then
|
||||||
|
echo
|
||||||
|
argoport=$(jq -r '.inbounds[4].listen_port' config.json)
|
||||||
|
purple "如果你想设置原先的Argo固定隧道,请明确以下三点"
|
||||||
|
purple "1:已设置Argo固定域名:$(cat ARGO_DOMAIN.log)"
|
||||||
|
purple "2:固定隧道token:$(cat ARGO_AUTH.log)"
|
||||||
|
purple "3:检查CF官网的ARGO固定隧道端口:$argoport"
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
if [ -f boot.log ]; then
|
||||||
|
green "当前正在使用Argo临时隧道"
|
||||||
|
argogdshow
|
||||||
|
else
|
||||||
|
green "当前正在使用Argo固定隧道"
|
||||||
|
argogdshow
|
||||||
|
fi
|
||||||
|
argo_configure
|
||||||
|
ps aux | grep '[t]unnel --u' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
|
||||||
|
ps aux | grep '[t]unnel --n' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
|
||||||
|
agg=$(cat ag.txt)
|
||||||
|
if [[ ! -f boot.log ]] && [[ "$argo_choice" =~ (G|g) ]]; then
|
||||||
|
if [ "$hona" = "serv00" ]; then
|
||||||
|
sed -i '' -e "15s|''|'$(cat ARGO_DOMAIN.log)'|" ~/serv00keep.sh
|
||||||
|
sed -i '' -e "16s|''|'$(cat ARGO_AUTH.log)'|" ~/serv00keep.sh
|
||||||
|
fi
|
||||||
|
args="tunnel --no-autoupdate run --token $(cat ARGO_AUTH.log)"
|
||||||
|
else
|
||||||
|
rm -rf boot.log
|
||||||
|
if [ "$hona" = "serv00" ]; then
|
||||||
|
sed -i '' -e "15s|'$(cat ARGO_DOMAIN.log)'|''|" ~/serv00keep.sh
|
||||||
|
sed -i '' -e "16s|'$(cat ARGO_AUTH.log)'|''|" ~/serv00keep.sh
|
||||||
|
fi
|
||||||
|
args="tunnel --url http://localhost:$argoport --no-autoupdate --logfile boot.log --loglevel info"
|
||||||
|
fi
|
||||||
|
nohup ./"$agg" $args >/dev/null 2>&1 &
|
||||||
|
sleep 10
|
||||||
|
if pgrep -x "$agg" > /dev/null; then
|
||||||
|
green "$agg Argo进程已启动"
|
||||||
|
else
|
||||||
|
for ((i=1; i<=5; i++)); do
|
||||||
|
red "$agg Argo进程未启动, 重启中...(尝试次数: $i)"
|
||||||
|
pkill -x "$agg"
|
||||||
|
nohup ./"$agg" "${args}" >/dev/null 2>&1 &
|
||||||
|
sleep 5
|
||||||
|
if pgrep -x "$agg" > /dev/null; then
|
||||||
|
purple "$agg Argo进程已成功重启"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [[ $i -eq 5 ]]; then
|
||||||
|
red "$agg Argo进程重启失败,Argo节点暂不可用,其他节点依旧可用"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
curl -sk "http://${snb}.${USERNAME}.${hona}.net/up" > /dev/null 2>&1
|
||||||
|
purple "Argo域名:$(get_argodomain)"
|
||||||
|
cd
|
||||||
|
else
|
||||||
|
red "未安装脚本,请选择1进行安装" && exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
menu() {
|
menu() {
|
||||||
clear
|
clear
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
green "甬哥Github项目 :github.com/yonggekkk"
|
green "甬哥Github项目 :github.com/yonggekkk"
|
||||||
green "甬哥Blogger博客 :ygkkk.blogspot.com"
|
green "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||||
green "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
green "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||||
green "Serv00-sb-yg三协议共存:vless-reality、Vmess-ws(Argo)、Hy2"
|
green "${hona}-sb-yg三协议共存:vless-reality、Vmess-ws(Argo)、Hy2"
|
||||||
green "脚本快捷方式:sb"
|
green "脚本快捷方式:sb"
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
green "1. 一键安装 Serv00-sb-yg"
|
green "1. 一键安装 ${hona}-sb-yg"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
red "2. 卸载删除 Serv00-sb-yg"
|
red "2. 卸载删除 ${hona}-sb-yg"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
green "3. 重启主进程 (修复节点)"
|
green "3. 重启主进程 (修复主节点)"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
green "4. 更新脚本"
|
green "4. 切换并重启Argo临时/固定隧道"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
green "5. 查看各节点分享/sing-box与clash订阅链接/反代IP/ProxyIP"
|
green "5. 更新脚本"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
green "6. 查看sing-box与clash配置文件"
|
green "6. 查看各节点分享/sing-box与clash订阅链接/反代IP/ProxyIP"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
yellow "7. 重置并随机生成新端口 (脚本安装前后都可执行)"
|
green "7. 查看sing-box与clash配置文件"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
yellow "8. 清理所有服务进程与文件 (系统初始化)"
|
yellow "8. 重置并随机生成新端口 (脚本安装前后都可执行)"
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
yellow "9. 清理所有服务进程与文件 (系统初始化)"
|
||||||
echo "------------------------------------------------------------"
|
echo "------------------------------------------------------------"
|
||||||
red "0. 退出脚本"
|
red "0. 退出脚本"
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
ym=("$HOSTNAME" "cache$nb.serv00.com" "web$nb.serv00.com")
|
ym=("$HOSTNAME" "cache$nb.${hona}.com" "web$nb.${hona}.com")
|
||||||
rm -rf $WORKDIR/ip.txt
|
rm -rf $WORKDIR/ip.txt
|
||||||
for host in "${ym[@]}"; do
|
for host in "${ym[@]}"; do
|
||||||
response=$(curl -sL --connect-timeout 5 --max-time 7 "https://ss.fkj.pp.ua/api/getip?host=$host")
|
response=$(curl -sL --connect-timeout 5 --max-time 7 "https://ss.fkj.pp.ua/api/getip?host=$host")
|
||||||
@@ -1369,7 +1440,7 @@ done
|
|||||||
if [[ ! "$response" =~ (unknown|not|error) ]]; then
|
if [[ ! "$response" =~ (unknown|not|error) ]]; then
|
||||||
grep ':' $WORKDIR/ip.txt | sort -u -o $WORKDIR/ip.txt
|
grep ':' $WORKDIR/ip.txt | sort -u -o $WORKDIR/ip.txt
|
||||||
fi
|
fi
|
||||||
green "Serv00服务器名称:${snb}"
|
green "${hona}服务器名称:${snb}"
|
||||||
echo
|
echo
|
||||||
green "当前可选择的IP如下:"
|
green "当前可选择的IP如下:"
|
||||||
cat $WORKDIR/ip.txt
|
cat $WORKDIR/ip.txt
|
||||||
@@ -1389,10 +1460,10 @@ insV=$(cat $WORKDIR/v 2>/dev/null)
|
|||||||
latestV=$(curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sversion | awk -F "更新内容" '{print $1}' | head -n 1)
|
latestV=$(curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sversion | awk -F "更新内容" '{print $1}' | head -n 1)
|
||||||
if [ -f $WORKDIR/v ]; then
|
if [ -f $WORKDIR/v ]; then
|
||||||
if [ "$insV" = "$latestV" ]; then
|
if [ "$insV" = "$latestV" ]; then
|
||||||
echo -e "当前 Serv00-sb-yg 脚本最新版:${purple}${insV}${re} (已安装)"
|
echo -e "当前 ${hona}-sb-yg 脚本最新版:${purple}${insV}${re} (已安装)"
|
||||||
else
|
else
|
||||||
echo -e "当前 Serv00-sb-yg 脚本版本号:${purple}${insV}${re}"
|
echo -e "当前 ${hona}-sb-yg 脚本版本号:${purple}${insV}${re}"
|
||||||
echo -e "检测到最新 Serv00-sb-yg 脚本版本号:${yellow}${latestV}${re} (可选择4进行更新)"
|
echo -e "检测到最新 ${hona}-sb-yg 脚本版本号:${yellow}${latestV}${re} (可选择5进行更新)"
|
||||||
echo -e "${yellow}$(curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sversion)${re}"
|
echo -e "${yellow}$(curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sversion)${re}"
|
||||||
fi
|
fi
|
||||||
echo -e "========================================================="
|
echo -e "========================================================="
|
||||||
@@ -1402,7 +1473,7 @@ if pgrep -x "$sbb" > /dev/null; then
|
|||||||
green "Sing-box主进程运行正常"
|
green "Sing-box主进程运行正常"
|
||||||
green "UUID密码:$showuuid"
|
green "UUID密码:$showuuid"
|
||||||
else
|
else
|
||||||
yellow "Sing-box主进程启动失败,尝试运行下保活网页、重启、重置端口"
|
yellow "Sing-box主进程启动失败,建议选择8重置端口,再选择9卸载重装"
|
||||||
fi
|
fi
|
||||||
if [ -f "$WORKDIR/boot.log" ] && grep -q "trycloudflare.com" "$WORKDIR/boot.log"; then
|
if [ -f "$WORKDIR/boot.log" ] && grep -q "trycloudflare.com" "$WORKDIR/boot.log"; then
|
||||||
argosl=$(cat "$WORKDIR/boot.log" 2>/dev/null | grep -a trycloudflare.com | awk 'NR==2{print}' | awk -F// '{print $2}' | awk '{print $1}')
|
argosl=$(cat "$WORKDIR/boot.log" 2>/dev/null | grep -a trycloudflare.com | awk 'NR==2{print}' | awk -F// '{print $2}' | awk '{print $1}')
|
||||||
@@ -1411,48 +1482,37 @@ checkhttp=$(curl -o /dev/null -s -w "%{http_code}\n" "https://$argosl")
|
|||||||
green "Argo临时域名:$argosl $check"
|
green "Argo临时域名:$argosl $check"
|
||||||
fi
|
fi
|
||||||
if [ -f "$WORKDIR/boot.log" ] && ! grep -q "trycloudflare.com" "$WORKDIR/boot.log"; then
|
if [ -f "$WORKDIR/boot.log" ] && ! grep -q "trycloudflare.com" "$WORKDIR/boot.log"; then
|
||||||
yellow "Argo临时域名暂时不存在,保活过程中会自动恢复"
|
yellow "Argo临时域名暂时不存在"
|
||||||
fi
|
fi
|
||||||
if [ ! -f "$WORKDIR/boot.log" ]; then
|
if [ ! -f "$WORKDIR/boot.log" ]; then
|
||||||
argogd=$(cat $WORKDIR/gdym.log 2>/dev/null)
|
argogd=$(cat $WORKDIR/ARGO_DOMAIN.log 2>/dev/null)
|
||||||
checkhttp=$(curl --max-time 2 -o /dev/null -s -w "%{http_code}\n" "https://$argogd")
|
checkhttp=$(curl --max-time 2 -o /dev/null -s -w "%{http_code}\n" "https://$argogd")
|
||||||
[ "$checkhttp" -eq 404 ] && check="域名有效" || check="域名可能无效"
|
[ "$checkhttp" -eq 404 ] && check="域名有效" || check="域名可能无效"
|
||||||
green "Argo固定域名:$argogd $check"
|
green "Argo固定域名:$argogd $check"
|
||||||
fi
|
fi
|
||||||
|
if [ "$hona" = "serv00" ]; then
|
||||||
green "多功能主页如下 (支持保活、重启、重置端口、节点查询)"
|
green "多功能主页如下 (支持保活、重启、重置端口、节点查询)"
|
||||||
purple "http://${snb}.${USERNAME}.serv00.net"
|
purple "http://${snb}.${USERNAME}.${hona}.net"
|
||||||
#if ! crontab -l 2>/dev/null | grep -q 'serv00keep'; then
|
fi
|
||||||
#if [ -f "$WORKDIR/boot.log" ] || grep -q "trycloudflare.com" "$WORKDIR/boot.log" 2>/dev/null; then
|
|
||||||
#check_process="! ps aux | grep '[c]onfig' > /dev/null || ! ps aux | grep [l]ocalhost > /dev/null"
|
|
||||||
#else
|
|
||||||
#check_process="! ps aux | grep '[c]onfig' > /dev/null || ! ps aux | grep [t]oken > /dev/null"
|
|
||||||
#fi
|
|
||||||
#(crontab -l 2>/dev/null; echo "*/2 * * * * if $check_process; then /bin/bash serv00keep.sh; fi") | crontab -
|
|
||||||
#purple "发现Serv00开大招了,Cron保活被重置清空了"
|
|
||||||
#purple "目前Cron保活已修复成功。打开 http://${USERNAME}.${USERNAME}.serv00.net/up 也可实时保活"
|
|
||||||
#purple "主进程与Argo进程启动中…………1分钟后可再次进入脚本查看"
|
|
||||||
#else
|
|
||||||
#green "Cron保活运行正常。打开 http://${USERNAME}.${USERNAME}.serv00.net/up 也可实时保活"
|
|
||||||
#fi
|
|
||||||
else
|
else
|
||||||
echo -e "当前 Serv00-sb-yg 脚本版本号:${purple}${latestV}${re}"
|
echo -e "当前 ${hona}-sb-yg 脚本版本号:${purple}${latestV}${re}"
|
||||||
yellow "未安装 Serv00-sb-yg 脚本!请选择 1 安装"
|
yellow "未安装 ${hona}-sb-yg 脚本!请选择 1 安装"
|
||||||
fi
|
fi
|
||||||
#curl -sSL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh -o serv00.sh && chmod +x serv00.sh
|
|
||||||
echo -e "========================================================="
|
echo -e "========================================================="
|
||||||
reading "请输入选择【0-8】: " choice
|
reading "请输入选择【0-9】: " choice
|
||||||
echo
|
echo
|
||||||
case "${choice}" in
|
case "${choice}" in
|
||||||
1) install_singbox ;;
|
1) install_singbox ;;
|
||||||
2) uninstall_singbox ;;
|
2) uninstall_singbox ;;
|
||||||
3) resservsb ;;
|
3) resservsb ;;
|
||||||
4) fastrun && green "脚本已更新成功" && sleep 2 && sb ;;
|
4) resargo ;;
|
||||||
5) showlist ;;
|
5) fastrun && green "脚本已更新成功" && sleep 2 && sb ;;
|
||||||
6) showsbclash ;;
|
6) showlist ;;
|
||||||
7) resallport ;;
|
7) showsbclash ;;
|
||||||
8) kill_all_tasks ;;
|
8) resallport ;;
|
||||||
|
9) kill_all_tasks ;;
|
||||||
0) exit 0 ;;
|
0) exit 0 ;;
|
||||||
*) red "无效的选项,请输入 0 到 8" ;;
|
*) red "无效的选项,请输入 0 到 9" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
menu
|
menu
|
||||||
|
|||||||
Reference in New Issue
Block a user