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

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