set -eE -o pipefail
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
-x="$(readlink -f "$BASH_SOURCE")"; cd ${x%/*}
+[[ $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: ${0##*/} [-h|--help] [-2|--dev2] [HOST/IP]
+ cat <<'EOF'
+usage: wrt-setup [-h|--help] [HOST/IP] [wrt-setup-local_ARGS]
setup my router in general: dhcp, dns, etc.
-dev2 is for setting up a second device for testing 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
- exit $1
+ wrt-setup-local -h
+ exit 0
}
-h=root@10.0.0.1
-temp=$(getopt -l help,dev2 h2 "$@") || usage 1
-eval set -- "$temp"
-while true; do
- case $1 in
- -2|--dev2) local_arg=-2; shift ;;
- -h|--help) usage ;;
- --) shift; break ;;
- *) echo "$0: Internal error! unexpected args: $*" ; exit 1 ;;
- esac
-done
+case $1 in
+ -h|--help) usage ;;
+ -*) : ;;
+ ?*) h="$1"; shift ;;
+esac
-if (( $# > 1 )); then
- usage 1
+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
-if [[ $# == 1 ]]; then
- read h <<<"$@"
-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
-cat ~/.ssh/home.pub | ssh $h dd of=/etc/dropbear/authorized_keys 2>/dev/null
-scp /a/bin/fai/wrt-setup-local /a/bin/cedit/cedit $h:/usr/bin
-# build for openwrt 18.06.2, r7676-cddd7b4c77
-sudo scp /q/root/shadow/router \
- /a/opt/openwrt/source/bin/packages/mips_24kc/mypackages/relay_1.0-1_mips_24kc.ipk $h:
-ssh $h <<EOF
-if ! opkg list-installed|grep bash; then
- opkg update
- opkg install bash
-fi
-export HOME_DOMAIN=$HOME_DOMAIN
-wrt-setup-local $local_arg
-EOF
+#/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 /p/c/cmc-firewall-data-http /b/bash-bear-trap/bash-bear $h:
+rsync ../openwrtkeyring/usign/* $h:/etc/opkg/keys
+
+ssh $h wrt-init ${HOME_DOMAIN:-b8.nz} "$@"