#!/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 json_add_string_n()
{
    [ -n "$2" ] && json_add_string "$1" "$2"
}

function json_add_int_n()
{
    [ -n "$2" ] && json_add_int "$1" "$2"
}

function run_instance()
{
    macs=$(cat $target_config_path | jq -r .macs[])
    json_init
    [ -n "$macs" ] && add_macs
    json_add_object user_marked
    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
    config_get per_line_down_bw $1 per_line_down_bw
    config_get limited_memory $1 limited_memory
    config_get limited_storage $1 limited_storage
    config_get limited_area $1 limited_area
    country="中国"
    province=$(echo $region | awk -F'-' '{print $1}')
    city=$(echo $region | awk -F'-' '{print $2}')
    mtime=$(date +%s)
    json_add_string_n username $username
    json_add_string_n isp $isp
    json_add_string_n country $country
    json_add_string_n province $province
    json_add_string_n city $citys
    json_add_int_n per_line_up_bw $per_line_up_bw
    json_add_int_n per_line_down_bw $per_line_down_bw
    json_add_int_n limited_memory $limited_memory
    json_add_int_n limited_storage $limited_storage
    json_add_int_n limited_area $limited_area
    json_add_int_n mtime $mtime
    json_close_object
    json_add_array storage
    config_list_foreach  $1 storage storage_hd
    json_close_object
    json_add_array nics
    config_list_foreach  $1 nics nics_hd
    json_close_object
    json_dump > $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_add_string_n "" $1
    [ ! -d "$1" ] && mkdir -p $1
}

function nics_hd()
{

    backup_nic_name=$(ifstatus $1 |jq -r .l3_device)
    nic_name=$(ifstatus vw$1 |jq -r .l3_device)
    [ -z "$nic_name" ] && [ -n "$backup_nic_name" ] && nic_name=$backup_nic_name
    [ ! -d "/sys/class/net/$nic_name" ] && return
    res=$(json_dump |  jq '.nics | contains(["'${nic_name}'"])')
    [ "$res" == false ] && json_add_string_n "" $nic_name
}

function stop_instance()
{
    instance=$1
    service_stop ${instance}_check_alive
}

start_service()
{
    config_load fogvdn
    config_get enable main enable
    if [ "$enable" != "1" ]; then 
            return 1
    fi
    config_foreach run_instance instance
}

stop_service()
{
    config_foreach stop_instance instance
    /etc/init.d/openfog.sh stop
}

service_triggers() {
    procd_add_reload_trigger "fogvdn"
}

reload_servie()
{
    stop
    start
}

add_macs()
{
    json_add_array macs
    for mac in $macs
    do
        json_add_string_n "" $mac
        logger -t fogvdn "add mac $mac"
    done
    json_close_array
}
