minor fix

This commit is contained in:
shioeri
2023-07-19 12:32:18 +07:00
parent b9e6ae0635
commit 64d615abbf
4 changed files with 73 additions and 71 deletions

View File

@@ -139,51 +139,53 @@ intranet6=(
ff00::/8
)
# monitor_local_ip() {
# if [ "${iptables}" != "ip6tables -w 64" ]; then
# local_ips=($(ip a | busybox awk '$1~/inet$/{print $2}'))
# else
# local_ips=($(ip -6 a | busybox awk '$1~/inet6$/{print $2}'))
# fi
# local_ip_number=${#local_ips[@]}
# rules_ips=($(${iptables} -t mangle -nvL FILTER_LOCAL_IP | grep "ACCEPT" | busybox awk '{print $9}'))
# rules_number=$(${iptables} -t mangle -L FILTER_LOCAL_IP | grep "ACCEPT" | wc -l)
monitor_local_ip() {
[ "${iptables}" != "ip6tables -w 64" ] && ipv=4 || ipv=6
if [ "${iptables}" != "ip6tables -w 64" ]; then
local_ips=($(ip a | busybox awk '$1~/inet$/{print $2}'))
else
local_ips=($(ip -6 a | busybox awk '$1~/inet6$/{print $2}'))
fi
local_ip_number=${#local_ips[@]}
rules_ips=($(${iptables} -t mangle -nvL FILTER_LOCAL_IP | grep "ACCEPT" | busybox awk '{print $9}'))
rules_number=$(${iptables} -t mangle -L FILTER_LOCAL_IP | grep "ACCEPT" | wc -l)
# if [ ${local_ip_number} -ne ${rules_number} ] ; then
# for rules_subnet in "${rules_ips[@]}" ; do
# wait_count=0
# a_subnet=$(busybox ipcalc -n ${rules_subnet} | busybox awk -F '=' '{print $2}')
# for local_subnet in "${local_ips[@]}" ; do
# b_subnet=$(busybox ipcalc -n ${local_subnet} | busybox awk -F '=' '{print $2}')
# if [ "${a_subnet}" != "${b_subnet}" ] ; then
# wait_count=$((wait_count + 1))
# if [ ${wait_count} -ge ${local_ip_number} ] ; then
# ${iptables} -t mangle -D FILTER_LOCAL_IP -d ${rules_subnet} -j ACCEPT
# fi
# fi
# done
# done
if [ ${local_ip_number} -ne ${rules_number} ] ; then
for rules_subnet in "${rules_ips[@]}" ; do
wait_count=0
a_subnet=$(busybox ipcalc -n ${rules_subnet} | busybox awk -F '=' '{print $2}')
for local_subnet in "${local_ips[@]}" ; do
b_subnet=$(busybox ipcalc -n ${local_subnet} | busybox awk -F '=' '{print $2}')
if [ "${a_subnet}" != "${b_subnet}" ] ; then
wait_count=$((wait_count + 1))
if [ ${wait_count} -ge ${local_ip_number} ] ; then
${iptables} -t mangle -D FILTER_LOCAL_IP -d ${rules_subnet} -j ACCEPT
fi
fi
done
done
# for subnets in "${local_ips[@]}" ; do
# if ! (${iptables} -t mangle -C FILTER_LOCAL_IP -d ${subnets} -j ACCEPT > /dev/null 2>&1) ; then
# ${iptables} -t mangle -I FILTER_LOCAL_IP -d ${subnets} -j ACCEPT
# fi
# done
for subnets in "${local_ips[@]}" ; do
if ! (${iptables} -t mangle -C FILTER_LOCAL_IP -d ${subnets} -j ACCEPT > /dev/null 2>&1) ; then
${iptables} -t mangle -I FILTER_LOCAL_IP -d ${subnets} -j ACCEPT
fi
done
log Debug "Filter Local IP($ipv) ${local_ips[*]}"
# unset a_subnet
# unset b_subnet
# [ "${iptables}" != "ip6tables -w 64" ] && log Debug "the iptables rules for bypassing the local IP(4/6) have been updated."
# else
# [ "${iptables}" != "ip6tables -w 64" ] && log Debug "the local IP(4/6) remains unchanged, and no processing has been performed."
# return 1
# fi
unset a_subnet
unset b_subnet
log Debug "iptables rules for bypassing the local IP($ipv) have been updated."
else
log Debug "local IP($ipv) remains unchanged, and no processing has been performed."
return 1
fi
# unset local_ips
# unset local_ip_number
# unset rules_ips
# unset rules_number
# unset wait_count
# }
unset local_ips
unset local_ip_number
unset rules_ips
unset rules_number
unset wait_count
}
forward() {
${iptables} $1 FORWARD -o "${tun_device}" -j ACCEPT
@@ -534,11 +536,11 @@ start_tproxy() {
${iptables} -A OUTPUT -d ::1 -p tcp -m owner --uid-owner "${box_user}" --gid-owner "${box_group}" -m tcp --dport "${tproxy_port}" -j REJECT
fi
# # Add filter local IP
# ${iptables} -t mangle -N FILTER_LOCAL_IP
# ${iptables} -t mangle -A PREROUTING -j FILTER_LOCAL_IP
# ${iptables} -t mangle -A OUTPUT -j FILTER_LOCAL_IP
# monitor_local_ip
# Add filter local IP
${iptables} -t mangle -N FILTER_LOCAL_IP
${iptables} -t mangle -A PREROUTING -j FILTER_LOCAL_IP
${iptables} -t mangle -A OUTPUT -j FILTER_LOCAL_IP
monitor_local_ip
if [ "${iptables}" != "ip6tables -w 64" ]; then
if [ "${bin_name}" = "clash" ]; then
@@ -596,12 +598,12 @@ stop_tproxy() {
${iptables} -t mangle -F DIVERT
${iptables} -t mangle -X DIVERT
# # flush filter local IP
# ${iptables} -t mangle -D OUTPUT -j FILTER_LOCAL_IP
# ${iptables} -t mangle -D PREROUTING -j FILTER_LOCAL_IP
# ${iptables} -t mangle -D FILTER_LOCAL_IP
# ${iptables} -t mangle -F FILTER_LOCAL_IP
# ${iptables} -t mangle -X FILTER_LOCAL_IP
# flush filter local IP
${iptables} -t mangle -D OUTPUT -j FILTER_LOCAL_IP
${iptables} -t mangle -D PREROUTING -j FILTER_LOCAL_IP
${iptables} -t mangle -D FILTER_LOCAL_IP
${iptables} -t mangle -F FILTER_LOCAL_IP
${iptables} -t mangle -X FILTER_LOCAL_IP
# flush QUIC
${iptables} -D OUTPUT -p udp --dport 443 -j REJECT

View File

@@ -31,7 +31,7 @@ box_bin_alive() {
done
"${scripts_dir}/box.iptables" disable >/dev/null 2>&1
[ -f "${box_pid}" ] && rm -f "${box_pid}"
return 1
exit 1
else
return 0
fi
@@ -316,7 +316,7 @@ box_run_bin() {
nohup busybox setuidgid "${box_user_group}" "${bin_path}" run -D "${box_dir}/${bin_name}" --config-directory "${box_dir}/${bin_name}" > "${box_run}/${bin_name}.log" 2>&1 &
PID=$!
echo -n $PID > "${box_pid}"
sleep 0.5
sleep 1
else
log Error "$(<"${box_run}/${bin_name}.log")"
log Error "configuration failed. Please check the ${box_run}/${bin_name}.log file."
@@ -329,7 +329,7 @@ box_run_bin() {
nohup busybox setuidgid "${box_user_group}" "${bin_path}" -d "${box_dir}/${bin_name}" -f "${clash_config}" > "${box_run}/${bin_name}.log" 2>&1 &
PID=$!
echo -n $PID > "${box_pid}"
sleep 0.5
sleep 1
else
log Error "$(<"${box_run}/${bin_name}.log")"
log Error "configuration failed. Please check the ${box_run}/${bin_name}.log file."
@@ -360,7 +360,7 @@ box_run_bin() {
nohup busybox setuidgid "${box_user_group}" "${bin_path}" run -confdir "${box_dir}/${bin_name}" > "${box_run}/${bin_name}.log" 2>&1 &
PID=$!
echo -n $PID > "${box_pid}"
sleep 0.5
sleep 1
else
log Error "$(<"${box_run}/${bin_name}.log")"
log Error "configuration failed. Please check the ${box_run}/${bin_name}.log file."
@@ -390,7 +390,7 @@ box_run_bin() {
nohup busybox setuidgid "${box_user_group}" "${bin_path}" run -d "${box_dir}/${bin_name}" > "${box_run}/${bin_name}.log" 2>&1 &
PID=$!
echo -n $PID > "${box_pid}"
sleep 0.5
sleep 1
else
log Error "$(<"${box_run}/${bin_name}.log")"
log Error "configuration failed. Please check the ${box_run}/${bin_name}.log file."

View File

@@ -204,20 +204,20 @@ update_subs() {
"${yq_cmd}" 'del(.outbounds[] | select(.type == "direct" or .type == "block" or .type == "dns" or .type == "selector" or .type == "urltest"))' -i --output-format=json "${sing_provide_config}"
# create new outbounds with type: selector, tag: singbox in ${sing_provide_config}
"${yq_cmd}" '.outbounds += [{"tag": "singbox", "type": "selector", "outbounds": [.outbounds[].tag]}]' -i --output-format=json "${sing_provide_config}"
"${yq_cmd}" '.outbounds += [{"tag": "b0x", "type": "selector", "outbounds": [.outbounds[].tag]}]' -i --output-format=json "${sing_provide_config}"
# create new outbounds with type: urltest, tag: singbox[urltest] in ${sing_provide_config}
"${yq_cmd}" '.outbounds += [{"tag": "singbox[urltest]", "type": "urltest", "url": "https://www.gstatic.com/generate_204", "interval": "3m", "outbounds": [.outbounds[].tag]}]' -i --output-format=json "${sing_provide_config}"
# create new outbounds with type: urltest, tag: b0x[urltest] in ${sing_provide_config}
"${yq_cmd}" '.outbounds += [{"tag": "b0x[urltest]", "type": "urltest", "url": "https://www.gstatic.com/generate_204", "interval": "3m", "outbounds": [.outbounds[].tag]}]' -i --output-format=json "${sing_provide_config}"
# renew outbounds with tag: singbox in main ${sing_config} dan ${sing_provide_config}
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "singbox"))' -i --output-format=json "${sing_provide_config}"
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "singbox"))' -i --output-format=json "${sing_config}"
"${yq_cmd}" '.outbounds[0].outbounds += ["singbox"]' -i --output-format=json "${sing_config}"
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "b0x"))' -i --output-format=json "${sing_provide_config}"
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "b0x"))' -i --output-format=json "${sing_config}"
"${yq_cmd}" '.outbounds[0].outbounds += ["b0x"]' -i --output-format=json "${sing_config}"
# renew outbounds with tag: singbox[urltest] in main ${sing_config} dan ${sing_provide_config}
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "singbox[urltest]"))' -i --output-format=json "${sing_provide_config}"
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "singbox[urltest]"))' -i --output-format=json "${sing_config}"
"${yq_cmd}" '.outbounds[0].outbounds += ["singbox[urltest]"]' -i --output-format=json "${sing_config}"
# renew outbounds with tag: b0x[urltest] in main ${sing_config} dan ${sing_provide_config}
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "b0x[urltest]"))' -i --output-format=json "${sing_provide_config}"
"${yq_cmd}" 'del(.outbounds[].outbounds[] | select(. == "b0x[urltest]"))' -i --output-format=json "${sing_config}"
"${yq_cmd}" '.outbounds[0].outbounds += ["b0x[urltest]"]' -i --output-format=json "${sing_config}"
log Info "subscription success"
log Info "Update subscription $(date +"%F %R")"
@@ -270,7 +270,7 @@ update_kernel() {
"sing-box")
url_down="https://github.com/SagerNet/sing-box/releases"
if [ "${singbox_releases}" = "false" ]; then
sing_box_version_temp=$(busybox wget --no-check-certificate -qO- "${url_down}" | grep -oE '/tag/v[0-9]+\.[0-9]+-[a-z0-9]+' | head -1 | busybox awk -F'/' '{print $3}')
sing_box_version_temp=$(busybox wget --no-check-certificate -qO- "${url_down}" | grep -oE '/tag/v[0-9]+\.[0-9].+-[a-z0-9]+' | head -1 | busybox awk -F'/' '{print $3}' | busybox awk -F'"' '{print $1}')
else
sing_box_version_temp=$(busybox wget --no-check-certificate -qO- "${url_down}" | grep -oE '/tag/v[0-9]+\.[0-9]+\.[0-9]+' | head -1 | busybox awk -F'/' '{print $3}')
fi

View File

@@ -106,9 +106,9 @@ gray="\033[1;90m"
log() {
# Selects the text color according to the parameters
case $1 in
info) color="${blue}" ;;
error) color="${red}" ;;
warn) color="${yellow}" ;;
Info) color="${blue}" ;;
Error) color="${red}" ;;
Warning) color="${yellow}" ;;
*) color="${green}" ;;
esac
# Add messages to time and parameters