mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-10-24 20:00:01 +00:00
Compare commits
16
Commits
f97d10de30
...
b6e4c629c5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6e4c629c5 | ||
|
|
87d2be57a4 | ||
|
|
f73b1c810a | ||
|
|
d55b5d23d0 | ||
|
|
240f611711 | ||
|
|
b26505d258 | ||
|
|
0c0de44aea | ||
|
|
b3b703778f | ||
|
|
881e71c83c | ||
|
|
1313c395e5 | ||
|
|
670eca688c | ||
|
|
a09506b3b3 | ||
|
|
529d16fa75 | ||
|
|
783453aabf | ||
|
|
5599b05671 | ||
|
|
3615268631 |
Binary file not shown.
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
meta_v=v1.19.17
|
meta_v=v1.19.17
|
||||||
singboxr_v=1.13.0-alpha.27
|
singboxr_v=1.13.0-alpha.27
|
||||||
versionsh=1.9.5beta3
|
versionsh=1.9.6alpha1
|
||||||
GeoIP_v=20251205
|
GeoIP_v=20251205
|
||||||
|
|||||||
+16
-5
@@ -83,16 +83,27 @@ for file in start.sh starts/bfstart.sh starts/afstart.sh starts/fw_stop.sh start
|
|||||||
done
|
done
|
||||||
setconfig versionsh_l $version
|
setconfig versionsh_l $version
|
||||||
#生成用于执行启动服务的变量文件
|
#生成用于执行启动服务的变量文件
|
||||||
[ ! -f "$CRASHDIR"/configs/command.env ] && {
|
DIRECTORIES_FILE="$CRASHDIR"/configs/directories.env
|
||||||
echo 'TMPDIR=/tmp/ShellCrash' > "$CRASHDIR"/configs/command.env
|
COMMAND_FILE="$CRASHDIR"/configs/command.env
|
||||||
echo "BINDIR=$CRASHDIR" >> "$CRASHDIR"/configs/command.env
|
if [ ! -f "$DIRECTORIES_FILE" ]; then
|
||||||
}
|
#迁移旧版中与启动命令混放的目录变量
|
||||||
|
if [ -f "$COMMAND_FILE" ]; then
|
||||||
|
. "$COMMAND_FILE"
|
||||||
|
fi
|
||||||
|
[ -z "$TMPDIR" ] && TMPDIR=/tmp/ShellCrash
|
||||||
|
[ -z "$BINDIR" ] && BINDIR=$CRASHDIR
|
||||||
|
printf 'TMPDIR=%s\nBINDIR=%s\n' "$TMPDIR" "$BINDIR" > "$DIRECTORIES_FILE"
|
||||||
|
[ -f "$COMMAND_FILE" ] && sed -i '/^TMPDIR=.*/d; /^BINDIR=.*/d' "$COMMAND_FILE"
|
||||||
|
else
|
||||||
|
. "$DIRECTORIES_FILE"
|
||||||
|
fi
|
||||||
|
[ -f "$COMMAND_FILE" ] || : > "$COMMAND_FILE"
|
||||||
if [ -n "$(grep 'crashcore=singbox' "$CFG_PATH")" ]; then
|
if [ -n "$(grep 'crashcore=singbox' "$CFG_PATH")" ]; then
|
||||||
COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"'
|
COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"'
|
||||||
else
|
else
|
||||||
COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"'
|
COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"'
|
||||||
fi
|
fi
|
||||||
setconfig COMMAND "$COMMAND" "$CRASHDIR"/configs/command.env
|
setconfig COMMAND "$COMMAND" "$COMMAND_FILE"
|
||||||
#设置防火墙执行模式
|
#设置防火墙执行模式
|
||||||
grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || {
|
grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || {
|
||||||
firewall_mod=iptables
|
firewall_mod=iptables
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# 检查配置文件
|
# 检查配置文件
|
||||||
[ -z "$TASKCFGDIR" ] && TASKCFGDIR="$CRASHDIR"/configs/task
|
[ -z "$TASKCFGDIR" ] && TASKCFGDIR="$CRASHDIR"/configs/task
|
||||||
[ -f "$CRASHDIR"/configs/ShellCrash.cfg ] || . "$CRASHDIR"/init.sh >/dev/null 2>&1
|
[ -f "$CRASHDIR"/configs/ShellCrash.cfg ] || . "$CRASHDIR"/init.sh >/dev/null 2>&1
|
||||||
|
[ -f "$CRASHDIR"/configs/directories.env ] && . "$CRASHDIR"/configs/directories.env >/dev/null 2>&1
|
||||||
. "$CRASHDIR"/configs/command.env >/dev/null 2>&1
|
. "$CRASHDIR"/configs/command.env >/dev/null 2>&1
|
||||||
. "$CRASHDIR"/configs/ShellCrash.cfg
|
. "$CRASHDIR"/configs/ShellCrash.cfg
|
||||||
|
|
||||||
@@ -15,6 +16,9 @@
|
|||||||
routing_mark=$((fwmark + 2))
|
routing_mark=$((fwmark + 2))
|
||||||
[ -z "$table" ] && table=100
|
[ -z "$table" ] && table=100
|
||||||
|
|
||||||
|
[ -z "$fakeip4" ] && fakeip4="198.18.0.0/15"
|
||||||
|
[ -z "$fakeip6" ] && fakeip6="2001:2::/64"
|
||||||
|
|
||||||
[ -z "$dns_nameserver" ] && {
|
[ -z "$dns_nameserver" ] && {
|
||||||
dns_nameserver='223.5.5.5, 1.2.4.8'
|
dns_nameserver='223.5.5.5, 1.2.4.8'
|
||||||
netstat -ntlup 2>/dev/null | grep -q '127.0.0.1:53' || ss -ntlup 2>/dev/null | grep -q '127.0.0.1:53' && dns_nameserver='127.0.0.1'
|
netstat -ntlup 2>/dev/null | grep -q '127.0.0.1:53' || ss -ntlup 2>/dev/null | grep -q '127.0.0.1:53' && dns_nameserver='127.0.0.1'
|
||||||
|
|||||||
+15
-10
@@ -1,10 +1,15 @@
|
|||||||
i=1
|
if [ "$network_check" = "OFF" ]; then
|
||||||
while [ -z "$test" -a "$i" -lt 30 ]; do
|
#复用网络检查开关:禁用自启网络检查时,也跳过启动后的面板端口校验
|
||||||
sleep 1
|
test=skip
|
||||||
if curl --version >/dev/null 2>&1; then
|
else
|
||||||
test=$(curl -s -H "Authorization: Bearer $secret" http://127.0.0.1:${db_port}/proxies | grep -o proxies)
|
i=1
|
||||||
else
|
while [ -z "$test" ] && [ "$i" -lt 30 ]; do
|
||||||
test=$(wget -q --header="Authorization: Bearer $secret" -O - http://127.0.0.1:${db_port}/proxies | grep -o proxies)
|
sleep 1
|
||||||
fi
|
if curl --version >/dev/null 2>&1; then
|
||||||
i=$((i + 1))
|
test=$(curl -s -H "Authorization: Bearer $secret" http://127.0.0.1:${db_port}/proxies | grep -o proxies)
|
||||||
done
|
else
|
||||||
|
test=$(wget -q --header="Authorization: Bearer $secret" -O - http://127.0.0.1:${db_port}/proxies | grep -o proxies)
|
||||||
|
fi
|
||||||
|
i=$((i + 1))
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ setboot() {
|
|||||||
msg_alert "\033[33m$SETBOOT_MINI_DISABLED\033[0m"
|
msg_alert "\033[33m$SETBOOT_MINI_DISABLED\033[0m"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env
|
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
|
||||||
sleep 1
|
sleep 1
|
||||||
;;
|
;;
|
||||||
5)
|
5)
|
||||||
@@ -155,8 +155,8 @@ setboot() {
|
|||||||
set_usb_dir() {
|
set_usb_dir() {
|
||||||
while true; do
|
while true; do
|
||||||
comp_box "$SETBOOT_SELECT_INSTALL_DIR"
|
comp_box "$SETBOOT_SELECT_INSTALL_DIR"
|
||||||
du -hL /mnt |
|
du -hL -d 2 /mnt |
|
||||||
awk '{print NR") "$2" ($SETBOOT_SPACE_USED$1")"}' |
|
awk '{print NR") "$2" ($SETBOOT_SPACE_USED"$1")"}' |
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
content_line "$line"
|
content_line "$line"
|
||||||
done
|
done
|
||||||
@@ -164,7 +164,7 @@ setboot() {
|
|||||||
content_line "0) $COMMON_BACK"
|
content_line "0) $COMMON_BACK"
|
||||||
separator_line "="
|
separator_line "="
|
||||||
read -r -p "$COMMON_INPUT> " num
|
read -r -p "$COMMON_INPUT> " num
|
||||||
BINDIR=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
|
BINDIR=$(du -hL -d 2 /mnt | awk '{print $2}' | sed -n "$num"p)
|
||||||
if [ "$num" = 0 ]; then
|
if [ "$num" = 0 ]; then
|
||||||
return 1
|
return 1
|
||||||
elif [ -z "$BINDIR" ]; then
|
elif [ -z "$BINDIR" ]; then
|
||||||
@@ -203,7 +203,7 @@ setboot() {
|
|||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env
|
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
|
||||||
break
|
break
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -229,8 +229,8 @@ task_type() {
|
|||||||
[ -n "$cron_time" ] && set_service running "$task_id" "$TASK5_RUNNING_PREFIX$time_des$task_name" "$cron_time"
|
[ -n "$cron_time" ] && set_service running "$task_id" "$TASK5_RUNNING_PREFIX$time_des$task_name" "$cron_time"
|
||||||
;;
|
;;
|
||||||
8)
|
8)
|
||||||
comp_box "$TASK5_AFFW_HINT"
|
comp_box "$TASK5_AFFW_HINT" \
|
||||||
"$TASK5_CONFIRM_CONTINUE"
|
"$TASK5_CONFIRM_CONTINUE"
|
||||||
btm_box "1) $TASK5_YES" \
|
btm_box "1) $TASK5_YES" \
|
||||||
"0) $TASK5_NO"
|
"0) $TASK5_NO"
|
||||||
read -r -p "$COMMON_INPUT> " res
|
read -r -p "$COMMON_INPUT> " res
|
||||||
|
|||||||
@@ -15,6 +15,19 @@ else
|
|||||||
fi
|
fi
|
||||||
URI_EXP='ss|vmess|vless|trojan|tuic|anytls|shadowtls|hysteria(2)?'
|
URI_EXP='ss|vmess|vless|trojan|tuic|anytls|shadowtls|hysteria(2)?'
|
||||||
|
|
||||||
|
# 按变量名字面值删除订阅配置
|
||||||
|
delete_provider() {
|
||||||
|
provider_name=$1
|
||||||
|
provider_file=$2
|
||||||
|
[ -f "$provider_file" ] || return 0
|
||||||
|
provider_tmp="$provider_file.tmp.$$"
|
||||||
|
NAME="$provider_name" awk 'index($0, ENVIRON["NAME"] " ") != 1' "$provider_file" >"$provider_tmp" &&
|
||||||
|
cat "$provider_tmp" >"$provider_file"
|
||||||
|
provider_status=$?
|
||||||
|
rm -f "$provider_tmp"
|
||||||
|
return "$provider_status"
|
||||||
|
}
|
||||||
|
|
||||||
# 配置文件主界面
|
# 配置文件主界面
|
||||||
set_core_config() {
|
set_core_config() {
|
||||||
while true; do
|
while true; do
|
||||||
@@ -275,10 +288,10 @@ setproviders() {
|
|||||||
;;
|
;;
|
||||||
d)
|
d)
|
||||||
if [ -n "$name" ] && [ -n "$link" ]; then
|
if [ -n "$name" ] && [ -n "$link" ]; then
|
||||||
sed -i "/^$name /d" "$CRASHDIR"/configs/providers.cfg 2>/dev/null
|
delete_provider "$name" "$CRASHDIR"/configs/providers.cfg 2>/dev/null
|
||||||
msg_alert "\033[32m$COMMON_SUCCESS\033[0m"
|
msg_alert "\033[32m$COMMON_SUCCESS\033[0m"
|
||||||
elif [ -n "$name" ] && [ -n "$link_uri" ]; then
|
elif [ -n "$name" ] && [ -n "$link_uri" ]; then
|
||||||
sed -i "/^$name /d" "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null
|
delete_provider "$name" "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null
|
||||||
msg_alert "\033[32m$COMMON_SUCCESS\033[0m"
|
msg_alert "\033[32m$COMMON_SUCCESS\033[0m"
|
||||||
fi
|
fi
|
||||||
break
|
break
|
||||||
@@ -324,8 +337,8 @@ setproviders() {
|
|||||||
# 保存
|
# 保存
|
||||||
saveproviders() {
|
saveproviders() {
|
||||||
[ -n "$name" ] && {
|
[ -n "$name" ] && {
|
||||||
[ -s "$CRASHDIR"/configs/providers.cfg ] && sed -i "/^$last_name /d" "$CRASHDIR"/configs/providers.cfg
|
[ -s "$CRASHDIR"/configs/providers.cfg ] && delete_provider "$last_name" "$CRASHDIR"/configs/providers.cfg
|
||||||
[ -s "$CRASHDIR"/configs/providers_uri.cfg ] && sed -i "/^$last_name /d" "$CRASHDIR"/configs/providers_uri.cfg
|
[ -s "$CRASHDIR"/configs/providers_uri.cfg ] && delete_provider "$last_name" "$CRASHDIR"/configs/providers_uri.cfg
|
||||||
}
|
}
|
||||||
if [ -n "$name" ] && [ -n "$link" ]; then
|
if [ -n "$name" ] && [ -n "$link" ]; then
|
||||||
echo "$name $link $interval $interval2 $ua #$exclude_w #$include_w" >>"$CRASHDIR"/configs/providers.cfg
|
echo "$name $link $interval $interval2 $ua #$exclude_w #$include_w" >>"$CRASHDIR"/configs/providers.cfg
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ running_status(){
|
|||||||
if [ -n "$start_time" ]; then
|
if [ -n "$start_time" ]; then
|
||||||
time=$(($(date +%s) - start_time))
|
time=$(($(date +%s) - start_time))
|
||||||
day=$((time / 86400))
|
day=$((time / 86400))
|
||||||
[ "$day" = "0" ] && day='' || day="$dayD"
|
[ "$day" = "0" ] && day='' || day="${day}D"
|
||||||
time=$(date -u -d @${time} +%H:%M:%S)
|
time=$(date -u -d @${time} +%H:%M:%S)
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ hotupdate() { #热更新订阅
|
|||||||
. "$CRASHDIR"/starts/core_config.sh && get_core_config &&
|
. "$CRASHDIR"/starts/core_config.sh && get_core_config &&
|
||||||
. "$CRASHDIR"/starts/check_core.sh && check_core &&
|
. "$CRASHDIR"/starts/check_core.sh && check_core &&
|
||||||
. "$CRASHDIR"/starts/"$target"_modify.sh && modify_"$format" && rm -rf "$TMPDIR"/CrashCore &&
|
. "$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\":\"$TMPDIR/config.$format\"}"
|
. "$CRASHDIR"/libs/web_restore.sh && put_save "http://127.0.0.1:$db_port/configs" "{\"path\":\"$CRASHDIR/config.$format\"}"
|
||||||
exit $?
|
exit $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ userguide() {
|
|||||||
read -r -p "$COMMON_INPUT_R" res
|
read -r -p "$COMMON_INPUT_R" res
|
||||||
[ "$res" = 1 ] && {
|
[ "$res" = 1 ] && {
|
||||||
BINDIR=/tmp/ShellCrash
|
BINDIR=/tmp/ShellCrash
|
||||||
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env
|
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
. "$CRASHDIR"/libs/check_target.sh
|
. "$CRASHDIR"/libs/check_target.sh
|
||||||
. "$CRASHDIR"/libs/core_tools.sh
|
. "$CRASHDIR"/libs/core_tools.sh
|
||||||
|
. "$CRASHDIR"/configs/directories.env
|
||||||
. "$CRASHDIR"/configs/command.env
|
. "$CRASHDIR"/configs/command.env
|
||||||
|
|
||||||
check_core() { #检查及下载内核文件
|
check_core() { #检查及下载内核文件
|
||||||
|
|||||||
@@ -4,6 +4,9 @@
|
|||||||
check_config() { #检查clash配置文件
|
check_config() { #检查clash配置文件
|
||||||
#检测节点或providers
|
#检测节点或providers
|
||||||
sed -n "/^proxies:/,/^[a-z]/ { /^[a-z]/d; p; }" "$core_config_new" >"$TMPDIR"/proxies.yaml
|
sed -n "/^proxies:/,/^[a-z]/ { /^[a-z]/d; p; }" "$core_config_new" >"$TMPDIR"/proxies.yaml
|
||||||
|
if [ ! -s "$TMPDIR"/proxies.yaml ]; then
|
||||||
|
sed -n 's/^proxies:[[:space:]]*\[\(.*\)\][[:space:]]*$/ - \1/p' "$core_config_new" >"$TMPDIR"/proxies.yaml
|
||||||
|
fi
|
||||||
if ! grep -Eq 'server:|server":|server'\'':' "$TMPDIR"/proxies.yaml && ! grep -q 'proxy-providers:' "$core_config_new"; then
|
if ! grep -Eq 'server:|server":|server'\'':' "$TMPDIR"/proxies.yaml && ! grep -q 'proxy-providers:' "$core_config_new"; then
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
logger "获取到了配置文件【$core_config_new】,但似乎并不包含正确的节点信息!" 31
|
logger "获取到了配置文件【$core_config_new】,但似乎并不包含正确的节点信息!" 31
|
||||||
@@ -38,4 +41,4 @@ check_config() { #检查clash配置文件
|
|||||||
done <"$TMPDIR"/clash_proxies
|
done <"$TMPDIR"/clash_proxies
|
||||||
rm -rf "$TMPDIR"/clash_proxies
|
rm -rf "$TMPDIR"/clash_proxies
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ dns:
|
|||||||
default-nameserver: [ $dns_resolver ]
|
default-nameserver: [ $dns_resolver ]
|
||||||
direct-nameserver: [ $dns_nameserver ]
|
direct-nameserver: [ $dns_nameserver ]
|
||||||
enhanced-mode: fake-ip
|
enhanced-mode: fake-ip
|
||||||
fake-ip-range: 198.18.0.0/15
|
fake-ip-range: $fakeip4
|
||||||
fake-ip-range6: fc00::/16
|
fake-ip-range6: $fakeip6
|
||||||
fake-ip-filter:
|
fake-ip-filter:
|
||||||
EOF
|
EOF
|
||||||
if [ "$dns_mod" = "mix" ] || [ "$dns_mod" = "fake-ip" ]; then
|
if [ "$dns_mod" = "mix" ] || [ "$dns_mod" = "fake-ip" ]; then
|
||||||
@@ -136,6 +136,10 @@ split_and_customize_yaml_parts() {
|
|||||||
yaml_char='proxies proxy-groups proxy-providers rules rule-providers sub-rules listeners'
|
yaml_char='proxies proxy-groups proxy-providers rules rule-providers sub-rules listeners'
|
||||||
for char in $yaml_char; do
|
for char in $yaml_char; do
|
||||||
sed -n "/^$char:/,/^[a-z]/ { /^[a-z]/d; p; }" $core_config >"$TMPDIR"/${char}.yaml
|
sed -n "/^$char:/,/^[a-z]/ { /^[a-z]/d; p; }" $core_config >"$TMPDIR"/${char}.yaml
|
||||||
|
#支持 Clash 常见的单行 flow-style 节点列表,例如 proxies: [{name: ..., type: ...}]
|
||||||
|
if [ "$char" = proxies ] && [ ! -s "$TMPDIR"/proxies.yaml ]; then
|
||||||
|
sed -n 's/^proxies:[[:space:]]*\[\(.*\)\][[:space:]]*$/ - \1/p' "$core_config" >"$TMPDIR"/proxies.yaml
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
#跳过本地tls证书验证
|
#跳过本地tls证书验证
|
||||||
[ "$skip_cert" != "OFF" ] && sed -i 's/skip-cert-verify: false/skip-cert-verify: true/' "$TMPDIR"/proxies.yaml ||
|
[ "$skip_cert" != "OFF" ] && sed -i 's/skip-cert-verify: false/skip-cert-verify: true/' "$TMPDIR"/proxies.yaml ||
|
||||||
|
|||||||
@@ -88,8 +88,8 @@ start_ipt_route() { #iptables-route通用工具
|
|||||||
else
|
else
|
||||||
"$1" $w -t "$2" -I "$3" -p "$5" -j "$4"
|
"$1" $w -t "$2" -I "$3" -p "$5" -j "$4"
|
||||||
fi
|
fi
|
||||||
[ "$dns_mod" = "mix" -o "$dns_mod" = "fake-ip" ] && [ "$common_ports" = "ON" ] && [ "$1" = iptables ] && "$1" $w -t "$2" -I "$3" -p "$5" -d 198.18.0.0/15 -j "$4"
|
[ "$dns_mod" = "mix" -o "$dns_mod" = "fake-ip" ] && [ "$common_ports" = "ON" ] && [ "$1" = iptables ] && "$1" $w -t "$2" -I "$3" -p "$5" -d $fakeip4 -j "$4"
|
||||||
[ "$dns_mod" = "mix" -o "$dns_mod" = "fake-ip" ] && [ "$common_ports" = "ON" ] && [ "$1" = ip6tables ] && "$1" $w -t "$2" -I "$3" -p "$5" -d fc00::/16 -j "$4"
|
[ "$dns_mod" = "mix" -o "$dns_mod" = "fake-ip" ] && [ "$common_ports" = "ON" ] && [ "$1" = ip6tables ] && "$1" $w -t "$2" -I "$3" -p "$5" -d $fakeip6 -j "$4"
|
||||||
}
|
}
|
||||||
[ "$5" = "tcp" -o "$5" = "all" ] && proxy_set "$1" "$2" "$3" "$4" tcp
|
[ "$5" = "tcp" -o "$5" = "all" ] && proxy_set "$1" "$2" "$3" "$4" tcp
|
||||||
[ "$5" = "udp" -o "$5" = "all" ] && proxy_set "$1" "$2" "$3" "$4" udp
|
[ "$5" = "udp" -o "$5" = "all" ] && proxy_set "$1" "$2" "$3" "$4" udp
|
||||||
|
|||||||
@@ -47,12 +47,12 @@ start_nft_route() { #nftables-route通用工具
|
|||||||
[ -z "$ports" ] && nft add rule inet shellcrash $1 tcp dport {"$mix_port, $redir_port, $tproxy_port"} return
|
[ -z "$ports" ] && nft add rule inet shellcrash $1 tcp dport {"$mix_port, $redir_port, $tproxy_port"} return
|
||||||
#过滤常用端口
|
#过滤常用端口
|
||||||
[ -n "$PORTS" ] && {
|
[ -n "$PORTS" ] && {
|
||||||
nft add rule inet shellcrash $1 ip daddr != {198.18.0.0/15} tcp dport != {$PORTS} return
|
nft add rule inet shellcrash $1 ip daddr != {$fakeip4} tcp dport != {$PORTS} return
|
||||||
nft add rule inet shellcrash $1 ip daddr != {198.18.0.0/15} udp dport != {$PORTS} return
|
nft add rule inet shellcrash $1 ip daddr != {$fakeip4} udp dport != {$PORTS} return
|
||||||
nft add rule inet shellcrash $1 ip6 daddr != {fc00::/16} tcp dport != {$PORTS} return
|
nft add rule inet shellcrash $1 ip6 daddr != {$fakeip6} tcp dport != {$PORTS} return
|
||||||
nft add rule inet shellcrash $1 ip6 daddr != {fc00::/16} udp dport != {$PORTS} return
|
nft add rule inet shellcrash $1 ip6 daddr != {$fakeip6} udp dport != {$PORTS} return
|
||||||
}
|
}
|
||||||
#nft add rule inet shellcrash $1 ip saddr 198.18.0.0/15 return
|
#nft add rule inet shellcrash $1 ip saddr $fakeip4 return
|
||||||
nft add rule inet shellcrash $1 ip daddr {$RESERVED_IP} return #过滤保留地址
|
nft add rule inet shellcrash $1 ip daddr {$RESERVED_IP} return #过滤保留地址
|
||||||
#过滤局域网设备
|
#过滤局域网设备
|
||||||
[ "$1" = 'prerouting' ] && {
|
[ "$1" = 'prerouting' ] && {
|
||||||
|
|||||||
+13
-13
@@ -50,18 +50,18 @@ ckcmd iptables && {
|
|||||||
$iptable -t mangle -D OUTPUT -p udp -j shellcrash_mark_out 2>/dev/null
|
$iptable -t mangle -D OUTPUT -p udp -j shellcrash_mark_out 2>/dev/null
|
||||||
fi
|
fi
|
||||||
#redir
|
#redir
|
||||||
$iptable -t nat -D PREROUTING -p tcp -d 198.18.0.0/15 -j shellcrash 2>/dev/null
|
$iptable -t nat -D PREROUTING -p tcp -d $fakeip4 -j shellcrash 2>/dev/null
|
||||||
$iptable -t nat -D OUTPUT -p tcp -d 198.18.0.0/15 -j shellcrash_out 2>/dev/null
|
$iptable -t nat -D OUTPUT -p tcp -d $fakeip4 -j shellcrash_out 2>/dev/null
|
||||||
#vm_dns
|
#vm_dns
|
||||||
$iptable -t nat -D PREROUTING -p tcp --dport 53 -j shellcrash_vm_dns 2>/dev/null
|
$iptable -t nat -D PREROUTING -p tcp --dport 53 -j shellcrash_vm_dns 2>/dev/null
|
||||||
$iptable -t nat -D PREROUTING -p udp --dport 53 -j shellcrash_vm_dns 2>/dev/null
|
$iptable -t nat -D PREROUTING -p udp --dport 53 -j shellcrash_vm_dns 2>/dev/null
|
||||||
#vm_redir
|
#vm_redir
|
||||||
$iptable -t nat -D PREROUTING -p tcp -d 198.18.0.0/15 -j shellcrash_vm 2>/dev/null
|
$iptable -t nat -D PREROUTING -p tcp -d $fakeip4 -j shellcrash_vm 2>/dev/null
|
||||||
#TPROXY&tun
|
#TPROXY&tun
|
||||||
$iptable -t mangle -D PREROUTING -p tcp -d 198.18.0.0/15 -j shellcrash_mark 2>/dev/null
|
$iptable -t mangle -D PREROUTING -p tcp -d $fakeip4 -j shellcrash_mark 2>/dev/null
|
||||||
$iptable -t mangle -D PREROUTING -p udp -d 198.18.0.0/15 -j shellcrash_mark 2>/dev/null
|
$iptable -t mangle -D PREROUTING -p udp -d $fakeip4 -j shellcrash_mark 2>/dev/null
|
||||||
$iptable -t mangle -D OUTPUT -p tcp -d 198.18.0.0/15 -j shellcrash_mark_out 2>/dev/null
|
$iptable -t mangle -D OUTPUT -p tcp -d $fakeip4 -j shellcrash_mark_out 2>/dev/null
|
||||||
$iptable -t mangle -D OUTPUT -p udp -d 198.18.0.0/15 -j shellcrash_mark_out 2>/dev/null
|
$iptable -t mangle -D OUTPUT -p udp -d $fakeip4 -j shellcrash_mark_out 2>/dev/null
|
||||||
$iptable -t mangle -D PREROUTING -m mark --mark $fwmark -p tcp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
$iptable -t mangle -D PREROUTING -m mark --mark $fwmark -p tcp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
||||||
$iptable -t mangle -D PREROUTING -m mark --mark $fwmark -p udp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
$iptable -t mangle -D PREROUTING -m mark --mark $fwmark -p udp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
||||||
#tun
|
#tun
|
||||||
@@ -121,15 +121,15 @@ ckcmd ip6tables && {
|
|||||||
$ip6table -t mangle -D OUTPUT -p udp -j shellcrashv6_mark_out 2>/dev/null
|
$ip6table -t mangle -D OUTPUT -p udp -j shellcrashv6_mark_out 2>/dev/null
|
||||||
fi
|
fi
|
||||||
#redir
|
#redir
|
||||||
$ip6table -t nat -D PREROUTING -p tcp -d fc00::/16 -j shellcrashv6 2>/dev/null
|
$ip6table -t nat -D PREROUTING -p tcp -d $fakeip6 -j shellcrashv6 2>/dev/null
|
||||||
$ip6table -t nat -D OUTPUT -p tcp -d fc00::/16 -j shellcrashv6_out 2>/dev/null
|
$ip6table -t nat -D OUTPUT -p tcp -d $fakeip6 -j shellcrashv6_out 2>/dev/null
|
||||||
$ip6table -D INPUT -p tcp --dport 53 -j REJECT 2>/dev/null
|
$ip6table -D INPUT -p tcp --dport 53 -j REJECT 2>/dev/null
|
||||||
$ip6table -D INPUT -p udp --dport 53 -j REJECT 2>/dev/null
|
$ip6table -D INPUT -p udp --dport 53 -j REJECT 2>/dev/null
|
||||||
#mark
|
#mark
|
||||||
$ip6table -t mangle -D PREROUTING -p tcp -d fc00::/16 -j shellcrashv6_mark 2>/dev/null
|
$ip6table -t mangle -D PREROUTING -p tcp -d $fakeip6 -j shellcrashv6_mark 2>/dev/null
|
||||||
$ip6table -t mangle -D PREROUTING -p udp -d fc00::/16 -j shellcrashv6_mark 2>/dev/null
|
$ip6table -t mangle -D PREROUTING -p udp -d $fakeip6 -j shellcrashv6_mark 2>/dev/null
|
||||||
$ip6table -t mangle -D OUTPUT -p tcp -d fc00::/16 -j shellcrashv6_mark_out 2>/dev/null
|
$ip6table -t mangle -D OUTPUT -p tcp -d $fakeip6 -j shellcrashv6_mark_out 2>/dev/null
|
||||||
$ip6table -t mangle -D OUTPUT -p udp -d fc00::/16 -j shellcrashv6_mark_out 2>/dev/null
|
$ip6table -t mangle -D OUTPUT -p udp -d $fakeip6 -j shellcrashv6_mark_out 2>/dev/null
|
||||||
$ip6table -D INPUT -p udp --dport 443 $set_cn_ip -j REJECT 2>/dev/null
|
$ip6table -D INPUT -p udp --dport 443 $set_cn_ip -j REJECT 2>/dev/null
|
||||||
$ip6table -t mangle -D PREROUTING -m mark --mark $fwmark -p tcp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
$ip6table -t mangle -D PREROUTING -m mark --mark $fwmark -p tcp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
||||||
$ip6table -t mangle -D PREROUTING -m mark --mark $fwmark -p udp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
$ip6table -t mangle -D PREROUTING -m mark --mark $fwmark -p udp -j TPROXY --on-port $tproxy_port 2>/dev/null
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ description="Custom proxy service for ShellCrash"
|
|||||||
#获取目录
|
#获取目录
|
||||||
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
|
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
|
||||||
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}')
|
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}')
|
||||||
. ${CRASHDIR}/configs/command.env #加载启动命令和启动目录
|
. "${CRASHDIR}"/configs/directories.env #加载启动目录
|
||||||
|
. "${CRASHDIR}"/configs/command.env #加载启动命令
|
||||||
|
|
||||||
# PID 文件
|
# PID 文件
|
||||||
pidfile="/run/shellcrash.pid"
|
pidfile="/run/shellcrash.pid"
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ USE_PROCD=1
|
|||||||
#获取目录
|
#获取目录
|
||||||
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
|
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
|
||||||
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}')
|
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}')
|
||||||
. "$CRASHDIR"/configs/command.env #加载启动命令和启动目录
|
. "$CRASHDIR"/configs/directories.env #加载启动目录
|
||||||
|
. "$CRASHDIR"/configs/command.env #加载启动命令
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
if [ -n "$(cat $CRASHDIR/configs/ShellCrash.cfg | grep 'firewall_area=5')" ]; then
|
if [ -n "$(cat $CRASHDIR/configs/ShellCrash.cfg | grep 'firewall_area=5')" ]; then
|
||||||
|
|||||||
@@ -226,8 +226,8 @@ EOF
|
|||||||
{
|
{
|
||||||
"tag": "dns_fakeip",
|
"tag": "dns_fakeip",
|
||||||
"type": "fakeip",
|
"type": "fakeip",
|
||||||
"inet4_range": "198.18.0.0/15",
|
"inet4_range": "$fakeip4",
|
||||||
"inet6_range": "fc00::/16"
|
"inet6_range": "$fakeip6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag": "dns_resolver",
|
"tag": "dns_resolver",
|
||||||
@@ -338,7 +338,8 @@ EOF
|
|||||||
. "$CRASHDIR"/libs/sb_inbounds.sh
|
. "$CRASHDIR"/libs/sb_inbounds.sh
|
||||||
}
|
}
|
||||||
if [ "$redir_mod" = "Mix" ] || [ "$redir_mod" = "Tun" ]; then
|
if [ "$redir_mod" = "Mix" ] || [ "$redir_mod" = "Tun" ]; then
|
||||||
[ "$ipv6_redir" = 'ON' ] && ipv6_address='"fd00:face:b00c::1/126",'
|
[ "$ipv6_redir" = 'ON' ] && [ -n "$(ip -6 rule show)" ] && ipv6_address='"fd00:face:b00c::1/126",'
|
||||||
|
[ "$(printf '%s' "$core_v" | cut -d. -f2)" -le 14 ] && stack='"stack": "system",'
|
||||||
cat >>"$TMPDIR"/jsons/tun.json <<EOF
|
cat >>"$TMPDIR"/jsons/tun.json <<EOF
|
||||||
{
|
{
|
||||||
"inbounds": [
|
"inbounds": [
|
||||||
@@ -350,8 +351,8 @@ EOF
|
|||||||
$ipv6_address
|
$ipv6_address
|
||||||
"198.18.0.1/15"
|
"198.18.0.1/15"
|
||||||
],
|
],
|
||||||
"auto_route": false,
|
$stack
|
||||||
"stack": "system"
|
"auto_route": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user