#!/bin/bash

#=================================================
# GENERIC STARTING
#=================================================
# IMPORT GENERIC HELPERS
#=================================================

source _common.sh
source /usr/share/yunohost/helpers

ynh_abort_if_errors

#=================================================
# SPECIFIC SETTERS
#=================================================

set__open_port_53() {

    if [ "$open_port_53" == "true" ]; then
        ynh_print_info --message="Opening port 53..."
        # if the user would expose port 53 to the Internet, open it
        ynh_exec_warn_less yunohost firewall allow Both 53
        ynh_exec_warn_less yunohost firewall reload
    elif [ "$open_port_53" == "false" ]; then
        # else if false, close it
        ynh_print_info --message="Closing port 53..."
        ynh_exec_warn_less yunohost firewall disallow Both 53
        ynh_exec_warn_less yunohost firewall reload
    else
        # else, throw error
        ynh_print_warn --message="The variable 'open_port_53' should be 'true' or 'false' but isn't, please report this."
    fi

    # regenerate config, needed to add or delete public IPs following the user's choice
    # get IPv4 for the AGH config file
    ipv4_addr=$(process_ips "$(ip -4 route get 1.2.3.4 2> /dev/null | head -n1 | head -n1)")

    # get IPv6 for the AGH config file
    ipv6_addr=$(process_ips "$(ip -6 route get ::1.2.3.4 2> /dev/null | head -n1)")

    # update the IP adresses in the AGH config file
    update_agh_config

    # save the new setting
    ynh_app_setting_set "$app" --key=open_port_53 --value="$open_port_53"
}

set__dns_over_https() {

    if [ "$dns_over_https" == "true" ]; then
        ynh_print_info --message="Opening DoH and DoQ ports..."
        # if DNS over HTTPS/QUIC is activated, open the associated ports
        ynh_exec_warn_less yunohost firewall allow Both "$port_dns_over_http"
        ynh_exec_warn_less yunohost firewall allow UDP "$port_dns_over_quic"
        ynh_exec_warn_less yunohost firewall reload
    elif [ "$dns_over_https" == "false" ]; then
        # else if false, close them
        ynh_print_info --message="Closing DoH and DoQ ports..."
        ynh_exec_warn_less yunohost firewall disallow Both "$port_dns_over_http"
        ynh_exec_warn_less yunohost firewall disallow UDP "$port_dns_over_quic"
        ynh_exec_warn_less yunohost firewall reload
    else
        # else, throw error
        ynh_print_warn --message="The variable 'dns_over_https' should be 'true' or 'false' but isn't, please report this."
    fi

    # save the new setting
    ynh_app_setting_set "$app" --key=dns_over_https --value="$dns_over_https"
}
 
#=================================================
# GENERIC FINALIZATION
#=================================================

ynh_app_config_run "$1"