0c84e1
#!/bin/sh
0c84e1
# dnssec-trigger script handling possible backup and restore of resolv.conf
0c84e1
0c84e1
SCRIPT_NAME="dnssec-trigger-resolvconf-handle.sh"
0c84e1
STATE_DIR="/var/run/dnssec-trigger"
0c84e1
RESOLV_CONF="/etc/resolv.conf"
0c84e1
RESOLV_CONF_BAK="$STATE_DIR/resolv.conf.bak"
0c84e1
NM_CONFIG="/etc/NetworkManager/NetworkManager.conf"
0c84e1
0c84e1
usage()
0c84e1
{
0c84e1
    echo
0c84e1
    echo "This script backs up or restores /etc/resolv.conf content"
0c84e1
    echo "Usage: $SCRIPT_NAME [backup|restore]"
0c84e1
}
0c84e1
0c84e1
# check number of arguments
0c84e1
if ! [ "$#" -eq 1 ]; then
0c84e1
    echo "ERROR: Wrong number of arguments!"
0c84e1
    usage
0c84e1
    exit 1
0c84e1
fi
0c84e1
0c84e1
does_nm_handle_resolv_conf()
0c84e1
{
0c84e1
    grep -x "^dns=none" $NM_CONFIG &> /dev/null
0c84e1
    echo "$?"
0c84e1
}
0c84e1
0c84e1
backup_resolv_conf()
0c84e1
{
0c84e1
    # find out if NM handles the resolv.conf
0c84e1
    if [ "`does_nm_handle_resolv_conf`" -eq 0 ]; then
0c84e1
        cp -fp $RESOLV_CONF $RESOLV_CONF_BAK
0c84e1
    fi
0c84e1
}
0c84e1
0c84e1
restore_resolv_conf()
0c84e1
{
0c84e1
    # if we have a backup and NM does not handle resolv.conf -> restore it
0c84e1
    if [ "`does_nm_handle_resolv_conf`" -eq 0 ] && [ -s $RESOLV_CONF_BAK ]; then
0c84e1
        cp -fp $RESOLV_CONF_BAK $RESOLV_CONF
0c84e1
    else
0c84e1
        # let NM rewrite the resolv.conf
0c84e1
        systemctl restart NetworkManager.service
0c84e1
    fi
0c84e1
}
0c84e1
0c84e1
case "$1" in
0c84e1
    backup)
0c84e1
        backup_resolv_conf
0c84e1
        ;;
0c84e1
    restore)
0c84e1
        restore_resolv_conf
0c84e1
        ;;
0c84e1
    *)
0c84e1
        echo "ERROR: Wrong argument!"
0c84e1
        usage
0c84e1
        exit 1
0c84e1
esac
0c84e1
0c84e1
exit 0