Blame SOURCES/dnssec-triggerd-resolvconf-handle.sh

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