lede/package/lean/luci-app-fogvdn/root/etc/init.d/fogvdn
2025-03-07 15:10:15 +08:00

137 lines
4.3 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
USE_PROCD=1
START=99
STOP=1
CONFIG_PATH=/etc/pear/pear_monitor
target_config_path=${CONFIG_PATH}/config.json
function run_instance()
{
if [ -f $target_config_path ];then
user_marked=$(cat $target_config_path |jq .user_marked)
if [ -n "$user_marked" ] && [ "$user_marked" != "null" ];then
json="$(cat $target_config_path)"
else
json="{}"
fi
else
json="{}"
fi
config_get username $1 username
config_get isp $1 isp
config_get region $1 region
config_get per_line_up_bw $1 per_line_up_bw null
config_get per_line_down_bw $1 per_line_down_bw null
config_get limited_memory $1 limited_memory null
config_get limited_storage $1 limited_storage null
config_get limited_area $1 limited_area null
country="中国"
province=$(echo $region | awk -F'-' '{print $1}')
city=$(echo $region | awk -F'-' '{print $2}')
mtime=$(date +%s)
json=$(echo "$json" | jq --arg username "$username" \
--arg isp "$isp" \
--arg country "$country" \
--arg province "$province" \
--arg city "$city" \
--argjson per_line_up_bw "$per_line_up_bw" \
--argjson per_line_down_bw "$per_line_down_bw" \
--argjson limited_memory "$limited_memory" \
--argjson limited_storage "$limited_storage" \
--argjson limited_area "$limited_area" \
--argjson mtime "$mtime" \
'.user_marked.username = $username |
.user_marked.isp = $isp |
.user_marked.country = $country |
.user_marked.province = $province |
.user_marked.city = $city |
.user_marked.per_line_up_bw = $per_line_up_bw |
.user_marked.per_line_down_bw = $per_line_down_bw |
.user_marked.limited_memory = $limited_memory |
.user_marked.limited_storage = $limited_storage |
.user_marked.limited_area = $limited_area |
.user_marked.mtime = $mtime |
del(.user_marked[] | select(. == null))'
)
json=$(echo "$json" | jq '.storage = []')
json=$(echo "$json" | jq '.nics = []')
config_list_foreach $1 storage storage_hd
config_list_foreach $1 nics nics_hd
# Save modified JSON back to target_config_path
echo "$json" > $target_config_path
instance=$1
/etc/init.d/openfog.sh stop
procd_open_instance ${instance}_check_alive
procd_set_param command "/usr/share/pcdn/check_alive.sh"
procd_set_param respawn
procd_close_instance
}
function storage_hd()
{
json=$(echo "$json" | jq --arg item "$1" '.storage += [$item]')
[ ! -d "$1" ] && mkdir -p $1
}
function nics_hd()
{
# config=$1
# # check if vw$config exists
# config_1=$(uci get network.vw$config)
# # check if $config exists
# config_2=$(uci get network.$config)
# if [ -z "$config_1" ] && [ -z "$config_2" ];then
# res=$(echo $json | jq '.nics | index(["'${config}'"])')
# [ "$res" == "null" ] && json=$(echo "$json" | jq --arg item "$config" '.nics += [$item]')
# return
# fi
# if [ "$config_1" != "interface" ];then
# config=$config
# else
# config=vw$config
# fi
# l2_device=$(uci get network.$config.ifname)
# proto=$(uci get network.$config.proto)
# if [ "$proto" == "pppoe" ];then
# nic_name=pppoe-$config
# else
# nic_name=$l2_device
# fi
nic_name=$1
res=$(echo $json | jq '.nics | index(["'${nic_name}'"])')
[ "$res" == "null" ] && json=$(echo "$json" | jq --arg item "$nic_name" '.nics += [$item]')
}
function stop_instance()
{
instance=$1
service_stop ${instance}_check_alive
}
start_service()
{
config_load fogvdn
config_get enable main enable
[ "$enable" == "1" ] && config_foreach run_instance instance || stop
}
stop_service()
{
config_foreach stop_instance instance
/etc/init.d/openfog.sh stop
}
service_triggers() {
procd_add_reload_trigger "fogvdn"
}
reload_servie()
{
stop
start
}