mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-15 18:03:30 +00:00
137 lines
4.3 KiB
Bash
Executable File
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
|
|
}
|