X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=wrt-setup-local;h=fcab6e5a265920b0c8fe159681df978b5ef2d3a3;hb=21353fd35096ba6786c1bae3046b763bfeac5890;hp=1c5338f16b54baf1114fe4f93f5935e0b73e305b;hpb=ed6e4bd94df7d149cf041e95aaad01b6e2da3f85;p=automated-distro-installer diff --git a/wrt-setup-local b/wrt-setup-local index 1c5338f..fcab6e5 100755 --- a/wrt-setup-local +++ b/wrt-setup-local @@ -15,21 +15,22 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + set -eE -o pipefail trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR usage() { cat <&2; usage 1 ;; esac ;; @@ -72,10 +92,10 @@ while getopts hm:t: opt; do done shift "$((OPTIND-1))" # Discard the options and sentinel -- -if [[ ! $mac ]] && ! $test; then +if [[ ! $mac ]] && ! $test && $secrets; then # if we wanted to increment it - #WIRELESSMAC=${WIRELESSMAC:0: -1}$((${WIRELESSMAC: -1} + 2)) - mac=$WIRELESSMAC + #mac=${mac:0: -1}$((${mac: -1} + 2)) + mac=${rwmac[$rmac]} fi if (( $# != 0 )); then @@ -152,15 +172,49 @@ uset() { fi } +udel() { + printf "+ udel %s\n" "$*" + local key="$1" + local val="$2" + local service="${key%%.*}" + restart_var=${service}_restart + if [[ ! ${!restart_var} ]]; then + eval $restart_var=false + fi + if uci get "$key" &>/dev/null; then + v uci set "$key"="$val" + uci commit $service + eval $restart_var=true + fi +} + + ### network config ### -ssid="check out gnu.org" lan=10.0.0.0 if $test; then - ssid="gnuv3" lan=10.1.0.0 +elif [[ $hostname == cmc ]]; then + lan=10.2.0.0 +elif $client; then + lan=10.3.0.0 +fi + +if $test; then + ssid="gnuv3" +elif $secrets; then + ssid=${rssid[$rmac]} fi + +: ${ssid:=librecmc} + + +if $secrets; then + key=${rkey[$rmac]} +fi +: ${key:=pictionary49} + mask=255.255.0.0 cidr=16 l=${lan%.0} @@ -175,6 +229,7 @@ cat /root/router >>/etc/shadow uset system.@system[0].ttylogin 1 + cat >/usr/bin/archlike-pxe-mount <<'EOFOUTER' #!/bin/bash # symlinks are collapsed for nfs mount points, so use a bind mount. @@ -193,10 +248,103 @@ EOFOUTER chmod +x /usr/bin/archlike-pxe-mount sed -i '/^root:/s,/bin/ash$,/bin/bash,' /etc/passwd + + + +uset dropbear.@dropbear[0].PasswordAuth 0 +uset dropbear.@dropbear[0].RootPasswordAuth 0 +uset dropbear.@dropbear[0].Port 2220 +if ! cmp -s /root/dropbear_rsa_host_key /etc/dropbear/dropbear_rsa_host_key; then + cp /root/dropbear_rsa_host_key /etc/dropbear/dropbear_rsa_host_key + dropbear_restart=true +fi + +if $dropbear_restart; then + v /etc/init.d/dropbear restart +fi + + +uset network.lan.ipaddr $l.$lanip +uset network.lan.netmask $mask +if $dev2 || $client; then + if $dev2; then + uset network.lan.gateway $l.1 + uset network.wan.proto none + uset network.wan6.proto none + fi + /etc/init.d/dnsmasq stop + /etc/init.d/dnsmasq disable + /etc/init.d/odhcpd stop + /etc/init.d/odhcpd disable + rm -f /etc/resolv.conf + cat >/etc/resolv.conf <<'EOF' +nameserver 8.8.8.8 +nameserver 8.8.4.4 +EOF + + # things i tried to keep dnsmasq running but not enabled except local dns, + # but it didnt work right and i dont need it anyways. + # uset dhcp.wan.ignore $dev2 # default is false + # uset dhcp.lan.ignore $dev2 # default is false + # uset dhcp.@dnsmasq[0].interface lo + # uset dhcp.@dnsmasq[0].localuse 0 + # uset dhcp.@dnsmasq[0].resolvfile /etc/dnsmasq.conf + # uset dhcp.@dnsmasq[0].noresolv 1 + # todo: populate /etc/resolv.conf with a static value + +else + # these are the defaults + uset network.lan.gateway '' + uset network.wan.proto dhcp + uset network.wan6.proto dhcpv6 + /etc/init.d/dnsmasq start + # todo: figure out why this returns 1 + /etc/init.d/dnsmasq enable ||: + /etc/init.d/odhcpd start + /etc/init.d/odhcpd enable +fi + +wireless_restart=false + +if $client; then + uset wireless.default_radio0.network 'wwan' + uset wireless.default_radio0.ssid ${rclientssid[$rmac]} + uset wireless.default_radio0.encryption 'psk2' + uset wireless.default_radio0.device 'radio0' + uset wireless.default_radio0.mode 'sta' + uset wireless.default_radio0.bssid ${rclientbssid[$rmac]} + # todo: look into whether 5g network is available. + uset wireless.default_radio0.key ${rclientkey[$rmac]} + uset wireless.radio0.disabled false + uset wireless.radio1.disabled true +else + # defaults, just reseting in case client config ran + uset wireless.default_radio0.network lan + uset wireless.default_radio0.mode ap + for x in 0 1; do + uset wireless.default_radio$x.ssid "$ssid" + uset wireless.default_radio$x.key $key + uset wireless.default_radio$x.encryption psk2 + if [[ $mac ]]; then + uset wireless.default_radio$x.macaddr $macpre$((macsuf + 2*x)) + fi + # secondary device has wireless disabled + uset wireless.radio$x.disabled $dev2 + done +fi + + + + + # usb, screen, relay are for libremanage +# rsync is for brc +# +# relay package temporarily disabled +# /root/relay_1.0-1_mips_24kc.ipk v pi kmod-usb-storage block-mount kmod-fs-ext4 nfs-kernel-server \ - tcpdump openvpn-openssl adblock libusb-compat /root/relay_1.0-1_mips_24kc.ipk \ - screen kmod-usb-serial-cp210x kmod-usb-serial-ftdi + tcpdump openvpn-openssl adblock libusb-compat \ + screen kmod-usb-serial-cp210x kmod-usb-serial-ftdi rsync cat >/etc/libremanage.conf </dev/null; then +# # cant mix cedit plus uci +# echo | cedit /etc/config/firewall ||: +# uci add_list firewall.@zone[1].network=wg0 +# uci commit firewall +# firewall-cedit ||: +# firewall_restart=true +# fi - -dnsmasq_restart=false v cedit /etc/hosts </dev/null) ]]; then - # default is '/tmp/resolv.conf.auto', we switch to the dnsmasq default of - # /etc/resolv.conf. not sure why I did this. - v uci delete dhcp.@dnsmasq[0].resolvfile - uci commit dhcp - dnsmasq_restart=true -fi - uset dhcp.@dnsmasq[0].domain b8.nz -uset dhcp.@dnsmasq[0].local /b8.nz/ uset system.@system[0].hostname $hostname - -if [[ $(uci get adblock.global.adb_enabled) != 1 ]]; then - v uci set adblock.global.adb_enabled=1 +uset dhcp.@dnsmasq[0].local + +# uci doesnt seem to have a way to set an empty value, +# if you delete it, it goes back to the default. this seems +# to be a decent workaround. +# todo: setup /etc/resolv.conf to point to 127.0.0.1 +uset dhcp.@dnsmasq[0].resolvfile=/dev/null + +# disabled for now. i want to selectively enable it +# for specific hosts. +if [[ $(uci get adblock.global.adb_enabled) != 0 ]]; then + v uci set adblock.global.adb_enabled=0 uci commit adblock /etc/init.d/adblock restart fi @@ -522,17 +761,24 @@ EOF # to start. mkdir -p /mnt/usb/tftpboot v cedit /etc/dnsmasq.conf < 2.80. currently at 2.80. + # todo: download https://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/dnsmasq_2.84~~test3-1_mipsel_24kc.ipk + # and install it. then we can turn off dnssec in systemd-resolved + # + # Also, reload of dnsmasq seems to break things, wifi + # clients were not getting internet connectivity. v /etc/init.d/dnsmasq restart fi @@ -624,13 +881,14 @@ if $firewall_restart; then v /etc/init.d/firewall restart fi +# this may just restart the network and take care of the network_restart below. +if $wireless_restart; then + v wifi +fi - +# todo: we should catch errors and still run this if needed if $network_restart; then reboot fi -if $dropbear_restart; then - v /etc/init.d/dropbear restart -fi exit 0