#!/bin/bash # Copyright (C) 2016 Ian Kelling # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # 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 [[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@" this_file="$(readlink -f -- "${BASH_SOURCE[0]}")" readonly this_file this_dir="${this_file%/*}" cd "$this_dir" usage() { cat <<'EOF' usage: wrt-setup [-h|--help] [HOST/IP] [wrt-setup-local_ARGS] setup my router in general: dhcp, dns, etc. Default HOST is 10.0.0.1 or 10.2.0.1 if they are the gateway, otherwise it must be specified. Note, use -m "''" to send an empty mac arg. When we get a new enough bash, we can use ${@@Q} to properly pass an empty var. Note, if we dont have internet yet, then just download the bash package, rsync it over manually and install it, eg: cat /etc/opkg/distfeeds.conf wget https://librecmc.org/librecmc/downloads/snapshots/v1.5.1-core/packages/mips_24kc/packages/bash_5.0-3_mips_24kc.ipk rsync bash_5.0-3_mips_24kc.ipk wrt: ssh wrt opkg install /root/bash_5.0-3_mips_24kc.ipk EOF wrt-setup-local -h exit 0 } case $1 in -h|--help) usage ;; -*) : ;; ?*) h="$1"; shift ;; esac if [[ ! $h ]]; then read -r _ _ gateway _ < <(ip -4 route get 8.8.8.8) case $gateway in 10.0.0.1|10.2.0.1) h=root@$gateway ;; *) echo "$0: error: gateway = $gateway and no HOST/IP specified" exit 1 ;; esac fi echo "$0: h=$h" # todo: ecdsa key not working with dropbear cat ~/.ssh/{h,hrsa,home}.pub | ssh $h dd of=/etc/dropbear/authorized_keys rsync /a/work/libremanage/libremanage /a/bin/fai/wrt-init /a/bin/fai/wrt-setup-local /a/bin/fai/dnsmasq-end-lease /a/bin/cedit/cedit $h:/usr/bin # relay is built for openwrt 18.06.2, r7676-cddd7b4c77 #/a/opt/openwrt/source/bin/packages/mips_24kc/mypackages/relay_1.0-1_mips_24kc.ipk \ rsync /q/root/shadow/router /p/c/machine_specific/wrt/etc/dropbear/dropbear_rsa_host_key \ /p/router-secrets /p/c/machine_specific/wrt/etc/wg.{key,psk} /p/c/{ptr,dnsmasq,cmc-firewall}-data /b/bash-bear-trap/bash-bear $h: rsync ../openwrtkeyring/usign/* $h:/etc/opkg/keys ssh $h wrt-init ${HOME_DOMAIN:-b8.nz} "$@"