X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=wrt-setup-local;h=e7ebd38d7137914515fa36b7130e9de30f51e989;hb=d4f7a9349a08f60957ca544f3d68a9b97015f6b9;hp=f465da5a75ceef8e8da54932133943a5c4c1dbb1;hpb=917fa30617ccafa3a7ed5218a418cf058948b729;p=automated-distro-installer diff --git a/wrt-setup-local b/wrt-setup-local index f465da5..e7ebd38 100755 --- a/wrt-setup-local +++ b/wrt-setup-local @@ -18,28 +18,105 @@ set -eE -o pipefail trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR + +usage() { + cat <&2; usage 1 ;; + esac + ;; + m) mac=$OPTARG ;; + *) echo "$0: Internal error! unexpected args: $*" >&2 ; usage 1 ;; + esac +done +shift "$((OPTIND-1))" # Discard the options and sentinel -- + +if [[ ! $mac ]] && ! $test; then + # if we wanted to increment it + #WIRELESSMAC=${WIRELESSMAC:0: -1}$((${WIRELESSMAC: -1} + 2)) + mac=$WIRELESSMAC fi +if (( $# != 0 )); then + usage 1 +fi + + +macpre=${mac:0: -1} +macsuf=${mac: -1} + + +p_updated=false pmirror() { + if $p_updated; then + return + fi # background: upgrading all packages is not recommended because it # doesn't go into the firmware. build new firmware if you want # lots of upgrades. I think /tmp/opkg-lists is a pre openwrt 14 location. f=(/var/opkg-lists/*) if ! (( $(date -r $f +%s) + 60*60*24 > $(date +%s) )); then - opkg update + if ! opkg update; then + echo "$0: warning: opkg update failed" >&2 + fi + p_updated=true fi } pi() { - for x in "$@"; do - if [[ ! $(opkg list-installed "$x") ]]; then + to_install=() + for p in "$@"; do + pname=${p##*/} + pname=${pname%%_*} + if [[ ! $(opkg list-installed "$pname") ]]; then + to_install+=($p) pmirror - opkg install "$@" fi done + if [[ $to_install ]]; then + opkg install ${to_install[@]} + fi } v() { @@ -60,6 +137,7 @@ v() { ####### end uci example ##### uset() { + printf "+ uset %s\n" "$*" local key="$1" local val="$2" local service="${key%%.*}" @@ -79,11 +157,12 @@ uset() { ### ssid="check out gnu.org" lan=10.0.0.0 -if $dev2; then +if $test; then ssid="gnuv3" lan=10.1.0.0 fi mask=255.255.0.0 +cidr=16 l=${lan%.0} passwd -l root ||: #already locked fails @@ -114,10 +193,15 @@ EOFOUTER chmod +x /usr/bin/archlike-pxe-mount sed -i '/^root:/s,/bin/ash$,/bin/bash,' /etc/passwd +# usb, screen, relay are for libremanage 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 - + tcpdump openvpn-openssl adblock libusb-compat /root/relay_1.0-1_mips_24kc.ipk \ + screen kmod-usb-serial-cp210x kmod-usb-serial-ftdi +cat >/etc/libremanage.conf </dev/null) ]]; then - v uci delete wireless.radio$x.disabled - wireless_restart=true + 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 if $wireless_restart; then @@ -249,83 +338,179 @@ v cedit /etc/config/firewall <