Merge pull request #33 from easterNday/master

feat: add yacd autostart settings & fix some yq bugs
This commit is contained in:
t@marin
2023-06-08 20:34:38 +07:00
committed by taamarin
4 changed files with 51 additions and 39 deletions

View File

@@ -14,4 +14,4 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
retain_days: 0
keep_minimum_runs: 0
keep_minimum_runs: 5

View File

@@ -464,6 +464,11 @@ start_box() {
detected_port
still_alive
display_bin_pid
# Open the yacd in browser
if [ "${bin_name}" = "clash" ] && [ "${display_yacd_on_start}" = "true" ]; then
sleep 0.5
am start -a android.intent.action.VIEW -d http://127.0.0.1:9090/ui
fi
}
stop_box() {

View File

@@ -139,7 +139,6 @@ update_yq() {
*) log warn "Unsupported architecture: $(uname -m)" >&2; exit 1 ;;
esac
download_link="https://github.com/mikefarah/yq/releases/latest/download/yq_${platform}_${arch}"
log debug "${download_link}"
update_file "${data_dir}/bin/yq" "${download_link}"
chmod +x "${data_dir}/bin/yq"
}
@@ -177,49 +176,56 @@ update_subgeo() {
fi
flag=false # if true, after the update is complete it will restart BFM
fi
enhanced=false
update_file_name="${clash_config}"
yq_command="$(command -v yq >/dev/null 2>&1 ; echo $?)"
# If native yq dont exist
if [ "$yq_command" -eq 0 ]; then
[ -e "${data_dir}/bin/yq" ] || update_yq
yq_command="$(command -v ${data_dir}/bin/yq >/dev/null 2>&1 ; echo $?)"
fi
wc_command=$(command -v wc >/dev/null 2>&1; echo $?)
if [ "$yq_command" -eq 0 ] && [ "$wc_command" -eq 0 ]; then
enhanced=true
update_file_name="${update_file_name}.subscription"
if [ -f /data/adb/box/bin/yq ]; then
yq="${data_dir}/bin/yq"
else
yq="yq"
if ! [ -z "${subscription_url}" ]; then
enhanced=false
update_file_name="${clash_config}"
yq_command=$(command -v yq >/dev/null 2>&1 ; echo $?)
# If native yq dont exist
if [ "$yq_command" -eq 1 ]; then
log debug "yq command found, start to download from github"
[ -e "${data_dir}/bin/yq" ] || update_yq
yq_command=$(command -v ${data_dir}/bin/yq >/dev/null 2>&1 ; echo $?)
fi
fi
if [ "${bin_name}" = "clash" ] && [ "${auto_update_subscription}" = "true" ] && update_file "${update_file_name}" "${subscription_url}"; then
log debug "Downloading ${clash_config}"
# If there is a yq command, extract the proxies information from yml and output it to the clash_domestic_config file
if [ "${enhanced}" = "true" ]; then
if [ $(cat ${update_file_name} | ${yq} '.proxies' | wc -l) -gt 1 ];then
${yq} '.proxies' ${update_file_name} > ${clash_domestic_config}
${yq} -i '{"proxies": .}' ${clash_domestic_config}
log info "subscription success"
if [ -f "${update_file_name}.bak" ]; then
rm ${update_file_name}.bak
fi
if [ -f "${pid_file}" ] && [ "${bin_name}" = "clash" ] && [ "${meta}" = "true" ]; then
ip_port=$(awk '/external-controller:/ {print $2}' "${clash_config}")
secret=$(awk '/secret:/ {print $2}' "${clash_config}")
busybox wget --header="Authorization: Bearer ${secret}" --post-data "" -O /dev/null "http://${ip_port}/restart" # >/dev/null 2>&1
flag=false # if it's true, after the update is complete it will restart BFM, but to update proxy_provider you don't need to restart it, just reload it on the dashboard/yacd
wc_command=$(command -v wc >/dev/null 2>&1; echo $?)
if [ "$yq_command" -eq 0 ] && [ "$wc_command" -eq 0 ]; then
enhanced=true
update_file_name="${update_file_name}.subscription"
if [ -f /data/adb/box/bin/yq ]; then
yq="${data_dir}/bin/yq"
else
yq="yq"
fi
fi
if [ "${bin_name}" = "clash" ] && [ "${auto_update_subscription}" = "true" ] && update_file "${update_file_name}" "${subscription_url}"; then
log debug "Downloading ${clash_config}"
# If there is a yq command, extract the proxies information from yml and output it to the clash_domestic_config file
if [ "${enhanced}" = "true" ]; then
if [ $(cat ${update_file_name} | ${yq} '.proxies' | wc -l) -gt 1 ];then
${yq} '.proxies' ${update_file_name} > ${clash_domestic_config}
${yq} -i '{"proxies": .}' ${clash_domestic_config}
# if yq & wc exist, update the file location
update_file_name="${update_file_name}.subscription"
log info "subscription success"
if [ -f "${update_file_name}.bak" ]; then
rm ${update_file_name}.bak
fi
if [ -f "${pid_file}" ] && [ "${bin_name}" = "clash" ] && [ "${meta}" = "true" ]; then
ip_port=$(awk '/external-controller:/ {print $2}' "${clash_config}")
secret=$(awk '/secret:/ {print $2}' "${clash_config}")
busybox wget --header="Authorization: Bearer ${secret}" --post-data "" -O /dev/null "http://${ip_port}/restart" # >/dev/null 2>&1
flag=false # if it's true, after the update is complete it will restart BFM, but to update proxy_provider you don't need to restart it, just reload it on the dashboard/yacd
else
flag=true
fi
else
flag=true
log error "subscription failed"
fi
else
log error "subscription failed"
flag=true # if true, after the update is complete it will restart BFM
fi
else
flag=true # if true, after the update is complete it will restart BFM
fi
else
log warn "subscription url is empty..."
fi
if [ -f "${pid_file}" ] && [ "${flag}" = "true" ]; then
restart_box

View File

@@ -73,6 +73,7 @@ system_packages_file="/data/system/packages.list"
uid_list=("/data/adb/box/run/appuid.list")
# clash configuration
display_yacd_on_start="false"
name_clash_config="config.yaml"
clash_config="${data_dir}/clash/${name_clash_config}"
clash_domestic_config="${data_dir}/clash/provide/domestic.yml"