#!/bin/sh dnsmasq_dbus() { method="${1}" shift dbus-send --system --dest=uk.org.thekelleys.dnsmasq /uk/org/thekelleys/dnsmasq uk.org.thekelleys.${method} "${@}" } dnsmasq_clear() { dnsmasq_dbus ClearCache } dnsmasq_started() { #signal sender=:1.2507 -> dest=(null destination) path=/uk/org/thekelleys/dnsmasq; interface=uk.org.thekelleys.dnsmasq; member=Up false } inet_atoi() { OFS=${IFS} IFS=. set -- ${1} num="0x$(printf "%02x" $1 $2 $3 $4)" unset IFS [ "${OFS}" ] && IFS="${OIFS}" printf "%u" "${num}" } server_up() { ping -c1 -w1 "${1}" > /dev/null 2>&1 || return 1 return 0 } config() { cat <<EOF #### #server/server:zone/zone 8.8.8.8/8.8.4.4: 172.16.44.1:cyberleo.net 10.11.12.13:cashnetusa.com/quickquid.co.uk/applyadvanceamerica.com/dollarsdirect.com.au/dollarsdirect.ca/casham.com EOF } dnsmasq_config() { sed -e 's/#.*$//; /^[ ]*$/d' | while read line do servers="${line%%:*}" zones="${line##*:}" [ "${zones}" ] && zones="$(echo "/${zones}" | sed -e 's#/# string:#g')" servers="$( OIFS="${IFS}" IFS="/" for server in ${servers} do server_up "${server}" || continue printf " uint32:%u" "$(inet_atoi "${server}")" [ "${zones}" ] && printf "%s" "${zones}" done unset IFS [ "${OIFS}" ] && IFS="${OIFS}" )" printf "%s" "${servers}" done } dnsmasq_set() { dnsmasq_dbus SetServers $(config | dnsmasq_config) dnsmasq_clear } dnsmasq_set
This page does not exist. Create it.