#!/bin/sh /etc/rc.common
. /usr/share/libubox/jshn.sh
. /lib/functions.sh

START=96
USE_PROCD=1
FWXD_BIN="/usr/bin/oafd"
CUSTOM_FEATURE_FILE="/etc/fwxd/custom_feature.cfg"
LEGACY_CUSTOM_FEATURE_FILE="/etc/custom_feature.cfg"

ensure_config_file()
{
	local file="$1"

	[ -e "$file" ] && return
	mkdir -p /etc/config
	cat > "$file"
	chmod 0644 "$file"
}

ensure_default_configs()
{
	ensure_config_file /etc/config/appfilter <<'EOF'
EOF

	ensure_config_file /etc/config/appfilter_whitelist <<'EOF'
EOF

	ensure_config_file /etc/config/fwx <<'EOF'
config global global
	option lan_ifname 'br-lan'
	option tcp_rst '1'
	option theme_mode '1'
	option feature_token ''

config appfilter appfilter
	option enable 1

config macfilter macfilter
	option enable 1

config record 'record'
	option enable '1'
	option record_time '3'
	option app_valid_time '3'
	option history_data_size '10'
	option history_data_path '/tmp/oaf'
	option base_data_path '/tmp/oaf'

config network network
	option work_mode 0

config dashboard 'dashboard'

config advanced 'advanced'
	option disable_hnat '0'

config status 'status'
	option notice_status '0'
EOF

	ensure_config_file /etc/config/fwx_record <<'EOF'
config whitelist 'whitelist'
EOF

	ensure_config_file /etc/config/macfilter <<'EOF'
config global 'global'
	option enable '1'
EOF

	ensure_config_file /etc/config/macfilter_whitelist <<'EOF'
EOF

	ensure_config_file /etc/config/mac_blacklist <<'EOF'
config settings 'base'
EOF

	ensure_config_file /etc/config/user_info <<'EOF'
EOF
}

stop_service(){
	killall -9 oafd
	killall -9 rule_manager
}

start_service(){
	ensure_default_configs

	lsmod |grep "oaf" >/dev/null
	if [ $? -ne 0 ];then
		modprobe oaf
	fi

	[ -x /usr/bin/hnat.sh ] && /usr/bin/hnat.sh 1

	if [ -s "$LEGACY_CUSTOM_FEATURE_FILE" ] && [ ! -s "$CUSTOM_FEATURE_FILE" ]; then
		mv -f "$LEGACY_CUSTOM_FEATURE_FILE" "$CUSTOM_FEATURE_FILE"
		chmod 0644 "$CUSTOM_FEATURE_FILE"
	fi
	procd_open_instance
	procd_set_param respawn 60 5 5
	procd_set_param stderr 1
	procd_set_param command "$FWXD_BIN"
	procd_close_instance
	
	procd_open_instance
	procd_set_param respawn 60 5 5
	procd_set_param stderr 1
	procd_set_param command "/usr/bin/rule_manager"
	procd_close_instance
}
