X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;ds=sidebyside;f=trusted-network;h=a4325339c541c7db0c11c75dc8d16802cfae312d;hb=refs%2Fheads%2Fmaster;hp=825604e8421e21698b066860f0fb8dfe3807b471;hpb=9a0f77b0495e6f2643d5646c54b4c99cf3118c67;p=distro-setup diff --git a/trusted-network b/trusted-network index 825604e..d065009 100755 --- a/trusted-network +++ b/trusted-network @@ -1,4 +1,25 @@ #!/bin/bash +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Usage: run to trust or untrust dns. public wifi sometimes needs to # trust dns initially to log in. @@ -8,8 +29,6 @@ source /a/bin/bash-bear-trap/bash-bear -readonly this_file=$(readlink -f -- "${BASH_SOURCE[0]}") -readonly this_dir="${this_file%/*}" script_name="${BASH_SOURCE[0]}" script_name="${script_name##*/}" @@ -82,17 +101,40 @@ EOF fi fi +# t11 uses dhclient.conf dhclient_restart=false # man dhclient.conf -if ! grep -qP '\bdomain-name-servers\b' /etc/dhcp/dhclient.conf; then - sed -i 's/^ *request/request domain-name-servers,/' /etc/dhcp/dhclient.conf +f=/etc/dhcp/dhclient.conf +if [[ -e $f ]]; then + if $trust; then + if ! grep -qP '\bdomain-name-servers\b' $f; then + sed -i 's/^ *request/request domain-name-servers,/' $f + dhclient_restart=true + e $0: dhclient_restart=true + fi + else + if grep -qP '\bdomain-name-servers\b' $f; then + sed -i 's/^ *request domain-name-servers,/request/' $f + dhclient_restart=true + e $0: dhclient_restart=true + fi + fi +fi + +# t12 uses dhclient.conf +f=/etc/dhcpcd.conf +# note: haven't tested +if ! $trust; then + line="nooption domain_name_servers" +fi +if [[ -e $f ]] && ! echo $line | cedit $f; then dhclient_restart=true e $0: dhclient_restart=true fi # wait for networkmanager to come back -for f in {1..20}; do +for ((i=0; i<10; i++)); do if read -r _ _ _ _ gateway_if _ < <(ip route get 8.8.8.8); then break fi @@ -108,7 +150,7 @@ if [[ $gateway_if ]]; then # rm -f /run/systemd/resolved.conf.d/*$gateway_if* - if $dhclient_restart && grep -Pq "^ *auto ($gateway_if|.* $gateway_if( |$))" /etc/network/interfaces; then + if $dhclient_restart && grep -Pq "^ *auto ($gateway_if|.* $gateway_if( |$))" /etc/network/interfaces &>/dev/null; then m ifdown $gateway_if m ifup $gateway_if fi