#!/bin/bash . /usr/lib/whonix/utility_functions # Search though files and updates IP address to the current # IP address(es) FILES=( '/usr/lib/leaktest-workstation/simple_ping.py' '/usr/lib/whonixcheck/preparation' '/usr/share/anon-kde-streamiso/share/config/kioslaverc' '/usr/bin/whonix_firewall' '/etc/whonix_firewall.d/30_default' '/usr/lib/anon-shared-helper-scripts/tor_bootstrap_check.bsh' '/usr/bin/uwt' '/etc/uwt.d/30_uwt_default' '/usr/share/tor/tor-service-defaults-torrc.anondist' '/usr/bin/update-torbrowser' '/etc/network/interfaces.whonix' '/etc/resolv.conf.anondist' '/etc/sdwdate.d/31_anon_dist_stream_isolation_plugin' '/etc/rinetd.conf.anondist' '/etc/network/interfaces.whonix' '/usr/share/anon-torchat/.torchat/torchat.ini' ) # sed search and replace. return 0 if replace happened, otherwise 1 search_replace() { local search="${1}" local replace="${2}" local file="${3}" local retval=1 if ! [ -L "${file}" ]; then ls_attrs="$(lsattr "${file}")" ls_attrs=${ls_attrs:4:1} if [ "${ls_attrs}" == "i" ]; then chattr -i "${file}" fi fi sed -i.bak '/'"${search}"'/,${s//'"${replace}"'/;b};$q1' "${file}" retval=$? if [ "${ls_attrs}" = "i" ]; then chattr +i "${file}" fi return $retval } function replace_ips() { local search_ip="${1}" local replace_ip="${2}" local files=("${!3}") local retval=1 # If IP is 10.152.152.10, network is 10.152.152.0 search_network="${search_ip%[.]*}.0" replace_network="${replace_ip%[.]*}.0" if ! [ "${search_ip}" = "${replace_ip}" ]; then for file in "${files[@]}"; do if [ -f "$file" ]; then search_replace "${search_ip}" "${replace_ip}" "${file}" && retval=0 search_replace "${search_network}" "${replace_network}" "${file}" && retval=0 fi done fi return $retval } update_ip() { ip=${1} echo "${ip}" > /etc/whonix-netvm-gateway grep '^DisableNetwork 0$' /etc/tor/torrc && { service tor status && { service tor reload || true; } } } if [ "${WHONIX}" == "gateway" ]; then ip="$(xenstore-read qubes-netvm-gateway)" if [ x${ip} != x ]; then # Compare to current IP address assiged by Qubes replace_ips "$(cat /etc/whonix-netvm-gateway)" "${ip}" FILES[@] && update_ip "${ip}" # Do again; checking for original 10.152.152.10 incase of update replace_ips "10.152.152.10" "${ip}" FILES[@] && update_ip "${ip}" # Do again; checking for original 10.152.152.11 incase of update replace_ips "10.152.152.11" "${ip}" FILES[@] && update_ip "${ip}" fi elif [ "${WHONIX}" == "workstation" ]; then ip="$(xenstore-read qubes-ip)" gateway="$(xenstore-read qubes-gateway)" if [ x${ip} != x ]; then # Compare to current IP address assiged by Qubes replace_ips "$(cat /etc/whonix-ip)" "${ip}" FILES[@] && echo "${ip}" > /etc/whonix-ip # Do again; checking for original 10.152.152.11 incase of update replace_ips "10.152.152.11" "${ip}" FILES[@] && echo "${ip}" > /etc/whonix-ip fi if [ x${gateway} != x ]; then # Compare to current gateway IP address assiged by Qubes replace_ips "$(cat /etc/whonix-netvm-gateway)" "${gateway}" FILES[@] && echo "${gateway}" > /etc/whonix-netvm-gateway # Do again; checking for original 10.152.152.10 incase of update replace_ips "10.152.152.10" "${gateway}" FILES[@] && echo "${gateway}" > /etc/whonix-netvm-gateway fi fi