mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-10 23:41:22 +00:00
~脚本拆分后bug修复
This commit is contained in:
@@ -73,7 +73,8 @@ rm -rf "$CRASHDIR"/starts/shellcrash.openrc
|
||||
#修饰文件及版本号
|
||||
command -v bash >/dev/null 2>&1 && shtype=bash
|
||||
[ -x /bin/ash ] && shtype=ash
|
||||
for file in start.sh starts/bfstart.sh starts/afstart.sh menu.sh menus/task_cmd.sh; do
|
||||
#批量授权
|
||||
for file in start.sh starts/bfstart.sh starts/afstart.sh menu.sh menus/task_cmd.sh menus/bot_tg.sh; do
|
||||
sed -i "s|/bin/sh|/bin/$shtype|" "$CRASHDIR/$file" 2>/dev/null
|
||||
chmod +x "$CRASHDIR/$file" 2>/dev/null
|
||||
done
|
||||
@@ -190,10 +191,6 @@ mv -f "$CRASHDIR"/ruleset/geosite-cn.mrs "$CRASHDIR"/ruleset/cn.mrs 2>/dev/null
|
||||
#数据库移动
|
||||
mv -f "$CRASHDIR"/*.srs "$CRASHDIR"/ruleset/ 2>/dev/null
|
||||
mv -f "$CRASHDIR"/*.mrs "$CRASHDIR"/ruleset/ 2>/dev/null
|
||||
#内核改名
|
||||
mv -f "$CRASHDIR"/clash "$CRASHDIR"/CrashCore 2>/dev/null
|
||||
#内核压缩
|
||||
[ -f "$CRASHDIR"/CrashCore ] && tar -zcf "$CRASHDIR"/CrashCore.tar.gz -C "$CRASHDIR" CrashCore
|
||||
for file in dropbear_rsa_host_key authorized_keys tun.ko ShellDDNS.sh; do
|
||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/tools/"$file" 2>/dev/null
|
||||
done
|
||||
|
||||
26
scripts/libs/gen_base64.sh
Normal file
26
scripts/libs/gen_base64.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#生成指定位数的加密秘钥,符合ss2022协议
|
||||
gen_random() {
|
||||
if ckcmd openssl;then
|
||||
openssl rand --base64 "$1"
|
||||
elif ckcmd base64;then
|
||||
head -c "$1" /dev/urandom | base64 | tr -d '\n'
|
||||
elif busybox base64 --help >/dev/null 2>&1;then
|
||||
head -c "$1" /dev/urandom | base64 | tr -d '\n'
|
||||
elif ckcmd uuencode;then
|
||||
head -c "$1" /dev/urandom | uuencode -m - | sed -n '2p'
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
#对指定字符串进行base64转码
|
||||
gen_base64() {
|
||||
if ckcmd base64;then
|
||||
echo -n "$1" | base64 | tr -d '\n'
|
||||
elif busybox base64 --help >/dev/null 2>&1;then
|
||||
echo -n "$1" | busybox base64 | tr -d '\n'
|
||||
elif ckcmd openssl;then
|
||||
echo -n "$1" | openssl base64 -A
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
@@ -226,10 +226,10 @@ main_menu() {
|
||||
7)
|
||||
GT_CFG_PATH="$CRASHDIR"/configs/gateway.cfg
|
||||
touch "$GT_CFG_PATH"
|
||||
checkcfg=$(cat $GT_CFG_PATH)
|
||||
checkcfg=$(cat "$CFG_PATH" "$GT_CFG_PATH")
|
||||
. "$CRASHDIR"/menus/7_gateway.sh && gateway
|
||||
if [ -n "$PID" ]; then
|
||||
checkcfg_new=$(cat $GT_CFG_PATH)
|
||||
checkcfg_new=$(cat "$CFG_PATH" "$GT_CFG_PATH")
|
||||
[ "$checkcfg" != "$checkcfg_new" ] && checkrestart
|
||||
fi
|
||||
main_menu
|
||||
|
||||
@@ -78,7 +78,8 @@ setrules(){ #自定义规则
|
||||
esac
|
||||
}
|
||||
get_rule_group(){
|
||||
"$CRASHDIR"/start.sh get_save http://127.0.0.1:${db_port}/proxies | sed 's/:{/!/g' | awk -F '!' '{for(i=1;i<=NF;i++) print $i}' | grep -aE '"Selector|URLTest|LoadBalance"' | grep -aoE '"name":.*"now":".*",' | awk -F '"' '{print "#"$4}' | tr -d '\n'
|
||||
. "$CRASHDIR"/libs/web_save.sh
|
||||
get_save http://127.0.0.1:${db_port}/proxies | sed 's/:{/!/g' | awk -F '!' '{for(i=1;i<=NF;i++) print $i}' | grep -aE '"Selector|URLTest|LoadBalance"' | grep -aoE '"name":.*"now":".*",' | awk -F '"' '{print "#"$4}' | tr -d '\n'
|
||||
}
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[33m你可以在这里快捷管理自定义规则\033[0m"
|
||||
@@ -377,10 +378,10 @@ EOF
|
||||
ln -sf ${provider_temp_file} ${TMPDIR}/provider_temp_file
|
||||
else
|
||||
echo -e "\033[33m正在获取在线模版!\033[0m"
|
||||
${CRASHDIR}/start.sh get_bin ${TMPDIR}/provider_temp_file rules/${coretype}_providers/${provider_temp_file}
|
||||
get_bin ${TMPDIR}/provider_temp_file rules/${coretype}_providers/${provider_temp_file}
|
||||
[ -z "$(grep -o 'rules' ${TMPDIR}/provider_temp_file)" ] && {
|
||||
echo -e "\033[31m下载失败,请尝试更换安装源!\033[0m"
|
||||
setserver
|
||||
. "$CRASHDIR"/menus/9_upgrade.sh && setserver
|
||||
setproviders
|
||||
}
|
||||
fi
|
||||
@@ -412,14 +413,14 @@ EOF
|
||||
cut -c 1- ${TMPDIR}/providers/providers.yaml ${TMPDIR}/providers/proxy-groups.yaml ${TMPDIR}/providers/rules.yaml > ${TMPDIR}/config.yaml
|
||||
rm -rf ${TMPDIR}/providers
|
||||
#调用内核测试
|
||||
. "$CRASHDIR"/libs/core_webget.sh && core_find && ${TMPDIR}/CrashCore -t -d ${BINDIR} -f ${TMPDIR}/config.yaml
|
||||
. "$CRASHDIR"/libs/core_tools.sh && core_find && ${TMPDIR}/CrashCore -t -d ${BINDIR} -f ${TMPDIR}/config.yaml
|
||||
if [ "$?" = 0 ];then
|
||||
echo -e "\033[32m配置文件生成成功!\033[0m"
|
||||
mkdir -p ${CRASHDIR}/yamls
|
||||
mv -f ${TMPDIR}/config.yaml ${CRASHDIR}/yamls/config.yaml
|
||||
read -p "是否立即启动/重启服务?(1/0) > " res
|
||||
[ "$res" = 1 ] && {
|
||||
start_core && $CRASHDIR/start.sh cronset '更新订阅'
|
||||
start_core && cronset '更新订阅'
|
||||
exit
|
||||
}
|
||||
else
|
||||
@@ -474,10 +475,10 @@ EOF
|
||||
ln -sf ${provider_temp_file} ${TMPDIR}/provider_temp_file
|
||||
else
|
||||
echo -e "\033[33m正在获取在线模版!\033[0m"
|
||||
${CRASHDIR}/start.sh get_bin ${TMPDIR}/provider_temp_file rules/${coretype}_providers/${provider_temp_file}
|
||||
get_bin ${TMPDIR}/provider_temp_file rules/${coretype}_providers/${provider_temp_file}
|
||||
[ -z "$(grep -o 'route' ${TMPDIR}/provider_temp_file)" ] && {
|
||||
echo -e "\033[31m下载失败,请尝试更换安装源!\033[0m"
|
||||
setserver
|
||||
. "$CRASHDIR"/menus/9_upgrade.sh && setserver
|
||||
setproviders
|
||||
}
|
||||
fi
|
||||
@@ -514,7 +515,7 @@ EOF
|
||||
cat ${TMPDIR}/provider_temp_file | sed "s/{providers_tags}/$providers_tags/g" > ${TMPDIR}/providers/outbounds.json
|
||||
rm -rf ${TMPDIR}/provider_temp_file
|
||||
#调用内核测试
|
||||
. "$CRASHDIR"/libs/core_webget.sh && core_find && ${TMPDIR}/CrashCore merge ${TMPDIR}/config.json -C ${TMPDIR}/providers
|
||||
. "$CRASHDIR"/libs/core_tools.sh && core_find && ${TMPDIR}/CrashCore merge ${TMPDIR}/config.json -C ${TMPDIR}/providers
|
||||
if [ "$?" = 0 ];then
|
||||
echo -e "\033[32m配置文件生成成功!如果启动超时建议更新里手动安装Singbox-srs数据库常用包!\033[0m"
|
||||
mkdir -p ${CRASHDIR}/jsons
|
||||
@@ -522,7 +523,7 @@ EOF
|
||||
rm -rf ${TMPDIR}/providers
|
||||
read -p "是否立即启动/重启服务?(1/0) > " res
|
||||
[ "$res" = 1 ] && {
|
||||
start_core && $CRASHDIR/start.sh cronset '更新订阅'
|
||||
start_core && cronset '更新订阅'
|
||||
exit
|
||||
}
|
||||
else
|
||||
@@ -532,6 +533,8 @@ EOF
|
||||
fi
|
||||
}
|
||||
setproviders(){ #自定义providers
|
||||
. "$CRASHDIR"/libs/set_cron.sh
|
||||
. "$CRASHDIR"/libs/web_get_bin.sh
|
||||
#获取模版名称
|
||||
if [ -z "$(grep "provider_temp_${coretype}" ${CRASHDIR}/configs/ShellCrash.cfg)" ];then
|
||||
provider_temp_des=$(sed -n "1 p" ${CRASHDIR}/configs/${coretype}_providers.list | awk '{print $1}')
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
# Copyright (C) Juewuy
|
||||
. "$GT_CFG_PATH"
|
||||
. "$CRASHDIR"/menus/check_port.sh
|
||||
. "$CRASHDIR"/libs/gen_base64.sh
|
||||
|
||||
gateway(){ #访问与控制主菜单
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[30;47m欢迎使用访问与控制菜单:\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 配置\033[33m公网访问防火墙\033[0m"
|
||||
echo -e " 2 配置\033[36mTelegram专属控制机器人\033[0m \033[32m$bot_tg_service\033[0m"
|
||||
echo -e " 3 配置\033[36mDDNS自动域名\033[0m"
|
||||
@@ -17,7 +18,7 @@ gateway(){ #访问与控制主菜单
|
||||
echo -e " 7 配置\033[36mWireguard客户端\033[0m(限Singbox) \033[32m$wg_service\033[0m"
|
||||
}
|
||||
echo -e " 0 返回上级菜单"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0) ;;
|
||||
@@ -64,17 +65,17 @@ gateway(){ #访问与控制主菜单
|
||||
}
|
||||
set_fw_wan() { #公网防火墙设置
|
||||
[ -z "$fw_wan" ] && fw_wan=ON
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m如在vps运行,还需在vps安全策略对相关端口同时放行"
|
||||
[ -n "$fw_wan_ports" ] &&
|
||||
echo -e "当前放行端口:\033[36m$fw_wan_ports\033[0m"
|
||||
echo -e "默认拦截端口:\033[33m$dns_port,$mix_port,$db_port\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 启用/关闭公网防火墙: \033[36m$fw_wan\033[0m"
|
||||
echo -e " 2 添加放行端口(可包含默认拦截端口)"
|
||||
echo -e " 3 移除指定放行端口"
|
||||
echo -e " 0 返回上级菜单"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case $num in
|
||||
1)
|
||||
@@ -120,28 +121,9 @@ set_fw_wan() { #公网防火墙设置
|
||||
;;
|
||||
esac
|
||||
}
|
||||
set_bot_tg_init(){
|
||||
echo -----------------------------------------------
|
||||
echo -e "请先通过 \033[32;4mhttps://t.me/BotFather\033[0m 申请TG机器人并获取其\033[36mAPI TOKEN\033[0m"
|
||||
echo -----------------------------------------------
|
||||
read -p "请输入你获取到的API TOKEN > " TOKEN
|
||||
echo -----------------------------------------------
|
||||
echo -e "请向\033[32m你申请的机器人\033[31m而不是BotFather\033[0m,发送任意几条消息!"
|
||||
echo -----------------------------------------------
|
||||
read -p "我已经发送完成(1/0) > " res
|
||||
if [ "$res" = 1 ]; then
|
||||
. "$CRASHDIR"/libs/web_json.sh #加载web工具
|
||||
bot_api=https://api.telegram.org/bot$TOKEN
|
||||
chat=$(web_json_get "$bot_api/getUpdates" | tail -n -1)
|
||||
[ -n "$chat" ] && chat_ID=$(echo $chat | grep -oE '"id":.*,"is_bot":false' | sed s'/"id"://'g | sed s'/,"is_bot":false//'g)
|
||||
[ -z "$chat_ID" ] && {
|
||||
echo -e "\033[31m无法获取对话ID,请确认使用的不是已经被绑定的机器人,或手动输入ChatID!\033[0m"
|
||||
echo -e "通常访问 $url_tg 即可看到ChatID,也可以尝试其他方法\033[0m"
|
||||
read -p "请手动输入ChatID > " chat_ID
|
||||
}
|
||||
if [ -n "$chat_ID" ]; then
|
||||
setconfig TG_TOKEN $TOKEN "$CFG"
|
||||
setconfig TG_CHATID $chat_ID "$CFG"
|
||||
set_bot_tg_config(){
|
||||
setconfig TG_TOKEN "$TOKEN" "$GT_CFG_PATH"
|
||||
setconfig TG_CHATID "$chat_ID" "$GT_CFG_PATH"
|
||||
#设置机器人快捷命令
|
||||
JSON=$(cat <<EOF
|
||||
{
|
||||
@@ -153,15 +135,20 @@ set_bot_tg_init(){
|
||||
EOF
|
||||
)
|
||||
TEXT='已完成Telegram机器人设置!'
|
||||
. "$CRASHDIR"/libs/web_json.sh
|
||||
bot_api="https://api.telegram.org/bot$TOKEN"
|
||||
web_json_post "$bot_api/setMyCommands" "$JSON"
|
||||
web_json_post "$bot_api/sendMessage" '{"chat_id":"'"$chat_ID"'","text":"'"$TEXT"'","parse_mode":"Markdown"}'
|
||||
echo -e "\033[32m$TEXT\033[0m"
|
||||
}
|
||||
set_bot_tg_init(){
|
||||
. "$CRASHDIR"/menus/bot_tg_bind.sh && private_bot && set_bot
|
||||
if [ "$?" = 0 ]; then
|
||||
set_bot_tg_config
|
||||
return 0
|
||||
else
|
||||
echo -e "\033[31m无法获取对话ID,请重新配置!\033[0m"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
set_bot_tg_service(){
|
||||
PID=$(pidof /bin/sh "$CRASHDIR"/menus/bot_tg.sh)
|
||||
@@ -170,35 +157,44 @@ set_bot_tg_service(){
|
||||
[ -n "$PID" ] && kill -9 $PID >/dev/null 2>&1
|
||||
else
|
||||
bot_tg_service=ON
|
||||
[ -z "$PID" ] && "$CRASHDIR"/menus/bot_tg.sh &
|
||||
[ -n "$(pidof CrashCore)" ] && [ -z "$PID" ] && "$CRASHDIR"/menus/bot_tg.sh &
|
||||
fi
|
||||
setconfig bot_tg_service "$bot_tg_service"
|
||||
}
|
||||
set_bot_tg(){
|
||||
[ -n "$ts_auth_key" ] && ts_auth_key_info='已设置'
|
||||
echo -----------------------------------------------
|
||||
[ -n "$TG_CHATID" ] && TG_CHATID_info='已绑定'
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m由于网络环境原因,此机器人仅限服务启动时运行!"
|
||||
echo -e "此机器人与推送机器人互不影响,请尽量不要设置成同一机器人"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 启用/关闭TG-BOT服务 \033[32m$bot_tg_service\033[0m"
|
||||
echo -e " 2 TG-BOT绑定设置"
|
||||
echo -e " 2 TG-BOT绑定设置 \033[32m$TG_CHATID_info\033[0m"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0) ;;
|
||||
1)
|
||||
. "$CFG"
|
||||
. "$GT_CFG_PATH"
|
||||
if [ -n "$TG_CHATID" ];then
|
||||
set_bot_tg_service
|
||||
else
|
||||
set_bot_tg_init && set_bot_tg_service
|
||||
echo -e "\033[31m请先绑定TG-BOT!\033[0m"
|
||||
fi
|
||||
sleep 1
|
||||
set_bot_tg
|
||||
;;
|
||||
2)
|
||||
set_bot_tg_init && set_bot_tg_service
|
||||
if [ -n "$chat_ID" ] && [ -n "$push_TG" ] && [ "$push_TG" != 'publictoken' ]; then
|
||||
read -p "检测到已经绑定了TG推送BOT,是否直接使用?(1/0) > " res
|
||||
if [ "$res" = 1 ]; then
|
||||
TOKEN="$push_TG"
|
||||
set_bot_tg_config
|
||||
set_bot_tg
|
||||
return
|
||||
fi
|
||||
fi
|
||||
set_bot_tg_init
|
||||
set_bot_tg
|
||||
;;
|
||||
*)
|
||||
@@ -207,17 +203,19 @@ set_bot_tg(){
|
||||
esac
|
||||
}
|
||||
set_vmess(){
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m设置的端口会添加到公网访问防火墙并自动放行!\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mVmess入站 \033[32m$vms_service\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 2 设置\033[36m监听端口\033[0m: \033[36m$vms_port\033[0m"
|
||||
echo -e " 3 设置\033[33mWS-path(可选)\033[0m: \033[33m$vms_ws_path\033[0m"
|
||||
echo -e " 4 设置\033[36m秘钥-uuid\033[0m: \033[36m$vms_uuid\033[0m"
|
||||
echo -e " 5 一键生成\033[32m随机秘钥\033[0m"
|
||||
gen_base64 1 >/dev/null 2>&1 &&
|
||||
echo -e " 6 一键生成分享链接"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0) ;;
|
||||
@@ -233,10 +231,12 @@ set_vmess(){
|
||||
;;
|
||||
2)
|
||||
read -p "请输入端口号(输入0删除) > " text
|
||||
[ "$text" = 0 ] && unset vms_port
|
||||
if check_port "$text"; then
|
||||
if [ "$text" = 0 ];then
|
||||
vms_port=''
|
||||
setconfig vms_port "" "$GT_CFG_PATH"
|
||||
elif check_port "$text"; then
|
||||
vms_port="$text"
|
||||
setconfig vms_port "$text" "$CFG"
|
||||
setconfig vms_port "$text" "$GT_CFG_PATH"
|
||||
fw_wan_ports=$(echo "$fw_wan_ports,$vms_port" | sed "s/^,//")
|
||||
setconfig fw_wan_ports "$fw_wan_ports"
|
||||
else
|
||||
@@ -246,10 +246,12 @@ set_vmess(){
|
||||
;;
|
||||
3)
|
||||
read -p "请输入ws-path路径(输入0删除) > " text
|
||||
[ "$text" = 0 ] && unset vms_ws_path
|
||||
if echo "$text" |grep -qE '^/';then
|
||||
if [ "$text" = 0 ];then
|
||||
vms_ws_path=''
|
||||
setconfig vms_ws_path "" "$GT_CFG_PATH"
|
||||
elif echo "$text" |grep -qE '^/';then
|
||||
vms_ws_path="$text"
|
||||
setconfig vms_ws_path "$text" "$CFG"
|
||||
setconfig vms_ws_path "$text" "$GT_CFG_PATH"
|
||||
else
|
||||
echo -e "\033[31m不是合法的path路径,必须以【/】开头!\033[0m"
|
||||
sleep 1
|
||||
@@ -258,10 +260,12 @@ set_vmess(){
|
||||
;;
|
||||
4)
|
||||
read -p "请输入UUID(输入0删除) > " text
|
||||
[ "$text" = 0 ] && unset vms_uuid
|
||||
if echo "$text" |grep -qiE '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$';then
|
||||
if [ "$text" = 0 ];then
|
||||
vms_uuid=''
|
||||
setconfig vms_uuid "" "$GT_CFG_PATH"
|
||||
elif echo "$text" |grep -qiE '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$';then
|
||||
vms_uuid="$text"
|
||||
setconfig vms_uuid "$text" "$CFG"
|
||||
setconfig vms_uuid "$text" "$GT_CFG_PATH"
|
||||
else
|
||||
echo -e "\033[31m不是合法的UUID格式,请重新输入或使用随机生成功能!\033[0m"
|
||||
sleep 1
|
||||
@@ -270,7 +274,34 @@ set_vmess(){
|
||||
;;
|
||||
5)
|
||||
vms_uuid=$(cat /proc/sys/kernel/random/uuid)
|
||||
setconfig vms_uuid "$vms_uuid" "$CFG"
|
||||
setconfig vms_uuid "$vms_uuid" "$GT_CFG_PATH"
|
||||
sleep 1
|
||||
set_vmess
|
||||
;;
|
||||
6)
|
||||
read -p "请输入本机公网IP(4/6)或域名 > " host_wan
|
||||
if [ -n "$host_wan" ] && [ -n "$vms_port" ] && [ -n "$vms_uuid" ];then
|
||||
[ -n "$vms_ws_path" ] && vms_net=ws
|
||||
vms_json=$(cat <<EOF
|
||||
{
|
||||
"v": "2",
|
||||
"ps": "ShellCrash_vms_in",
|
||||
"add": "$host_wan",
|
||||
"port": "$vms_port",
|
||||
"id": "$vms_uuid",
|
||||
"aid": "0",
|
||||
"type": "auto",
|
||||
"net": "$vms_net",
|
||||
"path": "$vms_ws_path"
|
||||
}
|
||||
EOF
|
||||
)
|
||||
vms_link="vmess://$(gen_base64 "$vms_json")"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$vms_link\033[0m"
|
||||
else
|
||||
echo -e "\033[31m请先完成必选设置!\033[0m"
|
||||
fi
|
||||
sleep 1
|
||||
set_vmess
|
||||
;;
|
||||
@@ -279,16 +310,18 @@ set_vmess(){
|
||||
}
|
||||
set_shadowsocks(){
|
||||
[ -z "$sss_cipher" ] && sss_cipher='xchacha20-ietf-poly1305'
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m设置的端口会添加到公网访问防火墙并自动放行!\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mShadowSocks入站 \033[32m$sss_service\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 2 设置\033[36m监听端口\033[0m: \033[36m$sss_port\033[0m"
|
||||
echo -e " 3 选择\033[33m加密协议\033[0m: \033[33m$sss_cipher\033[0m"
|
||||
echo -e " 4 设置\033[36mpassword\033[0m: \033[36m$sss_pwd\033[0m"
|
||||
gen_base64 1 >/dev/null 2>&1 &&
|
||||
echo -e " 5 一键生成分享链接"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0) ;;
|
||||
@@ -304,10 +337,12 @@ set_shadowsocks(){
|
||||
;;
|
||||
2)
|
||||
read -p "请输入端口号(输入0删除) > " text
|
||||
[ "$text" = 0 ] && unset sss_port
|
||||
if check_port "$text"; then
|
||||
if [ "$text" = 0 ];then
|
||||
sss_port=''
|
||||
setconfig sss_port "" "$GT_CFG_PATH"
|
||||
elif check_port "$text"; then
|
||||
sss_port="$text"
|
||||
setconfig sss_port "$text" "$CFG"
|
||||
setconfig sss_port "$text" "$GT_CFG_PATH"
|
||||
fw_wan_ports=$(echo "$fw_wan_ports,$sss_port" | sed "s/^,//")
|
||||
setconfig fw_wan_ports "$fw_wan_ports"
|
||||
else
|
||||
@@ -316,55 +351,55 @@ set_shadowsocks(){
|
||||
set_shadowsocks
|
||||
;;
|
||||
3)
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32mxchacha20-ietf-poly1305\033[0m"
|
||||
echo -e " 2 \033[32mchacha20-ietf-poly1305\033[0m"
|
||||
echo -e " 3 \033[32maes-128-gcm\033[0m"
|
||||
echo -e " 4 \033[32maes-256-gcm\033[0m"
|
||||
ckcmd openssl && {
|
||||
echo -----------------------------------------------
|
||||
echo -e "\033[31m注意:\033[0m2022系列加密必须使用OpenSSL随机生成的password!"
|
||||
gen_random 1 >/dev/null && {
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m2022系列加密必须使用随机生成的password!"
|
||||
echo -e " 5 \033[32m2022-blake3-chacha20-poly1305\033[0m"
|
||||
echo -e " 6 \033[32m2022-blake3-aes-128-gcm\033[0m"
|
||||
echo -e " 7 \033[32m2022-blake3-aes-256-gcm\033[0m"
|
||||
}
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 0 返回上级菜单"
|
||||
read -p "请选择要使用的加密协议 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
sss_cipher=xchacha20-ietf-poly1305
|
||||
sss_pwd=$(cat /proc/sys/kernel/random/uuid)
|
||||
sss_pwd=$(gen_random 16)
|
||||
;;
|
||||
2)
|
||||
sss_cipher=chacha20-ietf-poly1305
|
||||
sss_pwd=$(cat /proc/sys/kernel/random/uuid)
|
||||
sss_pwd=$(gen_random 16)
|
||||
;;
|
||||
3)
|
||||
sss_cipher=aes-128-gcm
|
||||
sss_pwd=$(cat /proc/sys/kernel/random/uuid)
|
||||
sss_pwd=$(gen_random 16)
|
||||
;;
|
||||
4)
|
||||
sss_cipher=aes-256-gcm
|
||||
sss_pwd=$(cat /proc/sys/kernel/random/uuid)
|
||||
sss_pwd=$(gen_random 16)
|
||||
;;
|
||||
5)
|
||||
sss_cipher=2022-blake3-chacha20-poly1305
|
||||
sss_pwd=$(openssl rand --base64 32)
|
||||
sss_pwd=$(gen_random 32)
|
||||
;;
|
||||
6)
|
||||
sss_cipher=2022-blake3-aes-128-gcm
|
||||
sss_pwd=$(openssl rand --base64 16)
|
||||
sss_pwd=$(gen_random 16)
|
||||
;;
|
||||
7)
|
||||
sss_cipher=2022-blake3-aes-256-gcm
|
||||
sss_pwd=$(openssl rand --base64 32)
|
||||
sss_pwd=$(gen_random 32)
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
setconfig sss_cipher "$sss_cipher" "$CFG"
|
||||
setconfig sss_pwd "$sss_pwd" "$CFG"
|
||||
setconfig sss_cipher "$sss_cipher" "$GT_CFG_PATH"
|
||||
setconfig sss_pwd "$sss_pwd" "$GT_CFG_PATH"
|
||||
set_shadowsocks
|
||||
;;
|
||||
4)
|
||||
@@ -375,27 +410,39 @@ set_shadowsocks(){
|
||||
read -p "请输入秘钥(输入0删除) > " text
|
||||
[ "$text" = 0 ] && unset sss_pwd
|
||||
sss_pwd="$text"
|
||||
setconfig sss_pwd "$text" "$CFG"
|
||||
setconfig sss_pwd "$text" "$GT_CFG_PATH"
|
||||
fi
|
||||
set_shadowsocks
|
||||
;;
|
||||
5)
|
||||
read -p "请输入本机公网IP(4/6)或域名 > " text
|
||||
if [ -n "$text" ] && [ -n "$sss_port" ] && [ -n "$sss_pwd" ];then
|
||||
ss_link="ss://$(gen_base64 "$sss_cipher":"$sss_pwd")@${text}:${sss_port}#ShellCrash_ss_in"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$ss_link\033[0m"
|
||||
else
|
||||
echo -e "\033[31m请先完成必选设置!\033[0m"
|
||||
fi
|
||||
sleep 1
|
||||
set_shadowsocks
|
||||
;;
|
||||
*) errornum ;;
|
||||
esac
|
||||
}
|
||||
set_tailscale(){
|
||||
[ -n "$ts_auth_key" ] && ts_auth_key_info='*********'
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译Tailscale模块\n如需使用请先前往自定义内核更新完整版内核文件!"
|
||||
echo -e "创建秘钥:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m"
|
||||
echo -e "访问非本机目标需允许通告:\033[32;4mhttps://login.tailscale.com\033[0m"
|
||||
echo -e "访问非本机目标需在终端设置使用Subnet或EXIT-NODE模式"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mTailscale服务 \033[32m$ts_service\033[0m"
|
||||
echo -e " 2 设置\033[36m秘钥\033[0m(Auth Key) $ts_auth_key_info"
|
||||
echo -e " 3 通告路由\033[33m内网地址\033[0m(Subnet) \033[36m$ts_subnet\033[0m"
|
||||
echo -e " 4 通告路由\033[31m全部流量\033[0m(EXIT-NODE) \033[36m$ts_exit_node\033[0m"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0) ;;
|
||||
@@ -412,17 +459,17 @@ set_tailscale(){
|
||||
2)
|
||||
read -p "请输入秘钥(输入0删除) > " text
|
||||
[ "$text" = 0 ] && unset ts_auth_key ts_auth_key_info || ts_auth_key="$text"
|
||||
[ -n "$ts_auth_key" ] && setconfig ts_auth_key "$ts_auth_key" "$CFG"
|
||||
setconfig ts_auth_key "$ts_auth_key" "$GT_CFG_PATH"
|
||||
set_tailscale
|
||||
;;
|
||||
3)
|
||||
[ "$ts_subnet" = true ] && ts_subnet=false || ts_subnet=true
|
||||
setconfig ts_subnet "$ts_subnet" "$CFG"
|
||||
setconfig ts_subnet "$ts_subnet" "$GT_CFG_PATH"
|
||||
set_tailscale
|
||||
;;
|
||||
4)
|
||||
[ "$ts_exit_node" = true ] && ts_exit_node=false || ts_exit_node=true
|
||||
setconfig ts_exit_node "$ts_exit_node" "$CFG"
|
||||
setconfig ts_exit_node "$ts_exit_node" "$GT_CFG_PATH"
|
||||
set_tailscale
|
||||
;;
|
||||
*) errornum ;;
|
||||
@@ -432,21 +479,21 @@ set_wireguard(){
|
||||
[ -n "$wg_public_key" ] && wgp_key_info='*********' || unset wgp_key_info
|
||||
[ -n "$wg_private_key" ] && wgv_key_info='*********' || unset wgv_key_info
|
||||
[ -n "$wg_pre_shared_key" ] && wgpsk_key_info='*********' || unset wgpsk_key_info
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译WireGuard模块\n如需使用请先前往自定义内核更新完整版内核文件!"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mWireguard服务 \033[32m$wg_service\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 2 设置\033[36mEndpoint地址\033[0m: \033[36m$wg_server\033[0m"
|
||||
echo -e " 3 设置\033[36mEndpoint端口\033[0m: \033[36m$wg_port\033[0m"
|
||||
echo -e " 4 设置\033[36m公钥-PublicKey\033[0m: \033[36m$wgp_key_info\033[0m"
|
||||
echo -e " 5 设置\033[36m密钥-PresharedKey\033[0m: \033[36m$wgpsk_key_info\033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 6 设置\033[33m私钥-PrivateKey\033[0m: \033[33m$wgv_key_info\033[0m"
|
||||
echo -e " 7 设置\033[33m组网IPV4地址\033[0m: \033[33m$wg_ipv4\033[0m"
|
||||
echo -e " 8 可选\033[33m组网IPV6地址\033[0m: \033[33m$wg_ipv6\033[0m"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo -----------------------------------------------
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0) ;;
|
||||
@@ -466,31 +513,31 @@ set_wireguard(){
|
||||
case "$num" in
|
||||
2)
|
||||
wg_server="$text"
|
||||
setconfig wg_server "$text" "$CFG"
|
||||
setconfig wg_server "$text" "$GT_CFG_PATH"
|
||||
;;
|
||||
3)
|
||||
wg_port="$text"
|
||||
setconfig wg_port "$text" "$CFG"
|
||||
setconfig wg_port "$text" "$GT_CFG_PATH"
|
||||
;;
|
||||
4)
|
||||
wg_public_key="$text"
|
||||
setconfig wg_public_key "$text" "$CFG"
|
||||
setconfig wg_public_key "$text" "$GT_CFG_PATH"
|
||||
;;
|
||||
5)
|
||||
wg_pre_shared_key="$text"
|
||||
setconfig wg_pre_shared_key "$text" "$CFG"
|
||||
setconfig wg_pre_shared_key "$text" "$GT_CFG_PATH"
|
||||
;;
|
||||
6)
|
||||
wg_private_key="$text"
|
||||
setconfig wg_private_key "$text" "$CFG"
|
||||
setconfig wg_private_key "$text" "$GT_CFG_PATH"
|
||||
;;
|
||||
7)
|
||||
wg_ipv4="$text"
|
||||
setconfig wg_ipv4 "$text" "$CFG"
|
||||
setconfig wg_ipv4 "$text" "$GT_CFG_PATH"
|
||||
;;
|
||||
8)
|
||||
wg_ipv6="$text"
|
||||
setconfig wg_ipv6 "$text" "$CFG"
|
||||
setconfig wg_ipv6 "$text" "$GT_CFG_PATH"
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
#工具脚本
|
||||
|
||||
#工具与优化
|
||||
tools() {
|
||||
ssh_tools() {
|
||||
@@ -250,51 +250,8 @@ log_pusher() {
|
||||
}
|
||||
else
|
||||
#echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m"
|
||||
private_bot() {
|
||||
echo -e "请先通过 \033[32;4mhttps://t.me/BotFather\033[0m 申请TG机器人并获取其\033[36mAPI TOKEN\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入你获取到的API TOKEN > " TOKEN
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "请向\033[32m你申请的机器人\033[33m而不是BotFather!\033[0m"
|
||||
url_tg=https://api.telegram.org/bot${TOKEN}/getUpdates
|
||||
}
|
||||
public_bot() {
|
||||
echo -e "请向机器人:\033[32;4mhttps://t.me/ShellCrashtg_bot\033[0m"
|
||||
TOKEN=publictoken
|
||||
url_tg=https://tgbot.jwsc.eu.org/publictoken/getUpdates
|
||||
}
|
||||
set_bot() {
|
||||
echo -e "发送此秘钥: \033[30;46m$public_key\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "我已经发送完成(1/0) > " res
|
||||
if [ "$res" = 1 ]; then
|
||||
[ -n "$authentication" ] && auth="$authentication@"
|
||||
export https_proxy="http://${auth}127.0.0.1:$mix_port"
|
||||
if curl --version >/dev/null 2>&1; then
|
||||
chat=$(curl -kfsSl $url_tg 2>/dev/null)
|
||||
else
|
||||
chat=$(wget -Y on -q -O - $url_tg)
|
||||
fi
|
||||
[ -n "$chat" ] && chat_ID=$(echo $chat | sed 's/"update_id":/{\n"update_id":/g' | grep "$public_key" | head -n1 | grep -oE '"id":.*,"is_bot' | sed s'/"id"://' | sed s'/,"is_bot//')
|
||||
[ -z "$chat_ID" ] && [ "$TOKEN" != 'publictoken' ] && {
|
||||
echo -e "\033[31m无法获取对话ID,请返回重新设置或手动输入ChatID!\033[0m"
|
||||
echo -e "通常访问 \033[32;4m$url_tg\033[0m \n\033[36m即可看到ChatID\033[0m"
|
||||
read -p "请手动输入ChatID > " chat_ID
|
||||
}
|
||||
if echo "$chat_ID" | grep -qE '^[0-9]{8,}$'; then
|
||||
push_TG=$TOKEN
|
||||
setconfig push_TG $TOKEN
|
||||
setconfig chat_ID $chat_ID
|
||||
"$CRASHDIR"/start.sh logger "已完成Telegram日志推送设置!" 32
|
||||
else
|
||||
echo -e "\033[31m无法获取对话ID,请重新配置!\033[0m"
|
||||
sleep 1
|
||||
chose_bot
|
||||
fi
|
||||
fi
|
||||
}
|
||||
. "$CRASHDIR"/menus/bot_tg_bind.sh
|
||||
chose_bot() {
|
||||
public_key=$(cat /proc/sys/kernel/random/boot_id | sed 's/.*-//')
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 使用公共机器人 ——不依赖内核服务"
|
||||
echo -e " 2 使用私人机器人 ——需要额外申请"
|
||||
@@ -303,11 +260,11 @@ log_pusher() {
|
||||
case $num in
|
||||
1)
|
||||
public_bot
|
||||
set_bot
|
||||
set_bot && tg_push_token || chose_bot
|
||||
;;
|
||||
2)
|
||||
private_bot
|
||||
set_bot
|
||||
set_bot && tg_push_token || chose_bot
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
|
||||
47
scripts/menus/bot_tg_bind.sh
Normal file
47
scripts/menus/bot_tg_bind.sh
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/bin/sh
|
||||
|
||||
. "$CRASHDIR"/libs/web_json.sh
|
||||
|
||||
private_bot() {
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "请先通过 \033[32;4mhttps://t.me/BotFather\033[0m 申请TG机器人并获取其\033[36mAPI TOKEN\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入你获取到的API TOKEN > " TOKEN
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "请向\033[32m你申请的机器人\033[33m而不是BotFather!\033[0m"
|
||||
url_tg=https://api.telegram.org/bot${TOKEN}/getUpdates
|
||||
}
|
||||
public_bot() {
|
||||
echo -e "请向机器人:\033[32;4mhttps://t.me/ShellCrashtg_bot\033[0m"
|
||||
TOKEN=publictoken
|
||||
url_tg=https://tgbot.jwsc.eu.org/publictoken/getUpdates
|
||||
}
|
||||
tg_push_token(){
|
||||
push_TG="$TOKEN"
|
||||
setconfig push_TG "$TOKEN"
|
||||
setconfig chat_ID "$chat_ID"
|
||||
"$CRASHDIR"/start.sh logger "已完成Telegram日志推送设置!" 32
|
||||
}
|
||||
set_bot() {
|
||||
public_key=$(cat /proc/sys/kernel/random/boot_id | sed 's/.*-//')
|
||||
echo -e "发送此秘钥: \033[30;46m$public_key\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "我已经发送完成(1/0) > " res
|
||||
if [ "$res" = 1 ]; then
|
||||
chat=$(web_json_get $url_tg 2>/dev/null)
|
||||
[ -n "$chat" ] && chat_ID=$(echo $chat | sed 's/"update_id":/{\n"update_id":/g' | grep "$public_key" | head -n1 | grep -oE '"id":.*,"is_bot' | sed s'/"id"://' | sed s'/,"is_bot//')
|
||||
[ -z "$chat_ID" ] && [ "$TOKEN" != 'publictoken' ] && {
|
||||
echo -e "\033[31m无法获取对话ID,请返回重新设置或手动输入ChatID!\033[0m"
|
||||
echo -e "通常访问 \033[32;4m$url_tg\033[0m \n\033[36m即可看到ChatID\033[0m"
|
||||
read -p "请手动输入ChatID > " chat_ID
|
||||
}
|
||||
if echo "$chat_ID" | grep -qE '^[0-9]{8,}$'; then
|
||||
return 0
|
||||
else
|
||||
echo -e "\033[31m无法获取对话ID,请重新配置!\033[0m"
|
||||
sleep 1
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
146
scripts/menus/task_cmd.sh
Normal file
146
scripts/menus/task_cmd.sh
Normal file
@@ -0,0 +1,146 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
#加载全局变量
|
||||
[ -z "$CRASHDIR" ] && CRASHDIR=$( cd $(dirname $0);cd ..;pwd)
|
||||
. "$CRASHDIR"/libs/get_config.sh
|
||||
#加载工具
|
||||
. "$CRASHDIR"/libs/check_cmd.sh
|
||||
. "$CRASHDIR"/libs/set_config.sh
|
||||
. "$CRASHDIR"/libs/web_get_bin.sh
|
||||
. "$CRASHDIR"/libs/logger.sh
|
||||
|
||||
task_logger(){
|
||||
[ "$task_push" = 1 ] && push= || push=off
|
||||
[ -n "$2" -a "$2" != 0 ] && echo -e "\033[$2m$1\033[0m"
|
||||
[ "$3" = 'off' ] && push=off
|
||||
echo "$1" |grep -qE '(每隔|时每)([1-9]|[1-9][0-9])分钟' && push=off
|
||||
logger "$1" 0 "$push"
|
||||
}
|
||||
|
||||
#任务命令
|
||||
check_update(){ #检查更新工具
|
||||
get_bin "$TMPDIR"/crashversion "$1" echooff
|
||||
[ "$?" = "0" ] && . "$TMPDIR"/crashversion 2>/dev/null
|
||||
rm -rf "$TMPDIR"/crashversion
|
||||
}
|
||||
update_core(){ #自动更新内核
|
||||
#检查版本
|
||||
check_update bin/version
|
||||
crash_v_new=$(eval echo \$${crashcore}_v)
|
||||
if [ -z "$crash_v_new" -o "$crash_v_new" = "$core_v" ];then
|
||||
task_logger "任务【自动更新内核】中止-未检测到版本更新"
|
||||
return 0
|
||||
else
|
||||
. "$CRASHDIR"/libs/core_webget.sh && core_webget #调用下载工具
|
||||
case "$?" in
|
||||
0)
|
||||
task_logger "任务【自动更新内核】下载完成,正在重启服务!"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 0
|
||||
;;
|
||||
1)
|
||||
task_logger "任务【自动更新内核】出错-下载失败!"
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
task_logger "任务【自动更新内核】出错-内核校验失败!"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
update_scripts(){ #自动更新脚本
|
||||
#检查版本
|
||||
check_update version
|
||||
if [ -z "$versionsh" -o "$versionsh" = "versionsh_l" ];then
|
||||
task_logger "任务【自动更新脚本】中止-未检测到版本更新"
|
||||
return 0
|
||||
else
|
||||
get_bin "$TMPDIR"/clashfm.tar.gz "bin/update.tar.gz"
|
||||
if [ "$?" != "0" ];then
|
||||
rm -rf "$TMPDIR"/clashfm.tar.gz
|
||||
task_logger "任务【自动更新内核】出错-下载失败!"
|
||||
return 1
|
||||
else
|
||||
#停止服务
|
||||
"$CRASHDIR"/start.sh stop
|
||||
#解压
|
||||
tar -zxf "$TMPDIR"/clashfm.tar.gz ${tar_para} -C "$CRASHDIR"/
|
||||
if [ $? -ne 0 ];then
|
||||
rm -rf "$TMPDIR"/clashfm.tar.gz
|
||||
task_logger "任务【自动更新内核】出错-解压失败!"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 1
|
||||
else
|
||||
. "$CRASHDIR"/init.sh >/dev/null
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
update_mmdb(){ #自动更新数据库
|
||||
getgeo(){
|
||||
#检查版本
|
||||
check_update bin/version
|
||||
geo_v="$(echo $2 | awk -F "." '{print $1}')_v" #获取版本号类型比如Country_v
|
||||
geo_v_new=$GeoIP_v
|
||||
geo_v_now=$(eval echo \$$geo_v)
|
||||
if [ -z "$geo_v_new" -o "$geo_v_new" = "$geo_v_now" ];then
|
||||
task_logger "任务【自动更新数据库文件】跳过-未检测到$2版本更新"
|
||||
else
|
||||
#更新文件
|
||||
get_bin "$TMPDIR"/$1 "bin/geodata/$2"
|
||||
if [ "$?" != "0" ];then
|
||||
task_logger "任务【自动更新数据库文件】更新【$2】下载失败!"
|
||||
rm -rf "$TMPDIR"/$1
|
||||
else
|
||||
mv -f "$TMPDIR"/$1 "$BINDIR"/$1
|
||||
setconfig $geo_v $GeoIP_v
|
||||
task_logger "任务【自动更新数据库文件】更新【$2】成功!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
[ -n "${cn_mini_v}" -a -s "$CRASHDIR"/Country.mmdb ] && getgeo Country.mmdb cn_mini.mmdb
|
||||
[ -n "${china_ip_list_v}" -a -s "$CRASHDIR"/cn_ip.txt ] && getgeo cn_ip.txt china_ip_list.txt
|
||||
[ -n "${china_ipv6_list_v}" -a -s "$CRASHDIR"/cn_ipv6.txt ] && getgeo cn_ipv6.txt china_ipv6_list.txt
|
||||
[ -n "${geosite_v}" -a -s "$CRASHDIR"/GeoSite.dat ] && getgeo GeoSite.dat geosite.dat
|
||||
[ -n "${geoip_cn_v}" -a -s "$CRASHDIR"/geoip.db ] && getgeo geoip.db geoip_cn.db
|
||||
[ -n "${geosite_cn_v}" -a -s "$CRASHDIR"/geosite.db ] && getgeo geosite.db geosite_cn.db
|
||||
return 0
|
||||
}
|
||||
reset_firewall(){ #重设透明路由防火墙
|
||||
"$CRASHDIR"/start.sh stop_firewall
|
||||
"$CRASHDIR"/start.sh afstart
|
||||
}
|
||||
ntp(){
|
||||
[ "$crashcore" != singbox ] && ckcmd ntpd && ntpd -n -q -p 203.107.6.88 >/dev/null 2>&1 || exit 0
|
||||
}
|
||||
web_save_auto(){
|
||||
. "$CRASHDIR"/libs/web_save.sh && web_save
|
||||
}
|
||||
update_config() { #更新订阅并重启
|
||||
. "$CRASHDIR"/starts/core_config.sh && get_core_config && "$CRASHDIR"/start.sh start
|
||||
}
|
||||
hotupdate() { #热更新订阅
|
||||
. "$CRASHDIR"/starts/core_config.sh && get_core_config &&
|
||||
. "$CRASHDIR"/starts/check_core.sh && check_core &&
|
||||
. "$CRASHDIR"/starts/"$target"_modify.sh && modify_"$format" && rm -rf "$TMPDIR"/CrashCore &&
|
||||
. "$CRASHDIR"/libs/web_restore.sh && put_save "http://127.0.0.1:$db_port/configs" "{\"path\":\"$CRASHDIR/config.$format\"}"
|
||||
exit $?
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
[1-9][0-9][0-9])
|
||||
task_command=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $2}')
|
||||
task_name=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $3}')
|
||||
#task_logger "任务$task_name 开始执行"
|
||||
eval $task_command && task_res=成功 || task_res=失败
|
||||
task_logger "任务【$2】执行$task_res"
|
||||
;;
|
||||
*)
|
||||
"$1"
|
||||
;;
|
||||
esac
|
||||
@@ -74,6 +74,8 @@ stop)
|
||||
cronset '保守模式守护进程'
|
||||
cronset '运行时每'
|
||||
cronset '流媒体预解析'
|
||||
#停止tg机器人
|
||||
PID=$(pidof /bin/sh "$CRASHDIR"/menus/bot_tg.sh) && [ -n "$PID" ] && kill -9 $PID >/dev/null 2>&1
|
||||
#多种方式结束进程
|
||||
|
||||
if [ "$start_old" != "已开启" -a "$USER" = "root" -a "$(cat /proc/1/comm)" = "systemd" ]; then
|
||||
@@ -89,7 +91,6 @@ stop)
|
||||
stop_firewall #清理路由策略
|
||||
fi
|
||||
PID=$(pidof CrashCore) && [ -n "$PID" ] && kill -9 $PID >/dev/null 2>&1
|
||||
PID=$(pidof /bin/sh "$CRASHDIR"/menus/bot_tg.sh) && [ -n "$PID" ] && kill -9 $PID >/dev/null 2>&1
|
||||
#清理缓存目录
|
||||
rm -rf "$TMPDIR"/CrashCore
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user