#!/bin/sh

# automated script for easy uninstalling zapret

EXEDIR="$(dirname "$0")"
EXEDIR="$(cd "$EXEDIR"; pwd)"
ZAPRET_BASE=${ZAPRET_BASE:-"$EXEDIR"}
ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"}
ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"}
ZAPRET_CONFIG_DEFAULT="$ZAPRET_BASE/config.default"
IPSET_DIR="$ZAPRET_BASE/ipset"

[ -f "$ZAPRET_CONFIG" ] || {
	ZAPRET_CONFIG_DIR="$(dirname "$ZAPRET_CONFIG")"
	[ -d "$ZAPRET_CONFIG_DIR" ] || mkdir -p "$ZAPRET_CONFIG_DIR"
	cp "$ZAPRET_CONFIG_DEFAULT" "$ZAPRET_CONFIG"
}

. "$ZAPRET_CONFIG"
. "$ZAPRET_BASE/common/base.sh"
. "$ZAPRET_BASE/common/elevate.sh"
. "$ZAPRET_BASE/common/fwtype.sh"
. "$ZAPRET_BASE/common/dialog.sh"
. "$ZAPRET_BASE/common/ipt.sh"
. "$ZAPRET_BASE/common/nft.sh"
. "$ZAPRET_BASE/common/pf.sh"
. "$ZAPRET_BASE/common/installer.sh"

remove_systemd()
{
	clear_ipset
	service_stop_systemd
	service_remove_systemd
	timer_remove_systemd
	nft_del_table
	crontab_del
}

remove_openrc()
{
	clear_ipset
	service_remove_openrc
	nft_del_table
	crontab_del
}

remove_linux()
{
	INIT_SCRIPT_SRC="$EXEDIR/init.d/sysv/zapret"

	clear_ipset

	echo \* executing sysv init stop
	"$INIT_SCRIPT_SRC" stop
	
	nft_del_table
	crontab_del

	echo
	echo '!!! WARNING. YOUR UNINSTALL IS INCOMPLETE !!!'
	echo 'you must manually remove zapret auto start from your system'
}

remove_openwrt()
{
	OPENWRT_FW_INCLUDE=/etc/firewall.zapret

	clear_ipset
	service_remove_sysv
	remove_openwrt_firewall
	remove_openwrt_iface_hook
	nft_del_table
	restart_openwrt_firewall
	crontab_del
	remove_extra_pkgs_openwrt
	echo
	echo to fully remove zapret : rm -r \"$ZAPRET_BASE\"
}

remove_macos()
{
	remove_macos_firewall
	service_remove_macos
	crontab_del
}


fix_sbin_path
check_system
require_root

[ "$SYSTEM" = "macos" ] && . "$EXEDIR/init.d/macos/functions"

case $SYSTEM in
	systemd)
		remove_systemd
		;;
	openrc)
		remove_openrc
		;;
	linux)
		remove_linux
		;;
	openwrt)
		remove_openwrt
		;;
	macos)
		remove_macos
		;;
esac


exitp 0