Compare commits

...

47 commits

Author SHA1 Message Date
Daniel Gröber 9862e8ec12 Move access-points automation to top level 2023-09-08 23:50:59 +02:00
Daniel Gröber 3a67df2caa aps: Release v0.20230908 2023-09-08 23:45:56 +02:00
Daniel Gröber 2a01a816a1 Enable DHCPv6 for mangment 2023-09-08 23:44:45 +02:00
Daniel Gröber 9112a7068b aps: Upgrade to 22.03.5 2023-09-08 23:33:14 +02:00
Daniel Gröber 4df94a50ef aps: Release v0.20230106 2023-01-07 02:18:14 +01:00
Daniel Gröber 2e58a2044e Move managment interface to lan 2023-01-06 20:34:28 +01:00
Daniel Gröber abef80bd92 Downgrade to 19.07.10
Upgrade to 21.02 didn't work presumably because of ath79
migration. Probably have to tftp flash...
2023-01-06 20:33:46 +01:00
Daniel Gröber d92d8cb6bf aps: Release v0.20221115 2022-11-15 19:53:33 +01:00
Daniel Gröber 1e020bdd1e aps: Upgrade to OpenWrt to 21.02.5 2022-11-15 19:49:09 +01:00
Daniel Gröber dd069efe3d aps: Add new ssh keys 2022-11-15 19:49:06 +01:00
Daniel Gröber cf4e7abc99 aps: Add 21.02 and 22.03 release keys 2022-11-15 19:49:03 +01:00
Daniel Gröber dc233c4c46 aps: Release v0.20220217 2022-02-17 22:53:24 +01:00
Daniel Gröber 6ae0940993 aps: Upgrade to OpenWrt 19.07.8 2022-02-17 22:46:22 +01:00
Daniel Gröber 30659280a7 aps: New admin ssh key 2022-02-17 22:46:00 +01:00
Daniel Gröber 2050c943d9 aps: its: Enable 2.4G on cz-ap2 2020-06-23 19:55:01 +02:00
Daniel Gröber 1b3d8941ee aps: Release v0.20200622 2020-06-22 22:27:28 +02:00
Daniel Gröber ae6195a416 Update README 2020-06-22 22:25:16 +02:00
Daniel Gröber bc79d40823 aps/keys: Add make target to list trusted keys 2020-06-22 22:09:35 +02:00
Daniel Gröber e628360540 aps: Upgrade to OpenWrt 19.07.3 on ath79 target 2020-06-22 22:06:44 +02:00
Daniel Gröber cc583d8d40 aps: Release v0.20191014 2019-10-14 19:40:25 +02:00
Daniel Gröber 28466e876f aps: Update to OpenWrt 18.06.4 2019-10-14 19:32:43 +02:00
Daniel Gröber 0296984bc4 aps: Implement gpg signature verification 2019-10-14 19:32:43 +02:00
Daniel Gröber 904dd7d1dc aps: Switch default imagebuilder (snapshot) url to OpenWrt also 2019-10-14 19:30:05 +02:00
Daniel Gröber 29c906e18f aps: Switch to https url for imagebuilder 2019-10-14 18:22:44 +02:00
Daniel Gröber 4a08a324d8 aps: README refinements 2019-10-14 18:22:34 +02:00
Daniel Gröber ebef033605 Make vlan-introduction make at least some sense 2018-11-09 13:40:23 +01:00
Daniel Gröber d7b0e1a6de aps: README: LEDE is OpenWrt again 2018-10-04 00:30:47 +02:00
Daniel Gröber 8a1912c014 aps: Release v0.20181004 2018-10-04 00:30:02 +02:00
Daniel Gröber 49e97d5713 aps: Upgrade to OpenWrt 18.06.1 2018-10-03 22:29:17 +02:00
Daniel Gröber 3eb1891b77 Fix typo 2018-09-03 17:57:15 +02:00
Daniel Gröber c8a9a27f89 aps: Add more build info to built image 2018-09-02 21:29:24 +02:00
Daniel Gröber ffbc42ee2c aps: Remove uncessesarry IFS meddling 2018-09-02 21:29:10 +02:00
Daniel Gröber d27be12db3 aps: Rename IMAGEDIR envvar to IMAGESDIR 2018-09-02 21:28:01 +02:00
Daniel Gröber fb97956d6c aps: Improve documentation 2018-09-02 21:27:01 +02:00
Daniel Gröber 30c57fdbcf aps: Upgrade to OpenWrt 16.06.0 2018-08-03 22:41:13 +02:00
Daniel Gröber f58712dcea README: Fix typo 2018-05-06 22:08:57 +02:00
Daniel Gröber 20739e6cce aps: Release v0.20180506 2018-05-06 22:03:01 +02:00
Daniel Gröber 0277343d5b aps: Apply key on all interfaces separately 2018-05-06 21:48:48 +02:00
Daniel Gröber 56b1ac07ab aps: Add per-profile targets to Makefile 2018-05-06 21:00:47 +02:00
Daniel Gröber d6f7fb03bd unifiac: Add 5GHz to plain SSID but retain pinned SSID 2018-05-06 21:00:47 +02:00
Daniel Gröber bb93aff6e3 aps: Delete radio device 'disabled' key when enabled 2018-05-06 21:00:47 +02:00
Daniel Gröber 04de7542a7 aps: Key uci-defaults off phy macaddress 2018-05-06 21:00:47 +02:00
Daniel Gröber 78a12031e1 unifiac: Change 5Ghz channel to 48
108 is a DFS channel which is annoying and probably broken. For 80Mhz bandwidth
you have to specify the upper channel apparently so 48-36 should be fine.
2018-05-06 21:00:47 +02:00
Daniel Gröber 3885ee6a18 unifiac: Fix apctl ifname 2018-04-17 17:11:49 +02:00
Daniel Gröber da9f662f84 Add READMEs 2018-04-14 01:43:37 +02:00
Daniel Gröber 8541b2f947 aps: Add Makefile for sequencing multiple profiles 2018-04-14 01:27:50 +02:00
Daniel Gröber 515548e0a5 aps: Release v0.20180414 2018-04-14 01:26:55 +02:00
63 changed files with 647 additions and 925 deletions

21
Makefile Normal file
View file

@ -0,0 +1,21 @@
all: its
OPENWRT_VERSION=22.03.5
its-ubnt-unifiac-lite:
IMAGEBUILDER_URL='https://downloads.openwrt.org/releases/$(OPENWRT_VERSION)/targets/ath79/generic/openwrt-imagebuilder-$(OPENWRT_VERSION)-ath79-generic.Linux-x86_64.tar.xz' ./build-image.sh control/ubnt-unifiac-lite
its: its-ubnt-unifiac-lite
DATE = $(shell date +'%Y%m%d')
VERSION = v0.$(DATE)
release-candidate: all release-images
tag:
git tag -f access-points/v0.$(DATE)
release-images:
git add images/$(VERSION)/*.image-manifest
git annex add images/$(VERSION)
git commit -m "aps: Release $(VERSION)"

65
README.md Normal file
View file

@ -0,0 +1,65 @@
ITS WiFi Access Points Setup
============================
This directory contains the scripts and configuration for the automated building
of OpenWrt image-build based firmware images.
We use this to build fully pre-configured images for our 802.11
access-points. The deployed images are completely hands-off. No configuration of
the running firmware should be necessary as all the device specific setup is
done using `/etc/uci-defaults/` by keying off the device's MAC address.
See [`files/common/its/etc/uci-defaults/50-config-from-mac`](files/common/its/etc/uci-defaults/50-config-from-mac) for details.
Note that some of the files in this repository contain secrets, like
passwords. These files are stored using
[git-annex](https://git-annex.branchable.com/) which merely stores a hash in the
(public) git repo and ships the relevant file contents off to a fileserver or
other internal storage location.
Building Images
---------------
The [`Makefile`](./Makefile) provides a target for each device type we have
images for, to build images for all devices at the space you can use:
```
$ make its
[...]
Wrote images to images/v0.20180506-3-g115cc99-dirty
```
the resulting sysupgrade images land in a directory in `images/`. The symlink
`images/latest` points to the directory of the image built most recently. The
build system also produces a `*.image-manifest` file which contains the URL to
the ImageBuilder used as well its hash and the corresponding image's hash.
Each produced image file contains the target, subtarget and profile names for
the targeted device (among other things), for example the Ubiquity UniFi AC
Lite's image is called `*-ath79-generic-ubnt_unifiac-lite*-sysupgrade.bin`
standing for `TARGET=ath79`, `SUBTARGET=generic`, `PROFILE=ubnt_unifiac-lite`.
These images can then be deployed by copying them to the respective device in
`/tmp` using `scp` and then running, over ssh:
# sysupgrade -n /tmp/*-sysupgrade.bin
If this fails for some reason and the target device is subsequently bricked so
bad it cannot even boot into
[failsafe mode](https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset#entering_failsafe_mode)
any more, see
[OpenWrt Debricking Guide](https://openwrt.org/docs/guide-user/troubleshooting/generic.debrick).
Using Released Binaries
-----------------------
The offically released and deployed images are available in this repo in the
[`images/`](images/) directory. They need to be retrived from an internal server
using [`git annex`](https://git-annex.branchable.com) before they can be
accessed. The public git repo only contains their hashes.
We also use git-annex to add the secrets used for generating the images to the
repo, which will then only be available to authorized people using the internal
git-annex store. For an example, see
[`files/common/its/etc/uci-defaults/51-secrets`](files/common/its/etc/uci-defaults/51-secrets). This
file just sets up secrets, such as the WiFi/root password.

View file

@ -1,69 +0,0 @@
#!/bin/sh
[ $# -ge 1 ] || exit 1
CONTROL="$1"; shift
IMAGEBUILDER_URL=${IMAGEBUILDER_URL:-http://downloads.lede-project.org/snapshots/targets/ar71xx/generic/lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz}
TOPDIR="$PWD"
DLDIR=${DLDIR:-"dl"}
BUILDDIR=${BUILDDIR:-"build"}
IMAGEDIR=${IMAGEDIR:-"images"}
mkdir -p "$DLDIR"
mkdir -p "$BUILDDIR"; rm -rf "$BUILDDIR"/*
mkdir -p "$IMAGEDIR"
VERSION="$(basename "$(git describe --always --tags --dirty --match 'access-points/*')")"
IMAGEDIR="$IMAGEDIR"/"$VERSION"
mkdir -p "$IMAGEDIR"
imagebuilder="$(basename "$IMAGEBUILDER_URL")"
(
cd "$DLDIR"
wget --continue "$IMAGEBUILDER_URL" -O "$imagebuilder"
)
tar -C "$BUILDDIR" -axf "$DLDIR"/"$imagebuilder"
IMAGEBUILDER_DIR="$BUILDDIR"/"$(tar -atf "$DLDIR"/"$imagebuilder" | head -n1)"
profile=$(. "$CONTROL"; echo "${PROFILE}")
(
IFS='
'
export PROFILE PACKAGES
. "$CONTROL"
tmp=$(mktemp --tmpdir -d files.XXXXXXXXX)
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"
unset COMMON_FILES
make image FILES="$tmp" 1>&2
)
cp "$IMAGEBUILDER_DIR"/bin/targets/ar71xx/generic/lede*-ar71xx-generic-"${profile}"-squashfs-sysupgrade.bin "$IMAGEDIR"/
{
printf '%s\n' "Date: $(date -R)"
printf '%s\n' "Image-Builder: $IMAGEBUILDER_URL"
printf '%s\n'
printf 'Checksums-Sha512:\n'
{
( cd "$DLDIR" ; sha512sum "$imagebuilder" )
( cd "$IMAGEDIR"; sha512sum lede*-ar71xx-generic-"${profile}"-squashfs-sysupgrade.bin )
} | sed 's/^/ /'
} > "$IMAGEDIR"/"${profile}".image-manifest

View file

@ -1,684 +0,0 @@
# Reinstall guide for Openwrt based APs (TL-WR841N/ND)
# ====================================================
alias $=true # make sure this file is a valid shell script
$ wget https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/OpenWrt-ImageBuilder-ar71xx-generic.Linux-x86_64.tar.bz2
$ tar -xf OpenWrt-ImageBuilder-ar71xx-generic.Linux-x86_64.tar.bz2
$ cd OpenWrt-ImageBuilder-ar71xx-generic.Linux-x86_64/
$ sh <WHEREVER>/doc-ap-reinstall.txt # yes, seriously
$ make image PROFILE=TLWR841 FILES=files/ PACKAGES="collectd collectd-mod-wireless collectd-mod-interface collectd-mod-load collectd-mod-network -firewall -ip6tables -kmod-ip6tables"
# Now you should get the binary for flashing at:
# bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v10-squashfs-sysupgrade.bin
# If your ssh key is in the config you can now connect to any LAN port (orange)
# on the AP, trigger a failsafe reset, scp the image into /tmp and flash the AP (see below).
# If it's not just add it to files/etc/dropbear/authorized_keys before running make
# 1) trigger factory reset (deletes /dev/mtdblock3, i.e. /overlay):
$ firstboot -y
# type 'y' and ENTER
$ reboot -f
# 2) wait for the router to come back up, do the failsafe mode dance again
# finally and copy the image there:
$ scp bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v10-squashfs-sysupgrade.bin root@192.168.1.1:/tmp
# 3) finally flash the AP:
$ sysupgrade openwrt-*.bin
# now connect the WAN port (blue) to the correct patch port and make sure this
# is connected to VLAN 2 on SW0 (ports 29,30,31,32,33,34 are for now)
# WTF?
# /bin/sh ignores lines that start with '#' and the 'alias' above makes sure '$'
# is not a command that exists, so everything in this file is ignored up the the
# shar(1) archive, neat huh?
# ---- shar archive follows ----
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.15.2).
# To extract the files from this archive, save it to some FILE, remove
# everything before the '#!/bin/sh' line above, then type 'sh FILE'.
#
lock_dir=_sh06036
# Made on 2016-06-06 01:42 CEST by <dxld@Sam>.
# Source directory was '/home/dxld/var/build/OpenWrt-ImageBuilder-ar71xx-generic.Linux-x86_64'.
#
# Existing files will *not* be overwritten, unless '-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 611 -rw------- files/etc/collectd.conf
# 286 -rw-r--r-- files/etc/config/dhcp
# 136 -rw-r--r-- files/etc/config/dropbear
# 105 -rw-r--r-- files/etc/config/firewall
# 630 -rw-r--r-- files/etc/config/network
# 1063 -rw-r--r-- files/etc/config/system
# 0 -rw-r--r-- files/etc/config/ubootenv
# 325 -rw-r--r-- files/etc/config/wireless
# 390 -rw-r--r-- files/etc/dropbear/authorized_keys
# 503 -rwxr-xr-x files/etc/uci-defaults/50-config-from-mac
#
MD5SUM=${MD5SUM-md5sum}
f=`${MD5SUM} --version | egrep '^md5sum .*(core|text)utils'`
test -n "${f}" && md5check=true || md5check=false
${md5check} || \
echo 'Note: not verifying md5sums. Consider installing GNU coreutils.'
if test "X$1" = "X-c"
then keep_file=''
else keep_file=true
fi
echo=echo
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=
locale_dir=
set_echo=false
for dir in $PATH
do
if test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
case `$dir/gettext --version 2>&1 | sed 1q` in
*GNU*) gettext_dir=$dir
set_echo=true
break ;;
esac
fi
done
if ${set_echo}
then
set_echo=false
for dir in $PATH
do
if test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
set_echo=true
break
fi
done
if ${set_echo}
then
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
fi
IFS="$save_IFS"
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null
then if (echo -n test; echo 1,2,3) | grep n >/dev/null
then shar_n= shar_c='
'
else shar_n=-n shar_c= ; fi
else shar_n= shar_c='\c' ; fi
f=shar-touch.$$
st1=200112312359.59
st2=123123592001.59
st2tr=123123592001.5 # old SysV 14-char limit
st3=1231235901
if touch -am -t ${st1} ${f} >/dev/null 2>&1 && \
test ! -f ${st1} && test -f ${f}; then
shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"'
elif touch -am ${st2} ${f} >/dev/null 2>&1 && \
test ! -f ${st2} && test ! -f ${st2tr} && test -f ${f}; then
shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"'
elif touch -am ${st3} ${f} >/dev/null 2>&1 && \
test ! -f ${st3} && test -f ${f}; then
shar_touch='touch -am $3$4$5$6$2 "$8"'
else
shar_touch=:
echo
${echo} 'WARNING: not restoring timestamps. Consider getting and
installing GNU '\''touch'\'', distributed in GNU coreutils...'
echo
fi
rm -f ${st1} ${st2} ${st2tr} ${st3} ${f}
#
if test ! -d ${lock_dir} ; then :
else ${echo} "lock directory ${lock_dir} exists"
exit 1
fi
if mkdir ${lock_dir}
then ${echo} "x - created lock directory ${lock_dir}."
else ${echo} "x - failed to create lock directory ${lock_dir}."
exit 1
fi
# ============= files/etc/collectd.conf ==============
if test ! -d 'files'; then
mkdir 'files'
if test $? -eq 0
then ${echo} "x - created directory files."
else ${echo} "x - failed to create directory files."
exit 1
fi
fi
if test ! -d 'files/etc'; then
mkdir 'files/etc'
if test $? -eq 0
then ${echo} "x - created directory files/etc."
else ${echo} "x - failed to create directory files/etc."
exit 1
fi
fi
if test -n "${keep_file}" && test -f 'files/etc/collectd.conf'
then
${echo} "x - SKIPPING files/etc/collectd.conf (file already exists)"
else
${echo} "x - extracting files/etc/collectd.conf (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/collectd.conf' &&
# Config file for collectd. More info: https://collectd.org/
# Note: Luci statistics will generate a new config and overwrite this file.
X
#Hostname "localhost"
#FQDNLookup true
BaseDir "/var/run/collectd"
Include "/etc/collectd/conf.d"
PIDFile "/var/run/collectd.pid"
PluginDir "/usr/lib/collectd"
TypesDB "/usr/share/collectd/types.db"
Interval 30
ReadThreads 2
X
LoadPlugin interface
LoadPlugin load
#LoadPlugin ping
X
<Plugin interface>
X IgnoreSelected false
X Interface "lan""
</Plugin>
X
LoadPlugin network
<Plugin network>
X Server "sozial.asozial" "25826"
X Forward false
</Plugin>
X
X
LoadPlugin wireless
SHAR_EOF
(set 20 16 03 14 20 20 43 'files/etc/collectd.conf'
eval "${shar_touch}") && \
chmod 0600 'files/etc/collectd.conf'
if test $? -ne 0
then ${echo} "restore of files/etc/collectd.conf failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/collectd.conf': 'MD5 check failed'
) << \SHAR_EOF
317af4e906f9877fb3942b2c969ec6f8 files/etc/collectd.conf
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/collectd.conf'` -ne 611 && \
${echo} "restoration warning: size of 'files/etc/collectd.conf' is not 611"
fi
fi
# ============= files/etc/config/dhcp ==============
if test ! -d 'files/etc'; then
mkdir 'files/etc'
if test $? -eq 0
then ${echo} "x - created directory files/etc."
else ${echo} "x - failed to create directory files/etc."
exit 1
fi
fi
if test ! -d 'files/etc/config'; then
mkdir 'files/etc/config'
if test $? -eq 0
then ${echo} "x - created directory files/etc/config."
else ${echo} "x - failed to create directory files/etc/config."
exit 1
fi
fi
if test -n "${keep_file}" && test -f 'files/etc/config/dhcp'
then
${echo} "x - SKIPPING files/etc/config/dhcp (file already exists)"
else
${echo} "x - extracting files/etc/config/dhcp (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/config/dhcp' &&
X
config dnsmasq
X option listen 0
X
config dhcp 'lan'
X option interface 'lan'
X option ignore 1
X
config dhcp 'wan'
X option interface 'wan'
X option ignore '1'
X
config odhcpd 'odhcpd'
X option maindhcp '0'
X option leasefile '/tmp/hosts/odhcpd'
X option leasetrigger '/usr/sbin/odhcpd-update'
X
SHAR_EOF
(set 20 16 02 18 23 07 05 'files/etc/config/dhcp'
eval "${shar_touch}") && \
chmod 0644 'files/etc/config/dhcp'
if test $? -ne 0
then ${echo} "restore of files/etc/config/dhcp failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/config/dhcp': 'MD5 check failed'
) << \SHAR_EOF
14380207dcdfc80dcf7ad0f874385a4f files/etc/config/dhcp
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/config/dhcp'` -ne 286 && \
${echo} "restoration warning: size of 'files/etc/config/dhcp' is not 286"
fi
fi
# ============= files/etc/config/dropbear ==============
if test ! -d 'files/etc/config'; then
mkdir 'files/etc/config'
if test $? -eq 0
then ${echo} "x - created directory files/etc/config."
else ${echo} "x - failed to create directory files/etc/config."
exit 1
fi
fi
if test -n "${keep_file}" && test -f 'files/etc/config/dropbear'
then
${echo} "x - SKIPPING files/etc/config/dropbear (file already exists)"
else
${echo} "x - extracting files/etc/config/dropbear (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/config/dropbear' &&
config dropbear
X option PasswordAuth 'off'
X option RootPasswordAuth 'off'
X option Port '22'
# option BannerFile '/etc/banner'
SHAR_EOF
(set 20 16 02 19 01 22 09 'files/etc/config/dropbear'
eval "${shar_touch}") && \
chmod 0644 'files/etc/config/dropbear'
if test $? -ne 0
then ${echo} "restore of files/etc/config/dropbear failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/config/dropbear': 'MD5 check failed'
) << \SHAR_EOF
4e428f3d36b40c3de857bf73d3bc27ce files/etc/config/dropbear
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/config/dropbear'` -ne 136 && \
${echo} "restoration warning: size of 'files/etc/config/dropbear' is not 136"
fi
fi
# ============= files/etc/config/firewall ==============
if test -n "${keep_file}" && test -f 'files/etc/config/firewall'
then
${echo} "x - SKIPPING files/etc/config/firewall (file already exists)"
else
${echo} "x - extracting files/etc/config/firewall (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/config/firewall' &&
config defaults
X option syn_flood 1
X option input ACCEPT
X option output ACCEPT
X option forward ACCEPT
SHAR_EOF
(set 20 16 03 14 20 19 47 'files/etc/config/firewall'
eval "${shar_touch}") && \
chmod 0644 'files/etc/config/firewall'
if test $? -ne 0
then ${echo} "restore of files/etc/config/firewall failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/config/firewall': 'MD5 check failed'
) << \SHAR_EOF
3aca9392cad163a47cd8ed892ad1fbee files/etc/config/firewall
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/config/firewall'` -ne 105 && \
${echo} "restoration warning: size of 'files/etc/config/firewall' is not 105"
fi
fi
# ============= files/etc/config/network ==============
if test -n "${keep_file}" && test -f 'files/etc/config/network'
then
${echo} "x - SKIPPING files/etc/config/network (file already exists)"
else
${echo} "x - extracting files/etc/config/network (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/config/network' &&
X
config interface 'loopback'
X option ifname 'lo'
X option proto 'static'
X option ipaddr '127.0.0.1'
X option netmask '255.0.0.0'
X
config interface 'apctl'
X option ifname 'eth1.2'
X option proto 'dhcp'
X
config interface 'lan'
X option type 'bridge'
X option ifname 'eth1'
X option proto 'static'
X
config interface 'recovery'
X option type 'bridge'
X option ifname 'eth0'
X option proto 'static'
X option ipaddr '192.168.1.1'
X option netmask '255.0.0.0'
X
X
config switch
X option name 'switch0'
X option reset '1'
X option enable '1'
X option enable_vlan '1'
X
config switch_vlan
X option device 'switch0'
X option vlan '1'
X option ports '1 2 3 4 0'
SHAR_EOF
(set 20 16 03 14 20 26 56 'files/etc/config/network'
eval "${shar_touch}") && \
chmod 0644 'files/etc/config/network'
if test $? -ne 0
then ${echo} "restore of files/etc/config/network failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/config/network': 'MD5 check failed'
) << \SHAR_EOF
e953d88ed06acffbef2e9086fa727fd7 files/etc/config/network
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/config/network'` -ne 630 && \
${echo} "restoration warning: size of 'files/etc/config/network' is not 630"
fi
fi
# ============= files/etc/config/system ==============
if test -n "${keep_file}" && test -f 'files/etc/config/system'
then
${echo} "x - SKIPPING files/etc/config/system (file already exists)"
else
${echo} "x - extracting files/etc/config/system (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/config/system' &&
X
config system
X option hostname 'ITS-AP-unassigned'
X option timezone 'UTC'
X
config timeserver 'ntp'
X list server '0.openwrt.pool.ntp.org'
X list server '1.openwrt.pool.ntp.org'
X list server '2.openwrt.pool.ntp.org'
X list server '3.openwrt.pool.ntp.org'
X option enabled '1'
X option enable_server '0'
X
config led 'led_wan'
X option name 'WAN'
X option sysfs 'tp-link:green:wan'
X option trigger 'netdev'
X option mode 'link tx rx'
X option dev 'eth1'
X
config led 'led_lan1'
X option name 'LAN1'
X option sysfs 'tp-link:green:lan1'
X option trigger 'switch0'
X option port_mask '0x10'
X
config led 'led_lan2'
X option name 'LAN2'
X option sysfs 'tp-link:green:lan2'
X option trigger 'switch0'
X option port_mask '0x08'
X
config led 'led_lan3'
X option name 'LAN3'
X option sysfs 'tp-link:green:lan3'
X option trigger 'switch0'
X option port_mask '0x04'
X
config led 'led_lan4'
X option name 'LAN4'
X option sysfs 'tp-link:green:lan4'
X option trigger 'switch0'
X option port_mask '0x02'
X
config led 'led_wlan'
X option name 'WLAN'
X option sysfs 'tp-link:green:wlan'
X option trigger 'phy0tpt'
SHAR_EOF
(set 20 16 03 14 17 41 57 'files/etc/config/system'
eval "${shar_touch}") && \
chmod 0644 'files/etc/config/system'
if test $? -ne 0
then ${echo} "restore of files/etc/config/system failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/config/system': 'MD5 check failed'
) << \SHAR_EOF
9473b26be0e31d238df7fb716f2b4964 files/etc/config/system
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/config/system'` -ne 1063 && \
${echo} "restoration warning: size of 'files/etc/config/system' is not 1063"
fi
fi
# ============= files/etc/config/ubootenv ==============
if test -n "${keep_file}" && test -f 'files/etc/config/ubootenv'
then
${echo} "x - SKIPPING files/etc/config/ubootenv (file already exists)"
else
${echo} "x - extracting files/etc/config/ubootenv (empty)"
> 'files/etc/config/ubootenv' &&
(set 20 16 02 07 15 30 04 'files/etc/config/ubootenv'
eval "${shar_touch}") && \
chmod 0644 'files/etc/config/ubootenv'
if test $? -ne 0
then ${echo} "restore of files/etc/config/ubootenv failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/config/ubootenv': 'MD5 check failed'
) << \SHAR_EOF
d41d8cd98f00b204e9800998ecf8427e files/etc/config/ubootenv
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/config/ubootenv'` -ne 0 && \
${echo} "restoration warning: size of 'files/etc/config/ubootenv' is not 0"
fi
fi
# ============= files/etc/config/wireless ==============
if test -n "${keep_file}" && test -f 'files/etc/config/wireless'
then
${echo} "x - SKIPPING files/etc/config/wireless (file already exists)"
else
${echo} "x - extracting files/etc/config/wireless (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/config/wireless' &&
config wifi-device radio0
X option type mac80211
X option channel 11
X option hwmode 11g
X option path 'platform/qca953x_wmac'
X option htmode HT20
X
config wifi-iface
X option device radio0
X option network lan
X option mode ap
X option ssid it-syndikat
X option encryption psk2
X option key '<WIRELESS KEY HERE>'
SHAR_EOF
(set 20 16 06 06 01 41 58 'files/etc/config/wireless'
eval "${shar_touch}") && \
chmod 0644 'files/etc/config/wireless'
if test $? -ne 0
then ${echo} "restore of files/etc/config/wireless failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/config/wireless': 'MD5 check failed'
) << \SHAR_EOF
06b38e06f26ea56e8a8e5f51a6566ff8 files/etc/config/wireless
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/config/wireless'` -ne 325 && \
${echo} "restoration warning: size of 'files/etc/config/wireless' is not 325"
fi
fi
# ============= files/etc/dropbear/authorized_keys ==============
if test ! -d 'files/etc/dropbear'; then
mkdir 'files/etc/dropbear'
if test $? -eq 0
then ${echo} "x - created directory files/etc/dropbear."
else ${echo} "x - failed to create directory files/etc/dropbear."
exit 1
fi
fi
if test -n "${keep_file}" && test -f 'files/etc/dropbear/authorized_keys'
then
${echo} "x - SKIPPING files/etc/dropbear/authorized_keys (file already exists)"
else
${echo} "x - extracting files/etc/dropbear/authorized_keys (text)"
sed 's/^X//' << 'SHAR_EOF' | uudecode &&
begin 600 files/etc/dropbear/authorized_keys
M<W-H+7)S82!!04%!0C-.>F%#,7EC,D5!04%!1$%104)!04%"05%#,41B=VMS
M>75-,FE652]M4U-18CAF8U14,W-M3T1Y96%Z=%!V<&8Q94\T.61N-$UE8T%C
M534X>G$R9S1$2W5M0S5Q,6)#<DUQ<&A9.65A*U534W)9<&8K6BLK9F5Z3W-0
M>&%D-$UR-&EX=3!(83A6;S1#3$-F1'AC07A::%EU;$%X;E!D,G<X9T)Y25%)
M56YM1UI"1WE!6'5$,%EX:2LR8W!N,VI'5TDQ3CDV8W=Y:%-Z63`O46UJ9F55
M8G%B*W!D:45J;2]*5$)U;R]S0FUF2FUD.5%A>4UV>$]Z,5)R>C%4=4\X.79M
M+U9L,5`K:TE&4W1O0G-%955(."M9<75)4'50<6=Q,V0V2"MI538X3DYT8G!9
M07=-2E,S,'5M-'5H=2]X3R]62&-L0V%F<4]U47994FMJ0DI!4DY0;4UL+T15
>8VET:$Y#5S)!=D1C=$IS6G!",6P@9'AL9$!%;&D*
`
end
SHAR_EOF
(set 20 16 02 19 01 22 39 'files/etc/dropbear/authorized_keys'
eval "${shar_touch}") && \
chmod 0644 'files/etc/dropbear/authorized_keys'
if test $? -ne 0
then ${echo} "restore of files/etc/dropbear/authorized_keys failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/dropbear/authorized_keys': 'MD5 check failed'
) << \SHAR_EOF
9641a516022df2dc59a071c9d16be7aa files/etc/dropbear/authorized_keys
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/dropbear/authorized_keys'` -ne 390 && \
${echo} "restoration warning: size of 'files/etc/dropbear/authorized_keys' is not 390"
fi
fi
# ============= files/etc/uci-defaults/50-config-from-mac ==============
if test ! -d 'files/etc/uci-defaults'; then
mkdir 'files/etc/uci-defaults'
if test $? -eq 0
then ${echo} "x - created directory files/etc/uci-defaults."
else ${echo} "x - failed to create directory files/etc/uci-defaults."
exit 1
fi
fi
if test -n "${keep_file}" && test -f 'files/etc/uci-defaults/50-config-from-mac'
then
${echo} "x - SKIPPING files/etc/uci-defaults/50-config-from-mac (file already exists)"
else
${echo} "x - extracting files/etc/uci-defaults/50-config-from-mac (text)"
sed 's/^X//' << 'SHAR_EOF' > 'files/etc/uci-defaults/50-config-from-mac' &&
#!/bin/sh
set -e
X
mac=$(cat /sys/class/net/eth1/address)
X
hostname=
channel=
if [ "$mac" = 60:e3:27:b8:16:ed ]; then
X hostname=cz-ap0
X channel=6
elif [ "$mac" = 60:e3:27:b8:09:db ]; then
X hostname=cz-ap1
X channel=12
elif [ "$mac" = 60:e3:27:ed:9b:b1 ]; then
X hostname=cz-ap2
X channel=1
fi
X
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
SHAR_EOF
(set 20 16 03 20 16 53 15 'files/etc/uci-defaults/50-config-from-mac'
eval "${shar_touch}") && \
chmod 0755 'files/etc/uci-defaults/50-config-from-mac'
if test $? -ne 0
then ${echo} "restore of files/etc/uci-defaults/50-config-from-mac failed"
fi
if ${md5check}
then (
${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'files/etc/uci-defaults/50-config-from-mac': 'MD5 check failed'
) << \SHAR_EOF
689a299be8256d569a668704a26d27c3 files/etc/uci-defaults/50-config-from-mac
SHAR_EOF
else
test `LC_ALL=C wc -c < 'files/etc/uci-defaults/50-config-from-mac'` -ne 503 && \
${echo} "restoration warning: size of 'files/etc/uci-defaults/50-config-from-mac' is not 503"
fi
fi
if rm -fr ${lock_dir}
then ${echo} "x - removed lock directory ${lock_dir}."
else ${echo} "x - failed to remove lock directory ${lock_dir}."
exit 1
fi
exit 0

View file

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1DbwksyuM2iVU/mSSQb8fcTT3smODyeaztPvpf1eO49dn4MecAcU58zq2g4DKumC5q1bCrMqphY9ea+USSrYpf+Z++fezOsPxad4Mr4ixu0Ha8Vo4CLCfDxcAxZhYulAxnPd2w8gByIQIUnmGZBGyAXuD0Yxi+2cpn3jGWI1N96cwyhSzY0/QmjfeUbqb+pdiEjm/JTBuo/sBmfJmd9QayMvxOz1Rrz1TuO89vm/Vl1P+kIFStoBsEeUH8+YquIPuPqgq3d6H+iU68NNtbpYAwMJS30um4uhu/xO/VHclCafqOuQvYRkjBJARNPmMl/DUcithNCW2AvDctJsZpB1l dxld@Eli

View file

@ -1 +0,0 @@
../../../../../../.git/annex/objects/Vk/8w/SHA256E-s95--196dc6eecef78da77ea459b552dc3e0690f7c8e99007105d9715020ba7c60480/SHA256E-s95--196dc6eecef78da77ea459b552dc3e0690f7c8e99007105d9715020ba7c60480

View file

@ -1 +0,0 @@
../../../.git/annex/objects/x8/FX/SHA256E-s3342340--cc00d2ddc3972b9402dcdba12d4f5970974f0b203900b62efa5121633c5e5ba1.bin/SHA256E-s3342340--cc00d2ddc3972b9402dcdba12d4f5970974f0b203900b62efa5121633c5e5ba1.bin

96
build-image.sh Executable file
View file

@ -0,0 +1,96 @@
#!/bin/sh
set -e
[ $# -ge 1 ] || exit 1
CONTROL="$1"; shift
IMAGEBUILDER_URL=${IMAGEBUILDER_URL:-https://downloads.openwrt.org/snapshots/targets/ath79/generic/openwrt-imagebuilder-ath79-generic.Linux-x86_64.tar.xz}
TOPDIR="$PWD"
DLDIR=${DLDIR:-"dl"}
BUILDDIR=${BUILDDIR:-"build"}
IMAGESDIR=${IMAGEDIR:-"images"}
mkdir -p "$DLDIR"
mkdir -p "$BUILDDIR"; rm -rf "$BUILDDIR"/*
mkdir -p "$IMAGESDIR"
VERSION="$(basename "$(git describe --always --tags --dirty --match 'access-points/*')")"
IMAGEDIR="$IMAGESDIR"/"$VERSION"
mkdir -p "$IMAGEDIR"
imagebuilder="$(basename "$IMAGEBUILDER_URL")"
checksums_url="$(dirname "$IMAGEBUILDER_URL")/sha256sums"
trustedkeys=$PWD/keys/trustedkeys.kbx
(
cd "$DLDIR"
wget --continue "$IMAGEBUILDER_URL" -O "$imagebuilder"
wget "${checksums_url}" -O "${imagebuilder}.sha256sums"
wget "${checksums_url}.asc" -O "${imagebuilder}.sha256sums.asc"
gpgv --keyring="$trustedkeys" \
"${imagebuilder}.sha256sums.asc" "${imagebuilder}.sha256sums" \
|| exit 42
sha256sum --ignore-missing --check ${imagebuilder}.sha256sums || exit 43
) || exit 50
tar -C "$BUILDDIR" -axf "$DLDIR"/"$imagebuilder"
IMAGEBUILDER_DIR="$BUILDDIR"/"$(tar -atf "$DLDIR"/"$imagebuilder" | head -n1)"
# source control file and extract variables
profile=$(. "$CONTROL"; echo "${PROFILE}")
target=$(. "$CONTROL"; echo "${TARGET}")
subtarget=$(. "$CONTROL"; echo "${SUBTARGET}")
(
# `make` below consumes these
export PROFILE PACKAGES
. "$CONTROL"
tmp="$(mktemp --tmpdir -d files.XXXXXXXXX)"
mkdir -p "$tmp"/etc
mkdir -p "$tmp"/etc/its-access-point/
printf '%s\n' "$VERSION" > "$tmp"/etc/its-access-point/version
printf '%s\n' "$IMAGEBUILDER_URL" \
> "$tmp"/etc/its-access-point/imagebuilder-url
sha512sum "$DLDIR/$imagebuilder" \
> "$tmp"/etc/its-access-point/imagebuilder-hash
cat "$CONTROL" > "$tmp"/etc/its-access-point/control
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"
unset COMMON_FILES
make image FILES="$tmp" 1>&2
)
cp "$IMAGEBUILDER_DIR"/bin/targets/ath79/"${subtarget}"/openwrt*-"${target}-${subtarget}-${profile}"-squashfs-sysupgrade.bin "$IMAGEDIR"/
ln -snf "$VERSION" images/latest
{
printf '%s\n' "Date: $(date -R)"
printf '%s\n' "Image-Builder: $IMAGEBUILDER_URL"
printf '%s\n'
printf 'Checksums-Sha512:\n'
{
( cd "$DLDIR" ; sha512sum "$imagebuilder" )
( cd "$IMAGEDIR"; sha512sum openwrt*-"${target}-${subtarget}-${profile}"-squashfs-sysupgrade.bin )
} | sed 's/^/ /'
} > "$IMAGEDIR"/"${profile}".image-manifest
echo
echo
echo "Wrote images to $IMAGEDIR"
echo

View file

@ -1,4 +1,6 @@
PROFILE=tl-wr841-v10
TARGET=ar71xx
SUBTARGET=tiny
FILES=files/tl-wr841-v10
COMMON_FILES=files/common/its
PACKAGES='

View file

@ -1,5 +1,7 @@
PROFILE=ubnt-unifiac-lite
PROFILE=ubnt_unifiac-lite
FILES=files/ubnt-unifiac-lite
TARGET=ath79
SUBTARGET=generic
COMMON_FILES=files/common/its
PACKAGES='
collectd

View file

@ -0,0 +1,4 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDb6EwBFfEStxggc1voCr7o7LUEGViEb6Qncq3wZRKwjbRw+YOPkLwZuyVPNiERgtcmwkanhFiFK9wI3dgWhhsQqh8G6ydBNEMJDXMAmLS3LfCvfqB6XX2v9YOp/80oFPo6Q7Ii1dw+17uVgu0RaLYPqfLrFd1YHgKxrhYyIMQSyaKU5Yl+xH1M4+rcUoTvtsNfptXSjphRTCVTIOliZVvpznXnrwhdg+oxKd3Krd6BA3VxWM12Ynbe8pu/qd/yoi/VgPRLmCAm7kmo9+PMivNDIiuBa+vQYdV+We9jyJ54Ak4Stk17KPLBtI/NkfiFIIeyJUGKqi7Sc8jGTiwNaMTedMoPSFKnJQFfoKwfS91cV1/t0op3bnSBjexWwB6jO+I1I83erJ4AVUBaKR1r6xIbOEgDPJXgpwOCcaHbr0JGNocxO2mwfSfI/FcJlUpVFJx9ytENwVjx+U/fmDWweAeh3EzjP4g6blhCv/8li3qX2Ky6XsKo6oDAwDeGJfucrlcVdtO6q79MfQ+sy+C55HAZwmj5XYFf307wAX6k4xvLxMQU8onNKAUWHYxU5AHYqvufNQYGqoYBMqjlMtEZFqariVjELLbshjIBBOq0xcZRRzcIZxL9ju9Wtv736h1bQCg4cnfgP7DH5YpUTwNy0WG1OTxlPtElO2260kT82qur6Q== dxld@House
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILvioDgEqpDNPtN5IADORCob2W4PrPwZ9XkeM0ydKkni dxld@House
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOUurnUbomZzvU/Bm7iXSzkdCzMtq2S8tbAoU63zQXOO dxld@Janet
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQ2svXcOkb90K+hdAdIeXuw444p7W0rs9ANW5gXvR+4 ITS WASCHTL ACCESS KEY

View file

@ -2,7 +2,7 @@
set -e
set -u
mac=$(cat /sys/class/net/wlan0/address)
mac=$(cat /sys/class/ieee80211/phy0/macaddress)
hostname=
channel_11a=
@ -15,7 +15,8 @@ elif [ "$mac" = 60:e3:27:ed:86:9a ]; then
channel_11g=11
elif [ "$mac" = 78:8a:20:82:d6:bd ]; then
hostname=cz-ap2
channel_11a=108
channel_11a=48
channel_11g=6
htmode_11a=VHT80
elif [ "$mac" = 60:e3:27:ed:9b:b0 ]; then
hostname=lz-ap0
@ -39,23 +40,27 @@ uci commit dropbear
WIFI_DEVICES=$(uci show wireless | sed -nr 's/^wireless\.([^=]+)=wifi-device*$/\1/p')
for radio in $WIFI_DEVICES; do
disabled=1
disabled=true
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
disabled=false
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
disabled=false
fi
fi
uci set wireless.$radio.disabled=$disabled
if $disabled; then
uci set wireless.$radio.disabled=1
else
uci delete wireless.$radio.disabled || true
fi
uci set wireless.$radio.country=AT
done
uci commit wireless

View file

@ -0,0 +1 @@
../../../../../.git/annex/objects/qZ/Z2/SHA256E-s214--aed1c032b77503779cde57f6c7d86b178fe9378b38e055db1c3c6d63bd405289/SHA256E-s214--aed1c032b77503779cde57f6c7d86b178fe9378b38e055db1c3c6d63bd405289

View file

@ -5,11 +5,12 @@ config interface 'loopback'
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'
config interface 'lan6'
option proto 'dhcpv6'
option reqaddress 'try'
option ifname '@lan'

View file

@ -5,10 +5,17 @@ config wifi-device 'radio0'
option path 'pci0000:00/0000:00:00.0'
option htmode 'VHT80'
option disabled '1'
option channel '108'
option channel '48'
option country 'AT'
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'it-syndikat'
option encryption 'psk2'
config wifi-iface 'pinned_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'

View file

@ -0,0 +1 @@
../../.git/annex/objects/x8/FX/SHA256E-s3342340--cc00d2ddc3972b9402dcdba12d4f5970974f0b203900b62efa5121633c5e5ba1.bin/SHA256E-s3342340--cc00d2ddc3972b9402dcdba12d4f5970974f0b203900b62efa5121633c5e5ba1.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/8V/Z2/SHA256E-s3145732--48f75b8781f0963b0beb848b1c71f9c25dc509537f6f2b6b22becec5ed138c4f.bin/SHA256E-s3145732--48f75b8781f0963b0beb848b1c71f9c25dc509537f6f2b6b22becec5ed138c4f.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/Z0/Pw/SHA256E-s3538948--2db276ba8b8daeb4256b110ee50bbdeaa8eeadab8e86b4a9fed499096c48ad79.bin/SHA256E-s3538948--2db276ba8b8daeb4256b110ee50bbdeaa8eeadab8e86b4a9fed499096c48ad79.bin

View file

@ -0,0 +1,6 @@
Date: Sat, 14 Apr 2018 01:26:25 +0200
Image-Builder: http://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/generic/lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
5c21eae8fb2d6dfceea833c2c442c6a5af2c700e57f6db15565d659107c3f71fb27eca4afaf0f5dc94cf842dde5cfcf3798036ea710b36312f667b5c8d942c01 lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz
1a49f621364a26e22ea98cd822ce9f810e4323649cc8b943996c640cb56b7fd80c120dcbb2bf66995128c8a611e8b554823fe93e0dd819a951e3c3fe11724037 lede-17.01.4-ar71xx-generic-tl-wr841-v10-squashfs-sysupgrade.bin

View file

@ -0,0 +1,6 @@
Date: Sat, 14 Apr 2018 01:26:54 +0200
Image-Builder: http://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/generic/lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
5c21eae8fb2d6dfceea833c2c442c6a5af2c700e57f6db15565d659107c3f71fb27eca4afaf0f5dc94cf842dde5cfcf3798036ea710b36312f667b5c8d942c01 lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz
aab666219b1e70d180a817ba8ec653dfd0f35964d5d3fa97fbd4c9c6e2943183461de65dc5051ae3b4c3077171e69753f99cc2e391512a2df82024d8483a3bad lede-17.01.4-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/xq/FF/SHA256E-s3538948--be21f68db34bc2303b5fea111923f75c513b97fd3d9fe7af4cef3485555788ae.bin/SHA256E-s3538948--be21f68db34bc2303b5fea111923f75c513b97fd3d9fe7af4cef3485555788ae.bin

View file

@ -0,0 +1,6 @@
Date: Sun, 06 May 2018 22:02:49 +0200
Image-Builder: http://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/generic/lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
5c21eae8fb2d6dfceea833c2c442c6a5af2c700e57f6db15565d659107c3f71fb27eca4afaf0f5dc94cf842dde5cfcf3798036ea710b36312f667b5c8d942c01 lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz
14228713d604b5fc60429d38ed7055939c10a2933330017c9862ce1d87b1ae9d9d2710c9e60c849719e2c3721f903be74a81ca6f2d2f138c7abe37a18dbb47c8 lede-17.01.4-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/Qx/jq/SHA256E-s3670020--2c8c917c446ab5a322f47ae2d69ab090406b40f9f4006204b0ec3f940778974a.bin/SHA256E-s3670020--2c8c917c446ab5a322f47ae2d69ab090406b40f9f4006204b0ec3f940778974a.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/K2/vk/SHA256E-s3276804--c880339c48acbe314cb77c94d9c087dbc6cd0e875d4ffc230b9ed4dc8ff5bafa.bin/SHA256E-s3276804--c880339c48acbe314cb77c94d9c087dbc6cd0e875d4ffc230b9ed4dc8ff5bafa.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/zX/GM/SHA256E-s590--96b5b6bfeb9c1c27237d25a9c69f15574d24a0e0bbfcb4d7f7a9bd7d35943097/SHA256E-s590--96b5b6bfeb9c1c27237d25a9c69f15574d24a0e0bbfcb4d7f7a9bd7d35943097

View file

@ -0,0 +1 @@
../../.git/annex/objects/zv/F3/SHA256E-s607--76c9f63a6817c18847bf56daa2100a83dcd37159c59d4b89768bfdba980bc0f2/SHA256E-s607--76c9f63a6817c18847bf56daa2100a83dcd37159c59d4b89768bfdba980bc0f2

View file

@ -0,0 +1 @@
../../.git/annex/objects/14/pJ/SHA256E-s3735556--2d30d1a7f5404f1f74d5947763e74526fded14d127f8dd11312ce5394487fae6.bin/SHA256E-s3735556--2d30d1a7f5404f1f74d5947763e74526fded14d127f8dd11312ce5394487fae6.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/3f/pj/SHA256E-s3342340--0241343e038f69e683c04bf0980b682dc270863521c6e80de17a1909fe8bd98e.bin/SHA256E-s3342340--0241343e038f69e683c04bf0980b682dc270863521c6e80de17a1909fe8bd98e.bin

View file

@ -0,0 +1,6 @@
Date: Mon, 14 Oct 2019 19:40:24 +0200
Image-Builder: https://downloads.openwrt.org/releases/18.06.4/targets/ar71xx/tiny/openwrt-imagebuilder-18.06.4-ar71xx-tiny.Linux-x86_64.tar.xz
Checksums-Sha512:
91f25fdef9cdd278971e2721dd152d719053588aae03a7ef283a25825b214e8521facea82d8d3f50d7c3bcc78ebe381586c28590e31dc8af5c309cb9c84a530a openwrt-imagebuilder-18.06.4-ar71xx-tiny.Linux-x86_64.tar.xz
e30304bb8e1215927a37f98f07c9ed0672fc89e947b49e4cbfaa83ad4086e1f05ef367f325d0c4277718c16f8fd9bf59a23992eb01710e5ad49b71c49dd81f44 openwrt-18.06.4-ar71xx-tiny-tl-wr841-v10-squashfs-sysupgrade.bin

View file

@ -0,0 +1,6 @@
Date: Mon, 14 Oct 2019 19:39:55 +0200
Image-Builder: https://downloads.openwrt.org/releases/18.06.4/targets/ar71xx/generic/openwrt-imagebuilder-18.06.4-ar71xx-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
ad481db293cc690087d1dd92b802584e158eb8f435c3a911e7406e21f3343d456a07f9f16d5f636817f55fe64c08d7d6a1227284f247f281251dde76430ae7cb openwrt-imagebuilder-18.06.4-ar71xx-generic.Linux-x86_64.tar.xz
557e50d6cbd8f54ce9c7ce27d7366cc65d1dd310b225d8929023194a154989c6a450b7c966a9e74d020752afdee4e0379019dfabf756ce22b42de3748d822fca openwrt-18.06.4-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/WF/zv/SHA256E-s4063495--ce1e3e5f6d6550e593b1b55fcccb9a3e67a42bd760bc70aa840948aa7cca5461.bin/SHA256E-s4063495--ce1e3e5f6d6550e593b1b55fcccb9a3e67a42bd760bc70aa840948aa7cca5461.bin

View file

@ -0,0 +1,6 @@
Date: Mon, 22 Jun 2020 22:27:28 +0200
Image-Builder: https://downloads.openwrt.org/releases/19.07.3/targets/ath79/generic/openwrt-imagebuilder-19.07.3-ath79-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
a8e827523c4ada8b03ad0c11b32e49e50e7f4205763bdc2785037642b8534c355c60ddf560414c62523b54d6124d8fb73c8dca832950cc1e70a78fa61e3ff551 openwrt-imagebuilder-19.07.3-ath79-generic.Linux-x86_64.tar.xz
8b02b708ca3956a59c2f6c328c7022e8a1d9aff6dcac5a26f8e52acd02720872cb36e732b21e15949215899106ee9884b64fc3ff2b4c9794320fcc94a17d26cf openwrt-19.07.3-ath79-generic-ubnt_unifiac-lite-squashfs-sysupgrade.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/pQ/fq/SHA256E-s4063495--8c8cac6475a9b240e66435e0edba178e414e1622aa864954278ae00d076699be.bin/SHA256E-s4063495--8c8cac6475a9b240e66435e0edba178e414e1622aa864954278ae00d076699be.bin

View file

@ -0,0 +1,6 @@
Date: Thu, 17 Feb 2022 22:51:26 +0100
Image-Builder: https://downloads.openwrt.org/releases/19.07.8/targets/ath79/generic/openwrt-imagebuilder-19.07.8-ath79-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
12e53dde0fef1730f17684b22190053fd12face29da778b99a0f3167dbe229a66f42c3c82e8e957075c481ba32576b9fa3f53ca4c6aac8ac17a96949f5a12061 openwrt-imagebuilder-19.07.8-ath79-generic.Linux-x86_64.tar.xz
61366d912094e5c04bb2b004643874c19cdb205402cb97b0a4f6cc4bc48e295025c9cbde62b587488b365959384567479c573b208661edb02067df0519ec730f openwrt-19.07.8-ath79-generic-ubnt_unifiac-lite-squashfs-sysupgrade.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/g9/Z1/SHA256E-s5243702--035434465d473021817534474c3a925028a2d17c071611edb49e7fc4406454fa.bin/SHA256E-s5243702--035434465d473021817534474c3a925028a2d17c071611edb49e7fc4406454fa.bin

View file

@ -0,0 +1,6 @@
Date: Tue, 15 Nov 2022 19:53:32 +0100
Image-Builder: https://downloads.openwrt.org/releases/21.02.5/targets/ath79/generic/openwrt-imagebuilder-21.02.5-ath79-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
dd81304f8125093f0b72596a0d90dbc93e0cd7b7d2171b5025c355dd918305d0aebfab0d15f7efb6f656d1edb03e09c7dbab612b3d0c1f627f314f49620516e8 openwrt-imagebuilder-21.02.5-ath79-generic.Linux-x86_64.tar.xz
2f6046f583500da25bb39b049d56dcab0bcf289799bf053178bd1d14b828dbf24d351e4e75912342eb5d25177d67a668c4b0e167a6cf8963b6f29888e4374f8d openwrt-21.02.5-ath79-generic-ubnt_unifiac-lite-squashfs-sysupgrade.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/40/j2/SHA256E-s4063496--99d488f5ea7b221f3bf021d03f6404746b8656bdb04875d301367382af3771e0.bin/SHA256E-s4063496--99d488f5ea7b221f3bf021d03f6404746b8656bdb04875d301367382af3771e0.bin

View file

@ -0,0 +1,6 @@
Date: Fri, 06 Jan 2023 20:35:32 +0100
Image-Builder: https://downloads.openwrt.org/releases/19.07.10/targets/ath79/generic/openwrt-imagebuilder-19.07.10-ath79-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
66c89c4263153f24fe51a0f088cb863d09001086cac9886cc5a5fbbcd090d2418a1b4bcb5a2cb458fb0655f550367ff10bf48dd237ce1d515f214719c7f2afad openwrt-imagebuilder-19.07.10-ath79-generic.Linux-x86_64.tar.xz
b31a061364448762896bb06ba77a073fe21156c9a0810ac4ea75871f7b9fe45b015908829218d82c6f74dc671bb7de5229b86d19127e0a1102157ae67cebd3c2 openwrt-19.07.10-ath79-generic-ubnt_unifiac-lite-squashfs-sysupgrade.bin

View file

@ -0,0 +1 @@
../../.git/annex/objects/X4/5Q/SHA256E-s5899062--8a3ac6e4f3a01e51b0c6afdbf4c98340904c496b61d0843a0695a2cb4e83a70a.bin/SHA256E-s5899062--8a3ac6e4f3a01e51b0c6afdbf4c98340904c496b61d0843a0695a2cb4e83a70a.bin

View file

@ -0,0 +1,6 @@
Date: Fri, 08 Sep 2023 23:45:55 +0200
Image-Builder: https://downloads.openwrt.org/releases/22.03.5/targets/ath79/generic/openwrt-imagebuilder-22.03.5-ath79-generic.Linux-x86_64.tar.xz
Checksums-Sha512:
6f6c09d77d4df840d4889cae4b6c51dd92b2d3c30f0b55b0e1dfc3397fafabcce383028ce6c78718b5b588977a84a08625a70405834a7503d6d3135d75b6a4ab openwrt-imagebuilder-22.03.5-ath79-generic.Linux-x86_64.tar.xz
631313b2aabce61bcdb8b872d1fa3a2d31fa7a85d5f8a2ad8cb2fec24c2f80f31949b560cb891a56ad9d813f310f74419fd7160a94be8f25270a6f85b6c9ef9e openwrt-22.03.5-ath79-generic-ubnt_unifiac-lite-squashfs-sysupgrade.bin

54
keys/15807931.asc Normal file
View file

@ -0,0 +1,54 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: OpenWrt 18.06 public key v2
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
=VO4g
-----END PGP PUBLIC KEY BLOCK-----

66
keys/2074BE7A.asc Normal file
View file

@ -0,0 +1,66 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: OpenWrt 19.07 public key
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
=u3sV
-----END PGP PUBLIC KEY BLOCK-----

102
keys/626471F1.asc Normal file
View file

@ -0,0 +1,102 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: PGP key for unattended snapshot builds
mQINBFeXZ7wBEAC3QZ+jhWrdj2XW9AdZpZrgHETZCW7lXxI3pJ2kS4UXNq+40KR2
GJOdsXDnLb7ZiHNn6yio6qKLXFD/bimxK+22HSJlc3LSF2kKzNrgKoFR2rIKbL3c
Us7GpWY8VqGTrfwR6OQNcoWqa1n5/tK9xuqKhfpoA2Eci8K+w5YCzCmnOz2vzbgS
ptuFshTKYI2Z/DLQZyP+OQkEYPfCdani2KsISn4DTx8xFjmW/sb/zf0isemTwWyK
Oh76FTa0tYdjTtAv3JHqyr2XkddM/oUSc09baCOfhUdo7Ep5rUqKw7BQsjreBYoZ
WcL/hmlIksUrFlqo/HRpoBgCZpSjsF/Z9otZpSugMHVVlRCnAKQiWxWAd+V+y2FG
q79myPgiMkbkaIrCelrUhDFRQ5wTnfAppFolw+xtT9bwdkwxZDNBe6PCYuLqD8wg
jtDtt3q5UaUOMGJrMDKZ0Wi6ycdl/sM59kLfyBV4ybmYkwOLTlMvOATiyUZeJJZO
2bTKBvD+izsx3Ea4VLPWYSFmk6QwaOMtj6tcXwBgtljzqMJ0S9Gubmopy3WAkP/m
/6ETJpuIupqEtvbRTX4O/+qnBgY40aQX7B4NgJi2SypP/WML5v2B2amLlhTcN+we
ULWyH9KvfKny5mrtG5C9xq1eAgKtB2QEDEbRyz34DWVWGpqIY1mscaNv8wARAQAB
tF1PcGVuV3J0IEJ1aWxkIFN5c3RlbSAoUEdQIGtleSBmb3IgdW5hdHRlbmRlZCBz
bmFwc2hvdCBidWlsZHMpIDxwZ3BzaWduLXNuYXBzaG90c0BvcGVud3J0Lm9yZz6J
AlEEEwEIADsCGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AWIQRUzHQweixtyc5h
gmnNhLztYmRx8QUCXTdRjQIZAQAKCRDNhLztYmRx8QgjEACmORm3zSoIX77q3YXg
rjLiCaHBCT+2ViyuGbI121jUhy1mJk3+258Jl0YOddLjQovK3mECWOIU8UoucAkK
OKRNV5bSCQtlp5sjiw8mUc6NAJ74Ef+SHEV4JYK64JDfQrQU8TuqzWUwTDHhJxhU
nlk4NWSpq9jQDIaeS5YqS2SHNOGACAYmcRWuWEkAXe/FECWZYR3C8ukX3FhdSZM2
I3J0xmrsKI7Yu6EgPwpVjDPrnkA/++vXaGSfFKlf1OoKB209KXa04LefukkPdecs
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
XNiJCsDUg/RfnN2p9pOYzMY/0HliaQqzkdcznSclfG/g+KV754Du2v/5M9qXPZCx
Axg0Ms9Qprg5FOxY3VNQ2sAjGIqRqRx+DfihDgXuE/bxHi2wLelinGMrXid26FvM
DMLyYC0NA1zSJdBpoH/iNGc9JmfuFi+xX6WgtC4YR6aCKpWhTzR0z0Me0whgp4wt
qmdVBru8MoxJUGe05FlYG2O73+3QxhDpxnpsFAGkE8aA8yQK77w8m+ClgFiw7uB7
vHi4xJtKN2HYKaycWidxS57eMM5FBRHkdzJvEALzheWr2R0TsfLlW42Gex+HPZYB
PfJ9c44SuTJni0htTZl1gMiEIj7lc4xvg0MmOwqG93SlhEvcEPR4uQINBFeXaH8B
EADO0x1PmKDkwozTZMWyYa91zRJBUc8nKY9OHqL9fABtJ5pMSu8Ys/eR77Zx0KMw
56ziy14gjkxTpoPnuLXNT/rGFnZmvyxnh8I7N+qgjgA4h566I74jlvLY/4z6+Pa/
9TsoxZ6LEWNOSi1Zy8YauI/WNxFjUUcytN+r/mVlg0cfPP/bO+zOrTb9Y/5v8aHV
F/XJ+vkOVcrDpD7t+QKDwFZ8uJyFO0eJHQ5w7Sa0PoQLHP6KoMSVtIB4T1DTZ84V
MXiycfAIm/KQdDgQq50ShdwgQ5HxPIfa0qisPzbUT8NJX04D1cgGkMdq8VDcYKzb
0ZBypyLjqc4uf8taqBMHzqyAfiadCsaxx5VjN/xq8zxzxPLGS58F3+TTWU+fWwr/
nvcBZ0VFdWY4IyaXE9wjyTX6IYfULvPRpfjc2+EQjfF9uBMrwT/sqWuf/nFdS7ZQ
Fii/SApplHLcukYX/JJHWm+cdmZQ/nybLYsN9YMd0esaaSMtqrKT/6oL00rBRAFL
uNXsybXkHRuRHuCsvH683mVdV4bDIMvZ1tFPT5wfyWgdv6UE5HwBsObhIld1pF0O
0/Krzko36Ob701OhHP6jJ0v2uaC5TnNFwgO1oWJivtm2QslTdTTaunS5/8N3K0W3
NL9gRumCDZSLfurnmaXvTvMkvYO8F9/L8XaSI2lV9ni7lwARAQABiQQ+BBgBAgAJ
BQJXl2h/AhsCAikJEM2EvO1iZHHxwV0gBBkBAgAGBQJXl2h/AAoJEPk1JaiLaZAp
D88P/1z+ydDaKiT0f08WKdia44Dq1/g1ufTJf2g5OyUMnyi3pIHg5cZcZ5PSW+rK
1thV4CWJ8ESVhFUVhm3vp1uOGqayYMxmxgdtpchgtlI+5MRNUTelmulaGb1CSFt4
TKKECh+BaV4GYlx3xVeevOw2QkY2iQDqCpn+V2om3MzCR4cznwMej+AU002XF7wz
zc8cDSs3jwXoNTi1l4S/P79AauefgNZwGGZaj7Zku9MsjhwH3fz2PySzsUUVcuLW
CdaKBavb24a/yJmkCd5jrjXhxlbcbv3BMjAABNG8i+sj2ly+uJSsx07JxNzBc5p3
15er+Yl2Dx0SkqIgDxVz1Q11P3dpm3yvrXQts5GZ2r7AWMSFa+HvEq72EWb/dQxB
RpWXeOwiWplPgbx6z5EsecpU7MsxGi+pEpFuwKxfEjGxWrHOEpDn7AsKmKxU18fn
VYJNIugDPuzSMosJLO55QhuFXa80EzmUUs0KXflSA3Vpi5G6wjsbKqQ9P8DxVaPF
XGfujZIEjDK7iFniMWyreoc7KAi5G104dFfW9ESansUDf59WfHQIlSKV+caOF/+j
J18QLoa5ZSf2RMR/Z4mw43BD2A9D1AL1wUZEVGtXBBx6OvtX4MFlJ3Njxgu+ftGp
HcyaVd2laKOqPueiLYL6RtWpsuJf8tZ7ZrGAoT5RMHuUZ2Xu/bkP/324UjMmaoB2
EQARCBvXsvuQ5XQw4HAW1np8SUlpARBXj0mJCaBPMAsOBcPQAKlPmqhBgIFPC7Ob
YP3d6R8yfPEXw+bBbprZzOsbUqhGKvYRrKGASg4m5Ycud5vmdRztfeSsY1InebL6
UzDZADfAhfsQBLoklSdkWnvBrB5x0J6REX1kTVn9kGJRlHXsORsChiMRhkXGJcBw
bqwUQz25Mb7L3VFxA+ry1j6PDZ3vpmMdKegqOc/ZXGya2JZDvIuP/m2OtXNB+0ht
tBBMrhXg7hpXZjXCCQNs080nq3RuJCQdC/7i9osyic58yAZ1Z1gniET2eW3rUCoa
J06fIzE5v7ZelXKk6g49xPJOp7wFSMJy8dDC6RkuTdcTs5ChHTBkEWE6vgkJjNPE
jP1ditLKRmCRkynw7jNs/6PVlNe0kS+88eM5LUeQvU7Uf5b3x2eX6hAw1CEe+8Tp
R9YSiV+5a8Gl8/XalSdFAADIIGqXgkAV6gIkR0kaTPygU4XG/SQKl3skzWBYSza7
TDrX7kx6WaWIciZaLKGBXhfIpbqN4pYil70TkvtvxI8jkcd1PuinLcbtoPVcjeSN
1oiIyclurSdK9zlWpETtS/QQRx6m8V6K5gdjJ2W7FHI1/+2zYmyR8Sew5zUmJL4Y
94igaYUvzmq0U7NziyphAaEuP2IxF+Y3
=hW8R
-----END PGP PUBLIC KEY BLOCK-----

53
keys/8F681580.asc Normal file
View file

@ -0,0 +1,53 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
DAT8f8syxL8GNRw=
=Odut
-----END PGP PUBLIC KEY BLOCK-----

65
keys/ADB3684D.asc Normal file
View file

@ -0,0 +1,65 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGI9uGgBEACn5DOJLGMj7NyuV98wASdbhLpWMydr90DFP6T3oE/MG1NEytS5
1p5bihUsZKRrvCD/T8cguTHXapJyOmlBX8cOBDuEL4MMn+gflbFuQ+5FLLQmX40p
h0y/XMakenTeOG4oxjAgxvdy68Sw2MOan1VUXdq0JwPtN7T+7Tv8q7ivjuvWYqUJ
sxiVEzsxRqZHyJkyEKuu2yEjfqRnVlarrMvYtWNkGt7GtPKO4lB4IaZkG6jUJWJG
7+TBsX8CtbK0y7NOyI2fXYc7w2Jix1OdWeyDyeAJwo9vig8XdRjsGy2w9JkEiUL1
fbF8TyJBy8O6Zi5IZGmTfYLu9odpcj2RloNv45XNV9KvGLWOG78sBJcuVilT3ouC
fTDUBL5A7P8Hsz9qAcIkY9QNAH/uHk+v4X4tqahyzyrWRW2S9xzlpjcMXJ2rH8kl
GTBQ8KIe216jhLtFwIl0s/+D7pEBpTn7UY2Ocu+Ifa3nQB+WQ+7NsHdwb8XZ1CFX
coQd3o4sSjeddYzlBWh5LTV49OeIgqg69DyaFELh9OdU1VNfaV4ri7pIEtYUs7fY
nvhO94neFVmcWxnNoSO6O+OPyppxKpowMryliZJJLFS6CUfNVtZg807c4JVY1SN1
wNEUy4Bmhz59RS65UCTtPIVxC3qWJxFlLdIs3DQj9MDOj2DNsN2uOEvEYQARAQAB
tFZPcGVuV3J0IEJ1aWxkIFN5c3RlbSAoR251UEdQIGtleSBmb3IgMjIuMDMgcmVs
ZWFzZSBidWlsZHMpIDxwZ3BzaWduLTIyLjAzQG9wZW53cnQub3JnPokCVAQTAQoA
PhYhBL+FZ4GgEpPIQJq+cs1U6C2ts2hNBQJiPbhoAhsvBQkDwmcABQsJCAcCBhUK
CQgLAgQWAgMBAh4BAheAAAoJEM1U6C2ts2hN00EP/0anlZ+xcIksiaXpVza6aoSd
Q6fqX6V3bR6q6p6G3DHREEfz3sapU6cDoZBC9NGkvWuHY+c7kgo2F9UzcnlP//50
nDC0ZRokVad092mjXI0xrAixTvssnq900LIb9C2HyhnPuvhZAyXgMIdB/ZvRye/Y
7kBY7AmG4/F566CgR23rWRqpuCoEami+kkutmVCvX8iDygsVDH8yl/vSe9X7gnHW
X2IvcGgIWluVRPsHyi0OTzaNv4/mRb4uXGCj1aqbkD42GHhuE3w/dUkS25iq6XcQ
vyYAFvUHFZqQLSMnYWeKZhVJ9W4SkkGaeb5Vjrdb+o8scqGIrEgMSgbO9amg3l+H
5Ny5Zg8vOhsWjx5o+CPIhDU3i/YuWfypMzQlBNnX7h3r7zcWoz7NcZYNRxH4uK2G
dzkRYL4w8ozmvXFkVizVTs/A18t/BaZ5Cahkz96mQCS+LoFnhiFfCFK6cVZYFzD5
84kFwxet/auqsFFxTzkeHiNyrdKssgqVtBiaW4CsjvQJg/OAgvKkncIFLHKyezZO
RfEaNfXqZz8t5JtqsFIIOblRojhoyc1IsREpc0fQ8gUqAuiIopL5rYO3c5xydtco
yLBiC0jqvVrfNQZKengMD4ZZ9nIpzTYOBn3T/2VMbV0SWKWv7YrTQeWNlb9glE+1
QmprBtpcT/jaTStL80TNuQINBGI9uGgBEADRiflKdf4QUg3khIWf2LERq/4aHP0w
auyO5nAaokQc9XEJdLliNgBK2KLtjvvTmtIlWolS+dSW/WsaUEFBjAzjIe5qrTWe
hb4VLTAjBvJQE40vA868Q1hO5+deFftz++RxlO9ovjqhzGkTi+2Iuald+zO01LZ6
PyJvnwHMnvp1vX6Ge5DkI1lJZCcz6VfB1c0NmwF+E8jY4DGKNS9sZD6Uc/dEfnNK
xyEkby/87GVZ7QwzXZ3O2XOeRFPrOsufC5acelT6z4PkPhjXQGu1ibKhYms48aOq
koZ82Yzisas2ESbHH4uFOHkIfhNfLqoWTbw3UB2u1CKQGyb7kMJ7F70Jy8dzqA+l
A87gZe4jamHlCfORAI8rKW006WQMG8Xp09+8ylpHHr0lhE+gaQNnn793yDDbz+gs
1k0CQjCo/Nh2MblhA/Q+58o9aYt7xMbHATyZ9MhYCFcVWzOrnWaVKKKaJyYBiFcM
p1s/2JvN40egHOeQmXaWcBMlMqWhxnGXWGgThHXYaBA4x8YuT6RMg6TzByF20WMY
LcIkCWKqQZNCIESW25srUnCS+ZKdwmg9kbvbKV3cf8pxAKkcR+x8qGLYItF4aSjn
yAP2dSkAYI8zNSKnrFvorpGtLzy8cKFDGeMr0e7reggYuvgKiLRTgDY5VCezZBWG
u8nG6cJT4UYGywARAQABiQRyBBgBCgAmFiEEv4VngaASk8hAmr5yzVToLa2zaE0F
AmI9uGgCGy4FCQPCZwACQAkQzVToLa2zaE3BdCAEGQEKAB0WIQQf389p9vt3drFN
1h2rP0BJE6oNWgUCYj24aAAKCRCrP0BJE6oNWqWKD/9vrH2XBtcV7aJCrWc4gqKX
fQQ4LINE8fCQ65yCNpth2iZKNTLh077CB/0ekipxJfu0fHFcE5NXAa3C6YpGxI/z
YyrBbnv1iHLZLr2a+fWMvB3kJAoxc2mz2HKe3x5trlmjTaS9PQF/Y+/AmCdsAzUl
iZICeZITPEYmAqAg5gQxnrxeqw2gLjrxav5L/OfSjY8te36S4I/CfAVUjm/ptWOB
zIcoVsk9xLMWUxkBDewhO2vwDVaIdeDr8MlUx9V1HPbbNiZklQi9Hk4Zw6X+NiCa
B/K0dbFdH6JhrmgAHrCTZPvELTyRWW027NCOMMxq52vg326EZ5x4ix2irV0EW8E5
jK5+DtXrgB3dMhhNiWkNTzMttOBPccOvJEASz79k6eFN7pG69CI4x0j21F6lKK/h
fpB3B/skc2jdoCbUledo7EWQeS52eyiGi5DLVypwpatJY9A2sW6CC3RyriRJFcWT
Ef9FcRVU6OIm7CVCHwiPZYSApV1rN3NZgx27NVVWC88Yv8FN4uC33h38F2BoDgHV
jDH0V+iFBfGNQtLBsBQKm0yoYFpFtRlPLsnf5Z/r4N7zhOB1WRyNDg4inXSuhfAT
adOCFDnqqGTwLElLV/SvLeWcpJgwnUT+wXtuiXdM67BHV/iigaF8yl73jhWg8mZT
8rodG0w1TiFG0e5fdI/1FqwHD/4iNMinqlbrcozYfhD31NL4UoF8XHG8QyJd8Nwi
+j4bWAMckkp5SNrb/T4F5aXfJpa8GPB1Z0MFiM49X1RCWFjQe3bM57XxFnRQPnhr
PQ55Zf+rnM/5uAeof/GtZ8vv7dU4Lw+39OLJXhZYQdWsfmrkIWwf6/0WvuYImK/V
RpR/76N36+vFwbNrD2tAM+WnkiMTCEA/kOVnH0DX8PmPGv6+UHLh1irljmWrcrMc
hZ9aZdpDLYremF9Jx1h6srjIvhSKOIZunL9SVy4Ol3uXFWG5qQ/IV6Hx/dfUBvNM
sqOT7OLMoNkyBzZ4+LI0TMXyjrkVpufQvrC+WsV+Jvoh/kvPDFAB/UBXRNHVxRYz
7ghSHh3Ytrp1uJTiUIv34EDwTxUw0QP6Qt9qJdieDJQjUUszJkff5bgfdJZyf8Wj
fqJzzEIqGNQESF4z6tdKbnjHxcvcXgbj1skn/sSc5X+hFDi+jFqx5m7IqXXGpZoZ
mf5tUw+QNTYVQyHikhPZDAZemJOMq/rt1sk0jcuBSLxreui+uRHpjVMN2sqAAvS8
DRjPE6ftP+gPTf9h5+AfGlQpKh0Tz8nSS+9CDSdym6LQDANcBoJ3ha+lMH30sTr9
TfIicPvW3WzwYj6amW0DewX3xereaLCBsaPuqig9t8rVRQgFTKgP9Tuu1SPwAmU3
pnfnQw==
=TMB4
-----END PGP PUBLIC KEY BLOCK-----

16
keys/Makefile Normal file
View file

@ -0,0 +1,16 @@
trustedkeys.kbx: FORCE
cat *.asc | \
gpg --no-default-keyring --no-options --trust-model=always \
--keyring ${PWD}/trustedkeys.kbx \
--import -
list:
gpg --no-default-keyring --trust-model=always \
--keyring ${PWD}/trustedkeys.kbx \
--list-keys
clean:
rm trustedkeys.kbx
FORCE:
.PHONY: clean

BIN
keys/trustedkeys.kbx Normal file

Binary file not shown.

View file

@ -1,59 +0,0 @@
# sozial.asozial install guide
Sozial.asozial is a FW8888 (Intel Atom x86) machine with 6 network interfaces,
eth0 throu eth5 where eth5 is a fiber slot so we're not going to use it for now.
## Port-eth mapping
Just works in OpenWRT! They sort the ethX names by MAC like they should :)
eth0: Port 1
eth1: Port 2
eth2: Port 3
eth3: Port 4
eth4: Port 5
If in doubt:
$ ethtool -p ethX
This will blink the status leds on ethX so you can identify it visually.
## Port Function Assignment
eth0: Broken causes timeouts and adapter resets occationally
eth1: Broken --''--
eth2: --free--
eth3: Uplink SW0, Freifunk
eth3.2: AP Management Plane VLAN (APCTL)
eth4: --free--
## Installed stuff
- kmod-usb-hid
Absolutely essential. No keyboard for VGA console otherwise!
- collectd - 5.4.2-1
Statistics collection from APs.
- collectd-mod-interface - 5.4.2-1
- collectd-mod-iptables - 5.4.2-1
- collectd-mod-iwinfo - 5.4.2-1
- collectd-mod-load - 5.4.2-1
- collectd-mod-network - 5.4.2-1
- collectd-mod-ping - 5.4.2-1
- collectd-mod-rrdtool - 5.4.2-1
- collectd-mod-wireless
- sqm-scripts - 1.0.3-1
For rate limiting and (de)bufferbloat optimization on WAN
- ip-full - 4.0.0-1
It's just nice to have.
- tcpdump
Well you know.
To install use `opkg update && opkg install <package-name>`. You need to run
`opkg update` since openwrt stores package lists in RAM so by the time you need
them they're likely not there.

View file

@ -1,32 +0,0 @@
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.010035] ------------[ cut here ]------------
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.032627] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:303 0xc138576b()
Mon Mar 14 23:00:55 2016 kern.info kernel: [ 814.063157] NETDEV WATCHDOG: eth0 (e1000): transmit queue 0 timed out
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.091381] Modules linked in: pppoe ppp_async iptable_nat pppox ppp_generic nf_nat_ipv6 nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_CT via_velocity via_rhine usbhid slhc sis900 r8169 pcnet32 nf_reject_ipv4 nf_nat_masquerade_ipv4 nf_nat_ftp nf_nat nf_log_ipv4 nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrackMon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.464766] CPU: 0 PID: 0 Comm: swapper Not tainted 3.18.20 #1
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.492993] Hardware name: PhoenixAward 945GSE/945GSE, BIOS 6.00 PG 08/25/2009
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.525431] c140194e c1030133 c14d7964 df40bf54 00000000 c14d54de 0000012f c138576b
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.559901] 00000009 df5cc000 df680780 ffff392b ffffff32 c1030183 00000009 df40bf3c
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.594465] c14d7964 df40bf54 c138576b c14d54de 0000012f c14d7964 df5cc000 e08de401
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.628997] Call Trace:
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.647116] [<c140194e>] ? 0xc140194e
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.669092] [<c1030133>] ? 0xc1030133
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.690998] [<c138576b>] ? 0xc138576b
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.712747] [<c1030183>] ? 0xc1030183
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.734379] [<c138576b>] ? 0xc138576b
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.755921] [<c1385660>] ? 0xc1385660
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.777369] [<c1053d41>] ? 0xc1053d41
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.798769] [<e0de69d7>] ? 0xe0de69d7 [e1000e@e0dd0000+0x1dce4]
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.827004] [<c1053f4e>] ? 0xc1053f4e
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.848381] [<c1031ef5>] ? 0xc1031ef5
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.869588] [<c1031e60>] ? 0xc1031e60
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.890599] [<c10033f9>] ? 0xc10033f9
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.911499] <IRQ> [<c103214e>] ? 0xc103214e
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.934411] [<c100322d>] ? 0xc100322d
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.955361] [<c1058417>] ? 0xc1058417
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.976194] [<c1405b69>] ? 0xc1405b69
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 814.996993] [<c1050000>] ? 0xc1050000
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 815.017673] [<c134044d>] ? 0xc134044d
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 815.038232] [<c104a595>] ? 0xc104a595
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 815.058685] [<c1547a87>] ? 0xc1547a87
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 815.079028] [<c1547560>] ? 0xc1547560
Mon Mar 14 23:00:55 2016 kern.warn kernel: [ 815.099175] ---[ end trace d228a7100660f086 ]---
Mon Mar 14 23:00:55 2016 kern.err kernel: [ 815.128211] e1000 0000:05:0a.0 eth0: Reset adapter

View file

@ -1,66 +0,0 @@
\documentclass{article}
\usepackage{bbold}
\usepackage{commath}
\begin{document}
\section{VLAN Introduction}
For those unfamilliar with the concept of a VLAN (Virtual LAN) here is a shot
formal specification of what such a thing does.
A Switch is a 8-tuple \( \mathcal{S} = (\mathbb{A}, \mathbb{P}, \mathbb{V}, t, v, a, \beta, \epsilon) \)
consisting of
\begin{itemize}
\item a finite set of (MAC) addresses \(\mathbb{A}\),
\item a finite set of physical ports \(\mathbb{P}\),
\item a finite set of VLANs \(\mathbb{V}\),
\item a mapping from physical ports and VLANs to two distinct symbols pronounced
``tagged'' and ``untagged'' repectively
\( t : \mathbb{P} \times \mathbb{V} \rightarrow \{ \tau, \upsilon \} \),
\item a mapping from physical ports and VLANs to VLANs (Port PVID)
\( v : \mathbb{P} \times \mathbb{V} \rightarrow \mathbb{V} \)
with \(v(p, q) \mapsto q\) when \(q \neq \epsilon\),
\item a mapping from addresses and VLANs to physical ports (ARP Table)
\( a : \mathbb{A} \times \mathbb{V} \rightarrow \mathbb{P} \) and
\item the broadcast address \(\beta \in \mathbb{A}\)
\item the empty VLAN tag \(\epsilon \in \mathbb{V}\)
\end{itemize}
A Frame processed by a Switch \(\mathcal{S}\)
is a tuple \( \mathcal{F}_\mathcal{S} = (d, q) \)
consisting of a destination address \(d \in \mathbb{A} \) and a VLAN tag \( q \in \mathbb{V} \).
When a Frame \( \mathcal{F}_\mathcal{S}' = (d, q') \)
enters a port \( p \in \mathbb{P}\)
the Switch first ensures the Packet has a VLAN tag for internal processing
assigned by creating a new Frame \( \mathcal{F}_\mathcal{S} = (d, q)\) with \(q = v(p, q')\).
\subsection{Broadcast processing}
When the Frame's destination address \( d = \beta \)
the Switch creates a new Frame for each port
\( p \in \{\, p \mid t(p, \_) \,\} \)
in the following manner:
\begin{equation}\label{eq:egress}
\mathcal{F}_{\mathcal{S}, p}^{e} =
\left\{
\begin{array}{ll}
(d,q) & \mbox{if } t(p, q) = \tau \\
(d, \epsilon) & \mbox{if } t(p, q) = \upsilon\\
\end{array}
\right.
\end{equation}
\( \mathcal{F}_{\mathcal{S}, p}^{e} \)
is then transmitted out port \(p\) and processing of this Frame is complete.
\subsection{Unicast processing}
When the Frame's destination address \(d\) is not the broadcast address the Switch first determines the egress port \(p = a(d, q)\). Then a new Frame is created as in equation \ref{eq:egress}. \( \mathcal{F}_{\mathcal{S}, p}^{e} \)
is then transmitted out port \(p\) and processing of this Frame is complete.
\end{document}