#!/bin/sh /etc/rc.common

. /lib/functions.sh
. /lib/functions/network.sh

START=62
STOP=62
USE_PROCD=1

# 获取本机 IP 和子网掩码
get_ip_mask() {
    network_get_subnet lan_subnet lan || {
        logger -t fix_ip_c "can not get lan subnet"
        return 1
    }

    eval "$(ipcalc.sh "${lan_subnet}")"

    # 设置全局变量
    ip="$IP"
    mask="$NETMASK"
}

start_service()
{
    logger -t pgyvpn "start pgyvpn"
    get_ip_mask
    local local_ip=$ip
    local local_mask=$mask
    local log_path=/var/log/oray
    local config_path=/etc/config/oray
    local shell_path=/usr/share/pgyvpn
    # mkdir config path
    if [ ! -d "$config_path" ];then
        mkdir -p $config_path
    fi

    logger -t pgyvpn "local ip is $local_ip"
    logger -t pgyvpn "local mask is $local_mask"

    cmd_arg="-R -A -I $local_ip -M $local_mask -C $shell_path/vncinit.sh -t -i 640110.open.pgyapi.com -p $log_path -f $config_path/config.ini --logmask 0xFFFFF7 --certverify false -z 4194304  --norpceventnotify --norpcloginnotify -D sdwan:sdwan.pgyapi.com"

    #start app
    procd_open_instance
    procd_set_param command /usr/sbin/pgyvpnsvr $cmd_arg
    procd_set_param respawn
    procd_close_instance
}

stop_service()
{

    #remove p2p firewall
    iptables -w -t filter -F oray_vpn_p2p 2>/dev/null
    while true;
    do
        iptables -w -t filter -D INPUT -j oray_vpn_p2p 2>/dev/null
        [ $? -ne 0 ] && break
    done
    iptables -w -t filter -X oray_vpn_p2p 2>/dev/null

    #remove forward firewall
    iptables -w -t filter -F oray_vpn_vnc 2>/dev/null
    while true;
    do
        iptables -w -t filter -D INPUT -j oray_vpn_vnc 2>/dev/null
        [ $? -ne 0 ] && break
    done

    while true;
    do
        iptables -w -t filter -D FORWARD -j oray_vpn_vnc 2>/dev/null
        [ $? -ne 0 ] && break
    done

    while true;
    do
        iptables -w -t filter -D OUTPUT -j oray_vpn_vnc 2>/dev/null
        [ $? -ne 0 ] && break
    done
    iptables -w -t filter -X oray_vpn_vnc 2>/dev/null

    rm /tmp/pgyvpnsvr_mutex 2> /dev/null
    rm /tmp/pgyvpnsvr_rpc_mutex 2> /dev/null #delete mutex file
    killall -9 pgyvpnsvr 2> /dev/null
    logger -t pgyvpn "stop pgyvpn"
}

