#!/bin/bash setupVars=/etc/pihole/setupVars.conf # official pihole basic-install.sh code here getIPv4stuff() { IPv4dev=$(ip route get 8.8.8.8 | awk '{for(i=1;i<=NF;i++)if($i~/dev/)print $(i+1)}') IPv4_address=$(ip -o -f inet addr show dev "$IPv4dev" | awk '{print $4}' | awk 'END {print}') } # official pihole basic-install.sh code here testIPv6() { first="$(cut -f1 -d":" <<< "$1")" value1=$(((0x$first)/256)) value2=$(((0x$first)%256)) ((($value1&254)==252)) && echo "ULA" || true ((($value1&112)==32)) && echo "GUA" || true ((($value1==254) && (($value2&192)==128))) && echo "Link-local" || true } # official pihole basic-install.sh code here getIPv6stuff() { if [ -e /proc/net/if_inet6 ]; then IPV6_ADDRESSES=($(ip -6 address | grep 'scope global' | awk '{print $2}')) # Determine type of found IPv6 addresses for i in "${IPV6_ADDRESSES[@]}"; do result=$(testIPv6 "$i") [[ "${result}" == "ULA" ]] && ULA_ADDRESS="${i%/*}" [[ "${result}" == "GUA" ]] && GUA_ADDRESS="${i%/*}" done # Determine which address to be used: Prefer ULA over GUA or don't use any if none found if [[ ! -z "${ULA_ADDRESS}" ]]; then IPV6_ADDRESS="${ULA_ADDRESS}" elif [[ ! -z "${GUA_ADDRESS}" ]]; then IPV6_ADDRESS="${GUA_ADDRESS}" else IPV6_ADDRESS="" fi fi } # from official pihole basic-install.sh, almost finalExports() { #If it already exists, lets overwrite it with the new values. if [[ -f ${setupVars} ]];then rm ${setupVars} fi { echo "PIHOLE_INTERFACE=${IPv4dev}" echo "IPV4_ADDRESS=${IPv4_address}" echo "IPV6_ADDRESS=${IPv6_address}" }>> "${setupVars}" } getIPv4stuff getIPv6stuff finalExports