#!/bin/bash
# OpenVPN update-resolv-conf replacement for containerized environments
# The default script from the base image uses systemd-resolved via D-Bus,
# which is unavailable in Home Assistant add-on containers.
# This script directly updates /etc/resolv.conf instead.

[ "$script_type" ] || exit 0

case "$script_type" in
    up)
        # Backup original resolv.conf
        if [ ! -f /etc/resolv.conf.ovpn-bak ]; then
            cp /etc/resolv.conf /etc/resolv.conf.ovpn-bak 2>/dev/null || true
        fi

        dns_servers=""
        dns_domain=""
        dns_search=""

        # Parse foreign_option_* environment variables set by OpenVPN
        for optionname in ${!foreign_option_*}; do
            option="${!optionname}"
            case "$option" in
                dhcp-option\ DNS\ *)
                    dns_servers="${dns_servers} ${option#dhcp-option DNS }"
                    ;;
                dhcp-option\ DOMAIN\ *)
                    dns_domain="${option#dhcp-option DOMAIN }"
                    ;;
                dhcp-option\ DOMAIN-SEARCH\ *)
                    dns_search="${dns_search} ${option#dhcp-option DOMAIN-SEARCH }"
                    ;;
            esac
        done

        # Write new resolv.conf with VPN DNS servers
        if [ -n "$dns_servers" ]; then
            {
                for server in $dns_servers; do
                    echo "nameserver $server"
                done
                [ -n "$dns_domain" ] && echo "domain $dns_domain"
                [ -n "$dns_search" ] && echo "search${dns_search}"
            } > /etc/resolv.conf
        fi
        ;;

    down)
        # Restore original resolv.conf
        if [ -f /etc/resolv.conf.ovpn-bak ]; then
            cp /etc/resolv.conf.ovpn-bak /etc/resolv.conf
            rm -f /etc/resolv.conf.ovpn-bak
        fi
        ;;
esac

exit 0
