diff --git a/build-image.sh b/build-image.sh index 1866f55..a81d981 100755 --- a/build-image.sh +++ b/build-image.sh @@ -15,7 +15,7 @@ mkdir -p "$IMAGEDIR" VERSION="$(basename "$(git describe --always --tags --dirty --match 'access-points/*')")" IMAGEDIR="$IMAGEDIR"/"$VERSION" -mkdir "$IMAGEDIR" +mkdir -p "$IMAGEDIR" imagebuilder="$(basename "$IMAGEBUILDER_URL")" @@ -28,25 +28,34 @@ tar -C "$BUILDDIR" -axf "$DLDIR"/"$imagebuilder" IMAGEBUILDER_DIR="$BUILDDIR"/"$(tar -atf "$DLDIR"/"$imagebuilder" | head -n1)" -image="lede-ar71xx-generic-tl-wr841-v10-squashfs-sysupgrade.bin" - +profile=$(. "$CONTROL"; echo "${PROFILE}") ( IFS=' ' export PROFILE PACKAGES + . "$CONTROL" tmp=$(mktemp --tmpdir -d files.XXXXXXXXX) - cp -aLTv "$TOPDIR/$FILES" "$tmp" + mkdir -p "$tmp"/etc echo "$VERSION" > "$tmp"/etc/its-access-point-version + if [ -n "$COMMON_FILES" ]; then + cp -aLTv "$TOPDIR/$COMMON_FILES" "$tmp" + fi + + if [ -n "$FILES" ]; then + cp -aLTv "$TOPDIR/$FILES" "$tmp" + fi + cd "$IMAGEBUILDER_DIR" - make image FILES="$tmp" + unset COMMON_FILES + make image FILES="$tmp" 1>&2 ) -cp "$IMAGEBUILDER_DIR"/bin/targets/ar71xx/generic/"$image" "$IMAGEDIR"/ +cp "$IMAGEBUILDER_DIR"/bin/targets/ar71xx/generic/lede*-ar71xx-generic-"${profile}"-squashfs-sysupgrade.bin "$IMAGEDIR"/ { printf '%s\n' "Date: $(date -R)" @@ -55,6 +64,6 @@ cp "$IMAGEBUILDER_DIR"/bin/targets/ar71xx/generic/"$image" "$IMAGEDIR"/ printf 'Checksums-Sha512:\n' { ( cd "$DLDIR" ; sha512sum "$imagebuilder" ) - ( cd "$IMAGEDIR"; sha512sum "$image") + ( cd "$IMAGEDIR"; sha512sum lede*-ar71xx-generic-"${profile}"-squashfs-sysupgrade.bin ) } | sed 's/^/ /' } > "$IMAGEDIR"/image-manifest diff --git a/control/tl-wr841-v10 b/control/tl-wr841-v10 index 67dc39e..a48124c 100644 --- a/control/tl-wr841-v10 +++ b/control/tl-wr841-v10 @@ -1,5 +1,6 @@ PROFILE=tl-wr841-v10 FILES=files/tl-wr841-v10 +COMMON_FILES=files/common/its PACKAGES=' collectd collectd-mod-wireless diff --git a/control/ubnt-unifiac-lite b/control/ubnt-unifiac-lite new file mode 100644 index 0000000..620736e --- /dev/null +++ b/control/ubnt-unifiac-lite @@ -0,0 +1,9 @@ +PROFILE=ubnt-unifiac-lite +FILES=files/ubnt-unifiac-lite +COMMON_FILES=files/common/its +PACKAGES=' + collectd + collectd-mod-wireless + collectd-mod-interface + collectd-mod-load + collectd-mod-network' diff --git a/files/tl-wr841-v10/etc/collectd.conf b/files/common/its/etc/collectd.conf similarity index 100% rename from files/tl-wr841-v10/etc/collectd.conf rename to files/common/its/etc/collectd.conf diff --git a/files/tl-wr841-v10/etc/config/dhcp b/files/common/its/etc/config/dhcp similarity index 100% rename from files/tl-wr841-v10/etc/config/dhcp rename to files/common/its/etc/config/dhcp diff --git a/files/tl-wr841-v10/etc/config/dropbear b/files/common/its/etc/config/dropbear similarity index 100% rename from files/tl-wr841-v10/etc/config/dropbear rename to files/common/its/etc/config/dropbear diff --git a/files/tl-wr841-v10/etc/config/firewall b/files/common/its/etc/config/firewall similarity index 100% rename from files/tl-wr841-v10/etc/config/firewall rename to files/common/its/etc/config/firewall diff --git a/files/tl-wr841-v10/etc/config/ubootenv b/files/common/its/etc/config/ubootenv similarity index 100% rename from files/tl-wr841-v10/etc/config/ubootenv rename to files/common/its/etc/config/ubootenv diff --git a/files/tl-wr841-v10/etc/dropbear/authorized_keys b/files/common/its/etc/dropbear/authorized_keys similarity index 100% rename from files/tl-wr841-v10/etc/dropbear/authorized_keys rename to files/common/its/etc/dropbear/authorized_keys diff --git a/files/tl-wr841-v10/etc/hotplug.d/iface/10-disable-wifi-when-uplink-gone b/files/common/its/etc/hotplug.d/iface/10-disable-wifi-when-uplink-gone similarity index 59% rename from files/tl-wr841-v10/etc/hotplug.d/iface/10-disable-wifi-when-uplink-gone rename to files/common/its/etc/hotplug.d/iface/10-disable-wifi-when-uplink-gone index 83afd32..aff396a 100644 --- a/files/tl-wr841-v10/etc/hotplug.d/iface/10-disable-wifi-when-uplink-gone +++ b/files/common/its/etc/hotplug.d/iface/10-disable-wifi-when-uplink-gone @@ -1,5 +1,13 @@ #!/bin/sh + +uci_set_forall_wifi_ifaces () { + WIFI_IFACES=$(uci show wireless | sed -nr 's/^wireless\.([^=]+)=wifi-iface*$/\1/p') + for iface in $WIFI_IFACES; do + uci set wireless.$iface."$1" + done +} + logger -t wifi-uplink hotplug "$DEVICE" "$INTERFACE" "$ACTION" # 'lan' doesn't work for some reason @@ -9,12 +17,12 @@ logger -t wifi-uplink devchange "$DEVICE" "$INTERFACE" "$ACTION" [ "$ACTION" = ifup ] && { logger -t wifi-uplink up "$DEVICE" "$INTERFACE" "$ACTION" - uci set wireless.@wifi-device[0].disabled=0 + uci_set_forall_wifi_ifaces disabled=0 wifi } [ "$ACTION" = ifdown ] && { logger -t wifi-uplink down "$DEVICE" "$INTERFACE" "$ACTION" wifi down - uci set wireless.@wifi-device[0].disabled=1 + uci_set_forall_wifi_ifaces disabled=1 } diff --git a/files/common/its/etc/uci-defaults/50-config-from-mac b/files/common/its/etc/uci-defaults/50-config-from-mac new file mode 100755 index 0000000..3ce4bd1 --- /dev/null +++ b/files/common/its/etc/uci-defaults/50-config-from-mac @@ -0,0 +1,61 @@ +#!/bin/sh +set -e +set -u + +mac=$(cat /sys/class/net/wlan0/address) + +hostname= +channel_11a= +channel_11g= +if [ "$mac" = 60:e3:27:b8:16:ec ]; then + hostname=cz-ap0 + channel_11g=6 +elif [ "$mac" = 60:e3:27:ed:86:9a ]; then + hostname=cz-ap1 + channel_11g=11 +elif [ "$mac" = 78:8a:20:82:d6:bd ]; then + hostname=cz-ap2 + channel_11a=108 + htmode_11a=VHT80 +elif [ "$mac" = 60:e3:27:ed:9b:b0 ]; then + hostname=lz-ap0 + channel_11g=1 +fi + + +# disable root password login +sed -i 's/^root.*$/root:*:0:0:99999:7:::/' /etc/shadow + +uci set system.@system[0].hostname=$hostname +uci commit system +echo $(uci get system.@system[0].hostname) > /proc/sys/kernel/hostname + +uci set dropbear.@dropbear[0].PasswordAuth='off' +uci set dropbear.@dropbear[0].RootPasswordAuth='off' +uci commit dropbear +/etc/init.d/dropbear restart + +#WIFI_IFACES=$(uci show wireless | sed -nr 's/^wireless\.([^=]+)=wifi-iface*$/\1/p') +WIFI_DEVICES=$(uci show wireless | sed -nr 's/^wireless\.([^=]+)=wifi-device*$/\1/p') + +for radio in $WIFI_DEVICES; do + disabled=1 + if [ $(uci get wireless.$radio.hwmode) = '11a' ]; then + # 5 GHz + if [ -n "$channel_11a" ]; then + uci set wireless.$radio.channel=$channel_11a + uci set wireless.$radio.htmode=${htmode_11a:-HT20} + disabled=0 + fi + elif [ $(uci get wireless.$radio.hwmode) = '11g' ]; then + # 2.4 GHz + if [ -n "$channel_11g" ]; then + uci set wireless.$radio.channel=$channel_11g + disabled=0 + fi + fi + + uci set wireless.$radio.disabled=$disabled + uci set wireless.$radio.country=AT +done +uci commit wireless diff --git a/files/common/its/etc/uci-defaults/51-secrets b/files/common/its/etc/uci-defaults/51-secrets new file mode 120000 index 0000000..373e1e6 --- /dev/null +++ b/files/common/its/etc/uci-defaults/51-secrets @@ -0,0 +1 @@ +../../../../../../.git/annex/objects/Vk/8w/SHA256E-s95--196dc6eecef78da77ea459b552dc3e0690f7c8e99007105d9715020ba7c60480/SHA256E-s95--196dc6eecef78da77ea459b552dc3e0690f7c8e99007105d9715020ba7c60480 \ No newline at end of file diff --git a/files/tl-wr841-v10/etc/uci-defaults/50-config-from-mac b/files/tl-wr841-v10/etc/uci-defaults/50-config-from-mac deleted file mode 100755 index e876d66..0000000 --- a/files/tl-wr841-v10/etc/uci-defaults/50-config-from-mac +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -set -e - -mac=$(cat /sys/class/net/wlan0/address) - -hostname= -channel= -if [ "$mac" = 60:e3:27:b8:16:ec ]; then - hostname=cz-ap0 - channel=6 -elif [ "$mac" = 60:e3:27:ed:86:9a ]; then - hostname=cz-ap1 - channel=11 -elif [ "$mac" = 60:e3:27:ed:9b:b0 ]; then - hostname=lz-ap0 - channel=1 -fi - -uci set system.@system[0].hostname=$hostname -uci commit system -uci set wireless.radio0.channel=$channel -uci commit wireless -echo $(uci get system.@system[0].hostname) > /proc/sys/kernel/hostname diff --git a/files/tl-wr841-v10/etc/uci-defaults/51-secrets b/files/tl-wr841-v10/etc/uci-defaults/51-secrets deleted file mode 120000 index e3807b7..0000000 --- a/files/tl-wr841-v10/etc/uci-defaults/51-secrets +++ /dev/null @@ -1 +0,0 @@ -../../../../../.git/annex/objects/Vk/8w/SHA256E-s95--196dc6eecef78da77ea459b552dc3e0690f7c8e99007105d9715020ba7c60480/SHA256E-s95--196dc6eecef78da77ea459b552dc3e0690f7c8e99007105d9715020ba7c60480 \ No newline at end of file diff --git a/files/ubnt-unifiac-lite/etc/config/network b/files/ubnt-unifiac-lite/etc/config/network new file mode 100644 index 0000000..e395da5 --- /dev/null +++ b/files/ubnt-unifiac-lite/etc/config/network @@ -0,0 +1,15 @@ + +config interface 'loopback' + option ifname 'lo' + option proto 'static' + option ipaddr '127.0.0.1' + option netmask '255.0.0.0' + +config interface 'apctl' + option ifname 'eth1.2' + option proto 'dhcp' + +config interface 'lan' + option type 'bridge' + option ifname 'eth0' + option proto 'dhcp' diff --git a/files/ubnt-unifiac-lite/etc/config/system b/files/ubnt-unifiac-lite/etc/config/system new file mode 100644 index 0000000..945c5f7 --- /dev/null +++ b/files/ubnt-unifiac-lite/etc/config/system @@ -0,0 +1,15 @@ + +config system + option hostname 'ITS-AP-AC-LITE-unassigned' + option timezone 'UTC' + option ttylogin '0' + option log_size '64' + option urandom_seed '0' + +config timeserver 'ntp' + option enabled '1' + option enable_server '0' + list server '0.lede.pool.ntp.org' + list server '1.lede.pool.ntp.org' + list server '2.lede.pool.ntp.org' + list server '3.lede.pool.ntp.org' diff --git a/files/ubnt-unifiac-lite/etc/config/wireless b/files/ubnt-unifiac-lite/etc/config/wireless new file mode 100644 index 0000000..ad180de --- /dev/null +++ b/files/ubnt-unifiac-lite/etc/config/wireless @@ -0,0 +1,32 @@ + +config wifi-device 'radio0' + option type 'mac80211' + option hwmode '11a' + option path 'pci0000:00/0000:00:00.0' + option htmode 'VHT80' + option disabled '1' + option channel '108' + option country 'AT' + +config wifi-iface 'default_radio0' + option device 'radio0' + option network 'lan' + option mode 'ap' + option ssid 'it-syndikat 5 GHz' + option encryption 'psk2' + +config wifi-device 'radio1' + option type 'mac80211' + option channel '11' + option hwmode '11g' + option path 'platform/qca956x_wmac' + option htmode 'HT20' + option disabled '1' + option country 'AT' + +config wifi-iface 'default_radio1' + option device 'radio1' + option network 'lan' + option mode 'ap' + option ssid 'it-syndikat' + option encryption 'psk2'