Compare commits

..

46 commits

Author SHA1 Message Date
Daniel Frank
df8c26442f README.md fuer 0.8.6 aktualisieren 2017-12-20 23:14:40 +01:00
Daniel Frank
4c702f767f Entfernen der alten ffhh-Domain 2017-12-20 23:12:29 +01:00
Daniel Frank
f90ed57970 Add key for Olli 2017-12-18 22:01:55 +01:00
Alexander
728b929aa4 Add key for Alexander 2017-12-18 21:59:34 +01:00
Daniel Frank
39052e5892 start 0.8.6 experimental 2017-12-18 20:56:07 +01:00
Daniel Frank
0971a6125c Neuer NTP-Server 3.ntp.services.ffhh 2017-12-18 20:07:15 +01:00
Daniel Frank
d3a9b90192 gw01-new hatte einen falschen key 2017-11-28 19:10:53 +01:00
Daniel Frank
32bd3430a4 . 2017-11-20 19:43:30 +01:00
Daniel Frank
6691d80454 Baldo hat den Key nicht mehr 2017-11-20 19:43:05 +01:00
Daniel Frank
bebf00c2ae Update readme for 0.8.5 and fix usage message in build.sh 2017-11-07 21:20:56 +01:00
Daniel Frank
e5bbdfdb5d 0.8.5 stable 2017-11-06 21:40:37 +01:00
Daniel Frank
afb92c49db fix build scripts 2017-11-06 21:32:40 +01:00
Daniel Frank
ef8b330e32 fix site_code 2017-11-03 21:09:12 +01:00
Daniel Frank
af3b4c09ed Mehr Automatisierung und Flexibilität in build.sh 2017-11-02 09:33:08 +01:00
Daniel Frank
a4e873bf09 zwei kommas fehlten 2017-11-01 22:41:39 +01:00
Daniel Frank
0cb0709373 11s mesh id automatisch berechnen aus dem site_code kompatibel zu ffhh-sued 2017-11-01 21:38:24 +01:00
Daniel Frank
c25f21dc6a new fastd keys for gw04,05,06 2017-10-30 23:47:34 +01:00
Daniel Frank
3d00c57e50
Fix path to the generated info file 2017-10-30 21:01:49 +01:00
Daniel Frank
36c02b0081 - change to the output path slightly to allow for easier uploading
- allow specifying sites to build through environment variables
2017-10-30 01:11:24 +01:00
Daniel Frank
7f5f4476bd change default output path 2017-10-28 13:09:57 +02:00
Daniel Frank
8cc4ec82e3 fix signature 2017-10-28 12:33:32 +02:00
Daniel Frank
985f728b7d ffhh-nowe, ost, west als sites hinzufügen 2017-10-27 22:53:50 +02:00
Entil-Zha
2b08a670a2 add EXTRA_SOFTWARE_TOOLS_01 option in site.mk 2017-10-27 21:31:42 +02:00
Daniel Frank
ba35c11afa allow automatic signing 2017-10-27 20:48:52 +02:00
Daniel Frank
355b5e6f1d add make clean 2017-10-27 20:41:59 +02:00
Daniel Frank
c877f452b5 Add package feed for FreifunkHochstift and package ffho-ebtables-net-rules 2017-10-24 00:43:16 +02:00
builder2
346d6f7559 add symlink for i18n 2017-10-23 21:38:32 +02:00
builder2
ba24c852fb yet more updates... 2017-10-18 23:45:29 +02:00
Daniel Frank
c4aec4eaee some updates to the build.sh 2017-10-16 23:53:39 +02:00
Daniel Frank
3f89fe6df3 bump version to 0.8.5 experimental and some more build system updates 2017-10-14 20:14:45 +02:00
Daniel Frank
ebddb7d986 rework the site repo layout again for fun (and easier building) 2017-10-13 23:50:26 +02:00
Daniel Frank
6e8ed79937 Templates für ffhh und ffhh-sued
(cherry picked from commit f508264c84ba4a839b0e48c3945328ecf32b4414)
2017-10-13 22:27:40 +02:00
Daniel Frank
4ba875f5cd Update README.md with details about firmware versions 2017-10-07 11:45:50 +02:00
Daniel Frank
f427c1023a 0.8.4 experimental -> stable 2017-10-06 21:00:37 +02:00
Daniel Frank
dbdde1f30a 0.8.4 experimental -> stable 2017-10-06 21:00:03 +02:00
Daniel Frank
22fb01a84f 0.8.4 experimental 2017-10-02 21:59:31 +02:00
bdobe
a108efaf18
ffhh-sued, site.conf: Fix opkg repository url 2017-09-15 23:10:20 +02:00
bdobe
6afc2a9358
ffhh-sued, site.conf: Add signing key for tokudan 2017-09-15 22:14:34 +02:00
bdobe
a8a7797831
Add site ffhh-sued config 2017-09-15 22:07:28 +02:00
bdobe
19f81f9635
Update gitignore 2017-09-15 22:07:27 +02:00
Björn Dobe
21842c39d0 Merge pull request #15 from tokudan/0.8.x
Struktur fuer mehrere Sites anlegen
2017-09-15 21:27:34 +02:00
Daniel Frank
ac9a0cd277 Struktur fuer mehrere Sites anlegen 2017-09-15 21:24:35 +02:00
Daniel Frank
075459e28e Preparation 0.8.3 2017-09-04 19:48:33 +02:00
Entil-Zha
374d91b8ea Merge pull request #13 from tokudan/0.8.x
Neuer key für tokudan
2017-09-04 19:35:28 +02:00
Daniel Frank
2ca0605cf4 Update site.conf 2017-09-04 19:30:10 +02:00
bdobe
7290bd7618
Release v0.8.2 2017-04-10 19:29:56 +02:00
25 changed files with 772 additions and 638 deletions

3
.gitignore vendored
View file

@ -1,3 +1,2 @@
*~
info
sites/
sites

31
Makefile Normal file
View file

@ -0,0 +1,31 @@
sites: clean info sites/ffhh-nowe sites/ffhh-ost sites/ffhh-sued sites/ffhh-west
info: config/defaults.erb template/info.erb
erb -T- config/defaults.erb template/$@.erb >$@
.PHONY: clean
clean:
rm -rf sites
rm -f info
sites/%: config/%.erb
mkdir -p $@
cd $@ && $(MAKE) -f ../../Makefile site SITE=$(@F)
site: siteclean site.mk site.conf modules i18n
.PHONY: siteclean
siteclean:
rm -f site.mk site.conf modules
modules:
erb -T- ../../config/defaults.erb ../../config/$(SITE).erb ../../template/$@.erb >$@
site.conf:
erb -T- ../../config/defaults.erb ../../config/$(SITE).erb ../../template/$@.erb >$@
site.mk:
erb -T- ../../config/defaults.erb ../../config/$(SITE).erb ../../template/$@.erb >$@
i18n:
ln -s ../../i18n

View file

@ -1,44 +1,19 @@
#### How to build the Freifunk Hamburg Firmware
In the next two commands replace GLUON_VERSION and SITE_VERSION with the actual version numbers.
$ git clone -b GLUON_VERSION https://github.com/freifunk-gluon/gluon.git
$ git clone -b SITE_VERSION https://git.hamburg.ccc.de/freifunk/site-ffhh.git
$ cd site-ffhh
To build the firmware into the subdirectory firmware:
$ ./build.sh -g ../gluon -o firmware
The build.sh supports the argument -b if you wish to also build firmware images marked as broken in gluon.
git clone https://github.com/freifunk-gluon/gluon.git # Get the official Gluon repository
cd gluon
git clone https://github.com/freifunkhamburg/site-ffhh.git site # Get the Freifunk Hamburg site repository
cd site
make
cd ..
make update # Get other repositories used by Gluon
make GLUON_SITEDIR=site/sites/ffhh # Build Gluon
Please see [the official Gluon repository](https://github.com/freifunk-gluon/gluon) for an in-depth explanation of the build process.
#### Gluon versions used for specific Hamburg Freifunk Firmware builds
- v2023.2.4.0: site-ffhh: v2023.2.4.0, gluon: v2023.2.4
- v2023.2.2.1: site-ffhh: v2023.2.2.0, gluon: v2023.2.2 (add mediatek-filogic Routers)
- v2023.2.2.0: site-ffhh: v2023.2.2.0, gluon: v2023.2.2
- v2023.1.2.0: site-ffhh: v2023.1.2.0, gluon: v2023.1.2
- v2022.1.4.0: site-ffhh: v2022.1.4.0, gluon: v2022.1.4
- v2022.1.3.0: site-ffhh: v2022.1.3.0, gluon: v2022.1.3 (nur experimental verteilt)
- v2021.1.2.0: site-ffhh: v2021.1.2.0, gluon: v2021.1.2
- v2021.1.1.0: site-ffhh: v2021.1.1.0, gluon: v2021.1.1
- v2020.2.3.0: site-ffhh: v2020.2.3.0, gluon: v2020.2.3
- v2020.2.2.0: site-ffhh: v2020.2.2.0, gluon: v2020.2.2
- v2020.1.4.0: site-ffhh: v2020.1.4.0, gluon: v2020.1.4
- v2020.1.3.0: site-ffhh: v2020.1.3.0, gluon: v2020.1.3
- v2019.1.2.0: site-ffhh: v2019.1.2.0, gluon: v2019.1.2
- v2018.2.3.0: site-ffhh: v2018.2.3.0, gluon: v2018.2.3
- v2018.2.1.0: site-ffhh: v2018.2.1.0, gluon: v2018.2.1
- v2018.1.4.2: site-ffhh: v2018.1.4.2, gluon: v2018.1.4
- v2018.1.4.1: site-ffhh: v2018.1.4.1, gluon: v2018.1.4
- v2018.1.4.0: site-ffhh: v2018.1.4.0, gluon: v2018.1.4
- v2018.1.3.0: site-ffhh: v2018.1.3.0, gluon: v2018.1.3
- v2018.1.1.0: site-ffhh: v2018.1.1.0, gluon: v2018.1.1
- v2018.1.0.0: site-ffhh: v2018.1.0.0, gluon: v2018.1 (never rolled out due to issues with the auto updater in gluon)
- 0.9.2: site-ffhh: v0.9.2, gluon: v2017.1.8
- 0.9.1: site-ffhh: v0.9.1, gluon: v2017.1.5
- 0.9.0: site-ffhh: 60f30382209ffc050baa82be9bad3622a1d88d5b, gluon: v2017.1.x (9295abcea7b016b0fe4b05c534ea0731b48ef593) (never rolled out due to 0.9.1)
- 0.8.6: v2016.2.7 Fix gw01-new key, add 3.ntp.services.ffhh to NTP servers, add Firmware signing keys for Alexander and Olli, remove old domain
- 0.8.5: v2016.2.7 Domain split, new package: ffho-ebtables-net-rules
- 0.8.4: v2016.2.7 (updated openwrt/package/network/services/dnsmasq/Makefile: PKG\_VERSION:=2.78 & PKG\_MD5SUM:=6d0241b72c79d2b510776ccc4ed69ca4)

View file

@ -1,5 +0,0 @@
GLUON_RELEASE="v2023.2.4.0"
targets="ath79-generic ath79-nand ath79-mikrotik bcm27xx-bcm2708 bcm27xx-bcm2709 ipq40xx-generic ipq40xx-mikrotik ipq806x-generic lantiq-xrx200 lantiq-xway mediatek-filogic mediatek-mt7622 mpc85xx-p1010 mpc85xx-p1020 ramips-mt7620 ramips-mt7621 ramips-mt76x8 rockchip-armv8 sunxi-cortexa7 x86-generic x86-geode x86-legacy x86-64"
broken_images=(
'*dir*615*d*'
)

196
build.sh
View file

@ -1,138 +1,102 @@
#!/usr/bin/env bash
set -e
#!/bin/bash -e
function announce () {
echo '############################' "$@" >&2
}
function usage () {
echo "Usage: $0 -g GLUON_PATH" >&2
echo " -g GLUON_PATH Path to a checkout of the gluon repository." >&2
echo " -t TARGETS Comma separated list of gluon targets to build" >&2
echo " -a Automatically detect and build all targets." >&2
echo " -o OUT_PATH Path to the firmware output directory. Default: ${gluon_out}" >&2
echo " -s SIGNATURE Sign firmware with signature" >&2
echo " -stable Set GLUON_AUTOUPDATER_BRANCH=stable" >&2
echo " -b BROKEN=1" >&2
echo " -v verbose" >&2
echo " -j JOBS Run build with -jJOBS. Default: ${proc}" >&2
echo '############################' $* >&2
}
proc=$(nproc)
gluon_out="${HOME}/firmware"
while [ $# -gt 0 ]; do
case "$1" in
-a)
auto_targets=1
;;
-g)
gluon_path="$2"
shift
;;
-t)
build_targets="$2"
shift
;;
-o)
gluon_out="$2"
shift
;;
-s)
signature="$2"
shift
;;
-stable)
export GLUON_AUTOUPDATER_BRANCH=stable
;;
-b)
export BROKEN=1
;;
-j)
proc="$2"
shift
;;
-v)
verbose=V=s
;;
*)
echo ERROR: Failed to parse: "${1}" >&2
usage
exit 1
;;
while getopts g:j:l:o:s:u:bmv opt; do
case "$opt" in
g) gluon_path="$OPTARG" ;;
l) sites="$OPTARG" ;;
o) gluon_out="$OPTARG" ;;
s) signature="$OPTARG" ;;
u) uploadscript="$OPTARG" ;;
b) export BROKEN=1 ;;
m) dont_make_sites=1 ;;
j) proc="$OPTARG" ;;
v) verbose=V=s ;;
esac
shift
done
if [ -z "$gluon_path" ]; then
usage
if [ -z "${gluon_path}" ]; then
echo "Usage: $0 -g GLUON_PATH" >&2
echo " -g GLUON_PATH Path to a checkout of the gluon repository." >&2
echo " -l SITES Comma separated list of sites to build" >&2
echo " -o OUT_PATH Path to the firmware output directory. Default: ${gluon_out}" >&2
echo " -s SIGNATURE Sign firmware with signature" >&2
echo " -u UPLOADSCRIPT Run UPLOADSCRIPT after building. Argument: $gluon_out/<GLUON_RELEASE>" >&2
echo " -b BROKEN=1" >&2
echo " -m Do not regenerate the sites" >&2
echo " -v verbose" >&2
echo " -j JOBS Run build with -jJOBS. Default: ${proc}" >&2
exit 1
fi
gluon_path=$(realpath "$gluon_path")
gluon_out=$(realpath "$gluon_out")
site_path=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
gluon_path=$(realpath $gluon_path)
gluon_out=$(realpath $gluon_out)
site_path=$(realpath $(dirname $BASH_SOURCE))
announce GLUON: "$gluon_path" >&2
announce FFHH SITE PATH: "$site_path" >&2
announce GLUON: $gluon_path >&2
announce FFHH SITE PATH: $site_path >&2
pushd "$site_path"
# shellcheck source=/dev/null
. ./build.conf
GLUON_AUTOUPDATER_BRANCH="${GLUON_AUTOUPDATER_BRANCH:-experimental}"
[ "${GLUON_AUTOUPDATER_BRANCH}" = "experimental" ] && GLUON_RELEASE="${GLUON_RELEASE}~exp${BUILD_DATE:-$(date +%Y%m%d)}"
pushd $site_path
if [ "$dont_make_sites" == "" ]; then
# Build the site repo and generate all site configs
announce Building site repo and reading data >&2
make
fi
. ./info
export GLUON_RELEASE
export GLUON_AUTOUPDATER_BRANCH
export GLUON_SITEDIR="${site_path}"
export GLUON_OUTPUTDIR="${gluon_out}/${GLUON_RELEASE}/${GLUON_AUTOUPDATER_BRANCH}"
export GLUON_BRANCH
# get the available sites...
sites="$(echo "$sites" | sed -e 's_,_ _g')"
if [ "$sites" == "" ]; then
for s in sites/*; do sites="${sites} ${s##*/}"; done
fi
announce Gluon will be built for the following sites:$sites >&2
announce The following targets will be generated: $targets >&2
popd
announce GLUON Variables:
env | egrep '^GLUON' | sort
pushd "${gluon_path}"
announce Starting make update...
mkdir -p "${GLUON_OUTPUTDIR}"
make update
# Try to install patches. I wasn't able to figure out how patches in gluon/site/patches work.
for p in "${site_path}"/patches/*.patch; do
if [ -e "$p" ] && [ ! -f "${gluon_path}/${p##*/}" ]; then
announce "Installing patch $p"
patch -p1 < "$p"
touch "${gluon_path}/${p##*/}"
for s in $sites; do
export GLUON_SITEDIR="${site_path}/sites/${s}"
export GLUON_OUTPUTDIR="${gluon_out}/${GLUON_RELEASE}/${GLUON_BRANCH}/${s}"
export GLUON_IMAGEDIR="${GLUON_OUTPUTDIR}/images"
export GLUON_MODULEDIR="${GLUON_OUTPUTDIR}/modules"
rm -rf "${GLUON_OUTPUTDIR}"
mkdir -p "${GLUON_IMAGEDIR}" "${GLUON_MODULEDIR}"
make update
# Try to install patches. I wasn't able to figure out how patches in gluon/site/patches work.
for p in ${site_path}/patches/*.patch; do
if [ -e "$p" -a ! -f "${gluon_path}/${p##*/}" ]; then
announce Installing patch $p
patch -p1 < $p
touch "${gluon_path}/${p##*/}"
fi
done
for t in $targets; do
announce make clean for $s/$t... >&2
make -j1 clean GLUON_TARGET=$t
announce Starting build for $s/$t... >&2
make -j$(nproc) GLUON_TARGET=$t $verbose
done
announce Building manifest...
make manifest
if [ -n "${signature}" ]; then
if [ "$GLUON_BRANCH" == "experimental" ]; then
announce Signing
"${gluon_path}/contrib/sign.sh" "${signature}" "${GLUON_IMAGEDIR}/sysupgrade/experimental.manifest"
else
echo ERROR: can only sign experimental branch >&2
exit 1
fi
fi
done
if [ "$auto_targets" = "1" ]; then
# detect available targets
targets="$(make list-targets | sort | xargs)"
else
# if a list of build targets has been supplied, only build those
targets="$(echo "${build_targets:-$targets}" | sed -e 's_,_ _g')"
fi
announce "The following targets will be generated: $targets" >&2
for t in $targets; do
announce "Starting build for $t..." >&2
make "-j$(nproc)" "GLUON_TARGET=$t" $verbose
done
# Remove known-broken images
# shellcheck disable=SC2154
for broken_image in "${broken_images[@]}"; do
announce "Removing broken image ${broken_image}..."
find "${GLUON_OUTPUTDIR}/images" -iname "${broken_image}" \( -type f -o -type l \) -ls -exec rm -f {} \;
done
# Generate the images.list
# shellcheck disable=SC2094
( cd "${GLUON_OUTPUTDIR}/images" && ( echo "RELEASE=${GLUON_RELEASE}"; find . -type f ! -iname '*.manifest' ! -iname images.list; find . -type l ! -iname '*.manifest' ) | sed -e 's!^\./\(.*\)$!\1!' -e 's!/! !g' | sort > images.list )
announce Building manifest...
make manifest
if [ -n "${signature}" ]; then
if [ "$GLUON_AUTOUPDATER_BRANCH" == "experimental" ]; then
announce Signing...
"${gluon_path}/contrib/sign.sh" "${signature}" "${GLUON_OUTPUTDIR}/images/sysupgrade/experimental.manifest"
else
echo ERROR: can only sign experimental branch >&2
exit 1
fi
fi
popd
if [ -n "$uploadscript" ]; then
announce Starting upload. Executing: $uploadscript $gluon_out/$GLUON_RELEASE
"$uploadscript" "$gluon_out/$GLUON_RELEASE"
fi

59
config/defaults.erb Normal file
View file

@ -0,0 +1,59 @@
<%
gluon_branch = "stable"
#gluon_branch = "experimental"
gluon_release = "0.8.6"
# Add the +exp and current date if this is an experimental release
gluon_release += "+exp" + Time.new.strftime("%Y%m%d") if gluon_branch == "experimental"
gluon_targets = %w(
ar71xx-generic
ar71xx-nand
mpc85xx-generic
x86-generic
x86-64
)
gluon_site_packages = %w(
gluon-autoupdater
gluon-config-mode-autoupdater
gluon-config-mode-core
gluon-config-mode-hostname
gluon-config-mode-mesh-vpn
gluon-config-mode-reboot-ffhh
gluon-ebtables-filter-multicast
gluon-ebtables-filter-ra-dhcp
gluon-ebtables-segment-mld
gluon-luci-admin
gluon-luci-autoupdater
gluon-luci-portconfig
gluon-luci-private-wifi
gluon-luci-wifi-config
gluon-next-node
gluon-mesh-vpn-fastd
gluon-radvd
gluon-respondd
gluon-setup-mode
gluon-status-page
iwinfo
iptables
haveged
ffho-ebtables-net-rules
)
gluon_ath10k_mesh = "11s"
signing_keys = [
'ef73bc52b929fd11efce9a5c8f0b5463f1766bb995c8a0b3b6bcd7ba45b8b1e6', # leo
'3f0fc50d4e5c893f9f58f98874bd21080b93c28ff5e4d4946352cada1b4e6441', # andre
'1d37eacbd70f72730b1f5aba246a6a8eab100e2d45dda0163d9ad827f70f88d4', # gernot
'bd5a70d4c3df30eaa860d615c0e0526b0dda5bc60c09c20972bce4ffa7512659', # bjoern
'd9992853c0fe1a2e983cc222b6bd26e70d4fb2a53862ac099144e9e8142238d0', # daniel
'961495a04512e5ba1843fd3c216d8af6ef2fdb19f93055142803e2da26d670b9', # alexander
'ed6278f168f0382adf4f058cb9c31d8f1145abb968a8626045de7d6d87a0be40', # olli
]
signing_keys_experimental = [
'1a0112fe489860068480c611c5dc56196c2f1a645db651ea2ed19ae0f0e8e1d1', # 1.builder
]
-%>

42
config/ffhh-nowe.erb Normal file
View file

@ -0,0 +1,42 @@
<%
site_name = 'Freifunk Hamburg Nordwest'
site_code = 'ffhh-nowe'
gluon_site_packages += %w( gluon-mesh-batman-adv-15 )
gluon_ath10k_mesh = "11s"
prefix4 = '10.112.192.0/19'
prefix6 = '2a03:2267:3::/64'
next_node_ipv4 = '10.112.192.1'
next_node_ipv6 = '2a03:2267:3::1'
mtu = 1312
gateways = {
"gateway01" => {
"key" => "aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b",
"remotes" => [ '"gw01-new.hamburg.freifunk.net" port 10007' ]
},
"gateway02" => {
"key" => "462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0",
"remotes" => [ '"gw02-new.hamburg.freifunk.net" port 10007' ]
},
"gateway03" => {
"key" => "e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546",
"remotes" => [ '"gw03-new.hamburg.freifunk.net" port 10007' ]
},
"gateway04" => {
"key" => "a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669",
"remotes" => [ '"gw04-new.hamburg.freifunk.net" port 10008' ]
},
"gateway05" => {
"key" => "291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f",
"remotes" => [ '"gw05-new.hamburg.freifunk.net" port 10008' ]
},
"gateway06" => {
"key" => "8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43",
"remotes" => [ '"gw06-new.hamburg.freifunk.net" port 10008' ]
},
}
-%>

42
config/ffhh-ost.erb Normal file
View file

@ -0,0 +1,42 @@
<%
site_name = 'Freifunk Hamburg Ost'
site_code = 'ffhh-ost'
gluon_site_packages += %w( gluon-mesh-batman-adv-15 )
gluon_ath10k_mesh = "11s"
prefix4 = '10.112.224.0/19'
prefix6 = '2a03:2267:4::/64'
next_node_ipv4 = '10.112.224.1'
next_node_ipv6 = '2a03:2267:4::1'
mtu = 1312
gateways = {
"gateway01" => {
"key" => "aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b",
"remotes" => [ '"gw01-new.hamburg.freifunk.net" port 10009' ]
},
"gateway02" => {
"key" => "462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0",
"remotes" => [ '"gw02-new.hamburg.freifunk.net" port 10009' ]
},
"gateway03" => {
"key" => "e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546",
"remotes" => [ '"gw03-new.hamburg.freifunk.net" port 10009' ]
},
"gateway04" => {
"key" => "a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669",
"remotes" => [ '"gw04-new.hamburg.freifunk.net" port 10010' ]
},
"gateway05" => {
"key" => "291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f",
"remotes" => [ '"gw05-new.hamburg.freifunk.net" port 10010' ]
},
"gateway06" => {
"key" => "8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43",
"remotes" => [ '"gw06-new.hamburg.freifunk.net" port 10010' ]
},
}
-%>

42
config/ffhh-sued.erb Normal file
View file

@ -0,0 +1,42 @@
<%
site_name = 'Freifunk Hamburg Sued'
site_code = 'ffhh-sued'
gluon_site_packages += %w( gluon-mesh-batman-adv-15 )
gluon_ath10k_mesh = "11s"
prefix4 = '10.112.64.0/19'
prefix6 = '2a03:2267:1::/64'
next_node_ipv4 = '10.112.64.1'
next_node_ipv6 = '2a03:2267:1::1'
mtu = 1312
gateways = {
"gateway01" => {
"key" => "aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b",
"remotes" => [ '"gw01-new.hamburg.freifunk.net" port 10003' ]
},
"gateway02" => {
"key" => "462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0",
"remotes" => [ '"gw02-new.hamburg.freifunk.net" port 10003' ]
},
"gateway03" => {
"key" => "e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546",
"remotes" => [ '"gw03-new.hamburg.freifunk.net" port 10003' ]
},
"gateway04" => {
"key" => "a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669",
"remotes" => [ '"gw04-new.hamburg.freifunk.net" port 10004' ]
},
"gateway05" => {
"key" => "291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f",
"remotes" => [ '"gw05-new.hamburg.freifunk.net" port 10004' ]
},
"gateway06" => {
"key" => "8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43",
"remotes" => [ '"gw06-new.hamburg.freifunk.net" port 10004' ]
},
}
-%>

42
config/ffhh-west.erb Normal file
View file

@ -0,0 +1,42 @@
<%
site_name = 'Freifunk Hamburg West'
site_code = 'ffhh-west'
gluon_site_packages += %w( gluon-mesh-batman-adv-15 )
gluon_ath10k_mesh = "11s"
prefix4 = '10.112.96.0/19'
prefix6 = '2a03:2267:2::/64'
next_node_ipv4 = '10.112.96.1'
next_node_ipv6 = '2a03:2267:2::1'
mtu = 1312
gateways = {
"gateway01" => {
"key" => "aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b",
"remotes" => [ '"gw01-new.hamburg.freifunk.net" port 10005' ]
},
"gateway02" => {
"key" => "462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0",
"remotes" => [ '"gw02-new.hamburg.freifunk.net" port 10005' ]
},
"gateway03" => {
"key" => "e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546",
"remotes" => [ '"gw03-new.hamburg.freifunk.net" port 10005' ]
},
"gateway04" => {
"key" => "a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669",
"remotes" => [ '"gw04-new.hamburg.freifunk.net" port 10006' ]
},
"gateway05" => {
"key" => "291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f",
"remotes" => [ '"gw05-new.hamburg.freifunk.net" port 10006' ]
},
"gateway06" => {
"key" => "8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43",
"remotes" => [ '"gw06-new.hamburg.freifunk.net" port 10006' ]
},
}
-%>

View file

@ -1,75 +0,0 @@
{
domain_names = {
ffhh_nowe = "Hamburg Nordwest",
},
domain_seed = '666668682D6E6F776548616D6275726748616D6275726748616D627572674861',
prefix4 = '10.112.192.0/19',
prefix6 = '2a03:2267:3::/64',
next_node = {
ip4 = '10.112.192.1',
ip6 = '2a03:2267:3::1',
mac = '16:41:95:40:f7:dc',
},
wifi24 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '6668682D6E6F7765',
},
},
wifi5 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '6668682D6E6F7765',
},
},
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
fastd = {
groups = {
backbone = {
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10007' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
remotes = { '"gw02-new.hamburg.freifunk.net" port 10007' },
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10007' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10008' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10008' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
remotes = { '"gw06-new.hamburg.freifunk.net" port 10008' },
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
},
},
},
},
},
},
}

View file

@ -1,75 +0,0 @@
{
domain_names = {
ffhh_ost = "Hamburg Ost",
},
domain_seed = '666668682D6F737448616D6275726748616D6275726748616D6275726748616D',
prefix4 = '10.112.224.0/19',
prefix6 = '2a03:2267:4::/64',
next_node = {
ip4 = '10.112.224.1',
ip6 = '2a03:2267:4::1',
mac = '16:41:95:40:f7:dc',
},
wifi24 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '666668682D6F7374',
},
},
wifi5 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '666668682D6F7374',
},
},
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
fastd = {
groups = {
backbone = {
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10009' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
remotes = { '"gw02-new.hamburg.freifunk.net" port 10009' },
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10009' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10010' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10010' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
remotes = { '"gw06-new.hamburg.freifunk.net" port 10010' },
},
},
},
},
},
},
}

View file

@ -1,75 +0,0 @@
{
domain_names = {
ffhh_sued = "Hamburg Süd",
},
domain_seed = '666668682D7375656448616D6275726748616D6275726748616D627572674861',
prefix4 = '10.112.64.0/19',
prefix6 = '2a03:2267:1::/64',
next_node = {
ip4 = '10.112.64.1',
ip6 = '2a03:2267:1::1',
mac = '16:41:95:40:f7:dc',
},
wifi24 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '6668682D73756564',
},
},
wifi5 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '6668682D73756564',
},
},
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
fastd = {
groups = {
backbone = {
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10003' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
remotes = { '"gw02-new.hamburg.freifunk.net" port 10003' },
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10003' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10004' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10004' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
remotes = { '"gw06-new.hamburg.freifunk.net" port 10004' },
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
},
},
},
},
},
},
}

View file

@ -1,75 +0,0 @@
{
domain_names = {
ffhh_west = "Hamburg West",
},
domain_seed = '666668682D7765737448616D6275726748616D6275726748616D627572674861',
prefix4 = '10.112.96.0/19',
prefix6 = '2a03:2267:2::/64',
next_node = {
ip4 = '10.112.96.1',
ip6 = '2a03:2267:2::1',
mac = '16:41:95:40:f7:dc',
},
wifi24 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '6668682D77657374',
},
},
wifi5 = {
ap = {
ssid = "hamburg.freifunk.net",
},
mesh = {
id = '6668682D77657374',
},
},
mesh = {
vxlan = false,
batman_adv = {
routing_algo = "BATMAN_IV",
},
},
mesh_vpn = {
fastd = {
groups = {
backbone = {
peers = {
gateway01 = {
remotes = { '"gw01-new.hamburg.freifunk.net" port 10005' },
key = 'aa88fb5cc3e729c124589e3714b817a505d809f381d9b3494040c382edfd4f3b',
},
gateway02 = {
key = '462b4e21ab5eb0f9de687efd97252880c895ba55cc9cc0755a75347b0965b6e0',
remotes = { '"gw02-new.hamburg.freifunk.net" port 10005' },
},
gateway03 = {
remotes = { '"gw03-new.hamburg.freifunk.net" port 10005' },
key = 'e15295b86138ac490d611e4100f847ccfb7052d5091ded4659f25940be2c0546',
},
gateway04 = {
remotes = { '"gw04-new.hamburg.freifunk.net" port 10006' },
key = 'a00e092c236c3b56043fb3b5d0b3da3da08d8325fb18e7bae6ed035d50d50669',
},
gateway05 = {
remotes = { '"gw05-new.hamburg.freifunk.net" port 10006' },
key = '291197d88a5ed510a62fec87f30d13315c1e031c62c927c23e1643a72796708f',
},
gateway06 = {
remotes = { '"gw06-new.hamburg.freifunk.net" port 10006' },
key = '8d400e8a9db05b145c36583d46b4170f6b66d1e16177540f8a2f9f5ad0dc4c43',
},
},
},
},
},
},
}

View file

@ -16,24 +16,16 @@ msgstr ""
"Freifunk-Knoten. Fülle das folgende Formular deinen Vorstellungen "
"entsprechend aus und sende es ab. "
"Den unten anzugebenden Knotennamen kannst du beliebig wählen. Denke Dir also etwas schönes aus. Er ist der Name des Knotens im Netzwerk und hat nichts mit dem ausgestrahlten Netzwerknamen (SSID) zu tun. Letzterer ist immer hamburg.freifunk.net."
msgid "gluon-config-mode:domain"
msgstr "Domäne"
msgid "gluon-config-mode:domain-select"
msgstr ""
"Hier kannst du Domäne auswählen, in dem sich dein Knoten befindet. "
"Bitte bedenke, dass sich dein Knoten nur mit Routern in der gleichen Domäne verbinden kann."
msgid "gluon-config-mode:pubkey"
msgstr ""
"<p>Dies ist der öffentliche Schlüssel deines Freifunkknotens. Erst nachdem "
"er auf den Servern des Hamburger Freifunk-Projektes eingetragen wurde, "
"kann sich dein Knoten mit dem Hamburger Mesh-VPN verbinden. "
"Bitte trage dazu diesen Schlüssel, den Namen deines Knotens (<em><%=pcdata(hostname)%></em>) und ein paar andere Informationen unter "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=pcdata(hostname)%>&amp;key=<%=pubkey%>&amp;mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a> ein.</p>"
"Bitte trage dazu diesen Schlüssel, den Namen deines Knotens (<em><%=escape(hostname)%></em>) und ein paar andere Informationen unter "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=escape(hostname)%>&key=<%=pubkey%>&mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a> ein.</p>"
"<div class=\"the-key\">"
" # <%= pcdata(hostname) %>"
" # <%= escape(hostname) %>"
" <br/>"
"<%= pubkey %>"
"</div>"
@ -47,9 +39,9 @@ msgstr ""
"<a href=\"https://hamburg.freifunk.net/\">unserer Webseite</a>.</p>"
"<p>Viel Spaß mit deinem Knoten und der Erkundung von Freifunk!</p>"
msgid "gluon-config-mode:novpn"
msgid "gluon-config-mode:nopubkey"
msgstr ""
"Bitte trage nun den Namen deines Knotens "
"(<em><%=pcdata(hostname)%></em>) und ein paar andere Informationen unter "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=pcdata(hostname)%>&amp;mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a> "
"(<em><%=escape(hostname)%></em>) und ein paar andere Informationen unter "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=escape(hostname)%>&mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a> "
"ein."

View file

@ -19,24 +19,15 @@ msgstr ""
"the network and has nothing to do with the broadcast network name (SSID). "
"The latter is always hamburg.freifunk.net."
msgid "gluon-config-mode:domain"
msgstr "Domain"
msgid "gluon-config-mode:domain-select"
msgstr ""
"Here you have the possibility of selecting the mesh domain in which your node "
"is placed. Please keep in mind that your router only connects with the nodes "
"of the selected domain"
msgid "gluon-config-mode:pubkey"
msgstr ""
"<p>This is the public key for your Freifunk node. You can only "
"connect the node to the Hamburg mesh VPN after the key has been registered on "
"the Freifunk Hamburg servers. "
"Please register your key, the name of your node (<em><%=pcdata(hostname)%></em>), and a bit of additional info at "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=pcdata(hostname)%>&amp;key=<%=pubkey%>&amp;mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a>.</p>"
"Please register your key, the name of your node (<em><%=escape(hostname)%></em>), and a bit of additional info at "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=escape(hostname)%>&key=<%=pubkey%>&mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a>.</p>"
"<div class=\"the-key\">"
" # <%= pcdata(hostname) %>"
" # <%= escape(hostname) %>"
" <br/>"
"<%= pubkey %>"
"</div>"
@ -49,9 +40,9 @@ msgstr ""
"<a href=\"https://hamburg.freifunk.net/\">our homepage</a>.</p>"
"<p>Have fun with your node and exploring the Freifunk network!</p>"
msgid "gluon-config-mode:novpn"
msgid "gluon-config-mode:nopubkey"
msgstr ""
"Please enter the name of your node "
"(<em><%=hostname%></em>) and some additional information at "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=pcdata(hostname)%>&amp;mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a> "
"<a href=\"https://formular.hamburg.freifunk.net/#/new?hostname=<%=escape(hostname)%>&mac=<%= sysconfig.primary_mac %>\" target=\"_blank\">https://formular.hamburg.freifunk.net/</a> "
"."

View file

@ -1,36 +0,0 @@
features({
'autoupdater',
'config-mode-domain-select',
'ebtables-filter-multicast',
'ebtables-filter-ra-dhcp',
'mesh-batman-adv-15',
'mesh-vpn-fastd',
'web-private-wifi',
'radv-filterd',
'respondd',
'status-page',
'web-advanced',
'web-wizard',
})
if not device_class('tiny') then
features({
'wireless-encryption-wpa3',
})
end
packages({
'-gluon-config-mode-geo-location',
'-gluon-config-mode-contact-info',
'gluon-ebtables-source-filter',
'gluon-web-mesh-vpn-fastd',
'iwinfo',
})
if target('x86') then
packages({
'nano',
'htop',
'ethtool',
})
end

View file

@ -1,5 +0,0 @@
GLUON_SITE_FEEDS='ffhh_packages'
PACKAGES_FFHH_PACKAGES_REPO=https://github.com/freifunkhamburg/ffhh-packages.git
PACKAGES_FFHH_PACKAGES_COMMIT=ef9fcc1222f74c3c045b1450537a4b8b80efb56c

View file

@ -0,0 +1,236 @@
diff -Naur a/openwrt/package/network/services/dnsmasq/Makefile b/openwrt/package/network/services/dnsmasq/Makefile
--- a/openwrt/package/network/services/dnsmasq/Makefile 2017-10-18 22:57:32.713534131 +0200
+++ b/openwrt/package/network/services/dnsmasq/Makefile 2017-10-18 22:58:50.228018635 +0200
@@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=dnsmasq
-PKG_VERSION:=2.73
+PKG_VERSION:=2.78
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
-PKG_MD5SUM:=b8bfe96d22945c8cf4466826ba9b21bd
+PKG_MD5SUM:=6d0241b72c79d2b510776ccc4ed69ca4
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
diff -Naur a/openwrt/package/network/services/dnsmasq/patches/100-fix-dhcp-no-address-warning.patch b/openwrt/package/network/services/dnsmasq/patches/100-fix-dhcp-no-address-warning.patch
--- a/openwrt/package/network/services/dnsmasq/patches/100-fix-dhcp-no-address-warning.patch 2017-10-18 22:57:32.713534131 +0200
+++ b/openwrt/package/network/services/dnsmasq/patches/100-fix-dhcp-no-address-warning.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,47 +0,0 @@
---- a/src/dhcp.c
-+++ b/src/dhcp.c
-@@ -146,7 +146,7 @@ void dhcp_packet(time_t now, int pxe_fd)
- struct iovec iov;
- ssize_t sz;
- int iface_index = 0, unicast_dest = 0, is_inform = 0;
-- struct in_addr iface_addr;
-+ struct in_addr iface_addr, *addrp = NULL;
- struct iface_param parm;
- #ifdef HAVE_LINUX_NETWORK
- struct arpreq arp_req;
-@@ -272,11 +272,9 @@ void dhcp_packet(time_t now, int pxe_fd)
- {
- ifr.ifr_addr.sa_family = AF_INET;
- if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1 )
-- iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
-- else
- {
-- my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
-- return;
-+ addrp = &iface_addr;
-+ iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
- }
-
- for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next)
-@@ -295,7 +293,7 @@ void dhcp_packet(time_t now, int pxe_fd)
- parm.relay_local.s_addr = 0;
- parm.ind = iface_index;
-
-- if (!iface_check(AF_INET, (struct all_addr *)&iface_addr, ifr.ifr_name, NULL))
-+ if (!iface_check(AF_INET, (struct all_addr *)addrp, ifr.ifr_name, NULL))
- {
- /* If we failed to match the primary address of the interface, see if we've got a --listen-address
- for a secondary */
-@@ -315,6 +313,12 @@ void dhcp_packet(time_t now, int pxe_fd)
- complete_context(match.addr, iface_index, NULL, match.netmask, match.broadcast, &parm);
- }
-
-+ if (!addrp)
-+ {
-+ my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
-+ return;
-+ }
-+
- if (!iface_enumerate(AF_INET, &parm, complete_context))
- return;
-
diff -Naur a/openwrt/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch b/openwrt/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch
--- a/openwrt/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch 2017-10-18 22:57:32.713534131 +0200
+++ b/openwrt/package/network/services/dnsmasq/patches/110-ipset-remove-old-kernel-support.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,110 +0,0 @@
---- a/src/ipset.c
-+++ b/src/ipset.c
-@@ -22,7 +22,6 @@
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/socket.h>
--#include <sys/utsname.h>
- #include <arpa/inet.h>
- #include <linux/version.h>
- #include <linux/netlink.h>
-@@ -72,7 +71,7 @@ struct my_nfgenmsg {
-
- #define NL_ALIGN(len) (((len)+3) & ~(3))
- static const struct sockaddr_nl snl = { .nl_family = AF_NETLINK };
--static int ipset_sock, old_kernel;
-+static int ipset_sock;
- static char *buffer;
-
- static inline void add_attr(struct nlmsghdr *nlh, uint16_t type, size_t len, const void *data)
-@@ -87,25 +86,7 @@ static inline void add_attr(struct nlmsg
-
- void ipset_init(void)
- {
-- struct utsname utsname;
-- int version;
-- char *split;
--
-- if (uname(&utsname) < 0)
-- die(_("failed to find kernel version: %s"), NULL, EC_MISC);
--
-- split = strtok(utsname.release, ".");
-- version = (split ? atoi(split) : 0);
-- split = strtok(NULL, ".");
-- version = version * 256 + (split ? atoi(split) : 0);
-- split = strtok(NULL, ".");
-- version = version * 256 + (split ? atoi(split) : 0);
-- old_kernel = (version < KERNEL_VERSION(2,6,32));
--
-- if (old_kernel && (ipset_sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) != -1)
-- return;
--
-- if (!old_kernel &&
-+ if (
- (buffer = safe_malloc(BUFF_SZ)) &&
- (ipset_sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_NETFILTER)) != -1 &&
- (bind(ipset_sock, (struct sockaddr *)&snl, sizeof(snl)) != -1))
-@@ -168,62 +149,16 @@ static int new_add_to_ipset(const char *
- }
-
-
--static int old_add_to_ipset(const char *setname, const struct all_addr *ipaddr, int remove)
--{
-- socklen_t size;
-- struct ip_set_req_adt_get {
-- unsigned op;
-- unsigned version;
-- union {
-- char name[IPSET_MAXNAMELEN];
-- uint16_t index;
-- } set;
-- char typename[IPSET_MAXNAMELEN];
-- } req_adt_get;
-- struct ip_set_req_adt {
-- unsigned op;
-- uint16_t index;
-- uint32_t ip;
-- } req_adt;
--
-- if (strlen(setname) >= sizeof(req_adt_get.set.name))
-- {
-- errno = ENAMETOOLONG;
-- return -1;
-- }
--
-- req_adt_get.op = 0x10;
-- req_adt_get.version = 3;
-- strcpy(req_adt_get.set.name, setname);
-- size = sizeof(req_adt_get);
-- if (getsockopt(ipset_sock, SOL_IP, 83, &req_adt_get, &size) < 0)
-- return -1;
-- req_adt.op = remove ? 0x102 : 0x101;
-- req_adt.index = req_adt_get.set.index;
-- req_adt.ip = ntohl(ipaddr->addr.addr4.s_addr);
-- if (setsockopt(ipset_sock, SOL_IP, 83, &req_adt, sizeof(req_adt)) < 0)
-- return -1;
--
-- return 0;
--}
--
--
--
- int add_to_ipset(const char *setname, const struct all_addr *ipaddr, int flags, int remove)
- {
- int af = AF_INET;
-
- #ifdef HAVE_IPV6
- if (flags & F_IPV6)
-- {
- af = AF_INET6;
-- /* old method only supports IPv4 */
-- if (old_kernel)
-- return -1;
-- }
- #endif
-
-- return old_kernel ? old_add_to_ipset(setname, ipaddr, remove) : new_add_to_ipset(setname, ipaddr, af, remove);
-+ return new_add_to_ipset(setname, ipaddr, af, remove);
- }
-
- #endif
diff -Naur a/openwrt/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch b/openwrt/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch
--- a/openwrt/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch 2017-10-18 22:57:32.713534131 +0200
+++ b/openwrt/package/network/services/dnsmasq/patches/210-dnssec-improve-timestamp-heuristic.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,49 +0,0 @@
-From 79e60e145f8a595bca5a784c00b437216d51de68 Mon Sep 17 00:00:00 2001
-From: Steven Barth <steven@midlink.org>
-Date: Mon, 13 Apr 2015 09:45:20 +0200
-Subject: [PATCH] dnssec: improve timestamp heuristic
-
-Signed-off-by: Steven Barth <steven@midlink.org>
----
- src/dnssec.c | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
-
---- a/src/dnssec.c
-+++ b/src/dnssec.c
-@@ -432,17 +432,24 @@ static int back_to_the_future;
- int setup_timestamp(void)
- {
- struct stat statbuf;
--
-+ time_t now;
-+ time_t base = 1420070400; /* 1-1-2015 */
-+
- back_to_the_future = 0;
-
- if (!daemon->timestamp_file)
- return 0;
--
-+
-+ now = time(NULL);
-+
-+ if (!stat("/proc/self/exe", &statbuf) && difftime(statbuf.st_mtime, base) > 0)
-+ base = statbuf.st_mtime;
-+
- if (stat(daemon->timestamp_file, &statbuf) != -1)
- {
- timestamp_time = statbuf.st_mtime;
- check_and_exit:
-- if (difftime(timestamp_time, time(0)) <= 0)
-+ if (difftime(now, base) >= 0 && difftime(timestamp_time, now) <= 0)
- {
- /* time already OK, update timestamp, and do key checking from the start. */
- if (utime(daemon->timestamp_file, NULL) == -1)
-@@ -463,7 +470,7 @@ int setup_timestamp(void)
-
- close(fd);
-
-- timestamp_time = timbuf.actime = timbuf.modtime = 1420070400; /* 1-1-2015 */
-+ timestamp_time = timbuf.actime = timbuf.modtime = base;
- if (utime(daemon->timestamp_file, &timbuf) == 0)
- goto check_and_exit;
- }

102
site.conf
View file

@ -1,102 +0,0 @@
{
hostname_prefix = 'GibMirEinenNamen',
config_mode = {
hostname = {
optional = false,
prefill = false,
},
},
site_name = 'Freifunk Hamburg',
site_code = 'ffhh',
default_domain = 'ffhh_nowe',
opkg = {
extra = {
modules = 'http://updates.hamburg.freifunk.net/multi/archive/%GR/packages/gluon-%GS-%GR/%S',
},
},
timezone = 'CET-1CEST,M3.5.0,M10.5.0/3', -- Europe/Berlin
ntp_servers = {'1.ntp.services.ffhh','2.ntp.services.ffhh','3.ntp.services.ffhh'},
regdom = 'DE',
wifi24 = {
channel = 1,
mesh = {
mcast_rate = 12000,
},
},
wifi5 = {
channel = 44,
outdoor_chanlist = "100-140",
mesh = {
mcast_rate = 12000,
},
},
mesh_vpn = {
enabled = true,
fastd = {
configurable = true,
mtu = 1312,
methods = {'salsa2012+umac'},
groups = {
backbone = {
limit = 1,
},
},
},
bandwidth_limit = {
enabled = false,
ingress = 8096,
egress = 1024,
},
},
autoupdater = {
branch = 'stable',
branches = {
stable = {
name = 'stable',
mirrors = {'http://updates-a.hamburg.freifunk.net/multi/stable/images/sysupgrade','http://updates-b.hamburg.freifunk.net/multi/stable/images/sysupgrade'},
good_signatures = 2,
pubkeys = {
'ef73bc52b929fd11efce9a5c8f0b5463f1766bb995c8a0b3b6bcd7ba45b8b1e6', -- leo
'3f0fc50d4e5c893f9f58f98874bd21080b93c28ff5e4d4946352cada1b4e6441', -- andre
'1d37eacbd70f72730b1f5aba246a6a8eab100e2d45dda0163d9ad827f70f88d4', -- gernot
'bd5a70d4c3df30eaa860d615c0e0526b0dda5bc60c09c20972bce4ffa7512659', -- bjoern
'd9992853c0fe1a2e983cc222b6bd26e70d4fb2a53862ac099144e9e8142238d0', -- daniel
'961495a04512e5ba1843fd3c216d8af6ef2fdb19f93055142803e2da26d670b9', -- alexander
'ed6278f168f0382adf4f058cb9c31d8f1145abb968a8626045de7d6d87a0be40', -- olli
},
},
beta = {
name = 'beta',
mirrors = {'http://updates-a.hamburg.freifunk.net/multi/stable/images/sysupgrade','http://updates-b.hamburg.freifunk.net/multi/stable/images/sysupgrade'},
good_signatures = 2,
pubkeys = {
'ef73bc52b929fd11efce9a5c8f0b5463f1766bb995c8a0b3b6bcd7ba45b8b1e6', -- leo
'3f0fc50d4e5c893f9f58f98874bd21080b93c28ff5e4d4946352cada1b4e6441', -- andre
'1d37eacbd70f72730b1f5aba246a6a8eab100e2d45dda0163d9ad827f70f88d4', -- gernot
'bd5a70d4c3df30eaa860d615c0e0526b0dda5bc60c09c20972bce4ffa7512659', -- bjoern
'd9992853c0fe1a2e983cc222b6bd26e70d4fb2a53862ac099144e9e8142238d0', -- daniel
'961495a04512e5ba1843fd3c216d8af6ef2fdb19f93055142803e2da26d670b9', -- alexander
'ed6278f168f0382adf4f058cb9c31d8f1145abb968a8626045de7d6d87a0be40', -- olli
},
},
experimental = {
name = 'experimental',
mirrors = {'http://updates-a.hamburg.freifunk.net/multi/experimental/images/sysupgrade','http://updates-b.hamburg.freifunk.net/multi/experimental/images/sysupgrade'},
good_signatures = 1,
pubkeys = {
'1a0112fe489860068480c611c5dc56196c2f1a645db651ea2ed19ae0f0e8e1d1', -- builder1/2
},
},
},
},
poe_passthrough = false,
}

11
site.mk
View file

@ -1,11 +0,0 @@
GLUON_MULTIDOMAIN := 1
GLUON_DEPRECATED := upgrade
GLUON_AUTOUPDATER_ENABLED ?= 1
GLUON_PRIORITY ?= 7
# Region code required for some images; supported values: us eu
GLUON_REGION ?= eu
GLUON_LANGS ?= en de

3
template/info.erb Normal file
View file

@ -0,0 +1,3 @@
GLUON_RELEASE="<%= gluon_release %>"
GLUON_BRANCH="<%= gluon_branch %>"
targets="<%= gluon_targets.join(" ") %>"

8
template/modules.erb Normal file
View file

@ -0,0 +1,8 @@
GLUON_SITE_FEEDS='ffhh_packages ffho_packages'
PACKAGES_FFHH_PACKAGES_REPO=git://github.com/freifunkhamburg/ffhh-packages.git
PACKAGES_FFHH_PACKAGES_COMMIT=ef9fcc1222f74c3c045b1450537a4b8b80efb56c
PACKAGES_FFHO_PACKAGES_REPO=git://github.com/FreifunkHochstift/ffho-packages.git
PACKAGES_FFHO_PACKAGES_COMMIT=72ba236324fb538dc304695285fae059489365b9
PACKAGES_FFHO_PACKAGES_BRANCH=v2016.2.x

130
template/site.conf.erb Normal file
View file

@ -0,0 +1,130 @@
{
hostname_prefix = 'GibMirEinenNamen',
site_name = '<%= site_name %>',
site_code = '<%= site_code %>',
opkg = {
openwrt = 'http://opkg.services.ffhh/%n/%v/%S/packages',
extra = {
modules = 'http://updates.hamburg.freifunk.net/%GS/stable/archive/modules/gluon-%GS-%GR/%S',
},
},
prefix4 = '<%= prefix4 %>',
prefix6 = '<%= prefix6 %>',
timezone = 'CET-1CEST,M3.5.0,M10.5.0/3', -- Europe/Berlin
ntp_servers = {'1.ntp.services.ffhh','2.ntp.services.ffhh','3.ntp.services.ffhh'},
regdom = 'DE',
wifi24 = {
channel = 1,
supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000},
basic_rate = {6000, 9000, 18000, 36000, 54000},
ap = {
ssid = 'hamburg.freifunk.net',
},
<% if gluon_ath10k_mesh == "11s" -%>
mesh = {
id = '<%= ("00000000" + site_code)[-8..-1].each_byte.map { |b| b.to_s(16) }.join.upcase %>',
mcast_rate = 12000,
},
<% else -%>
ibss = {
ssid = 'f8:d1:11:87:52:2e',
bssid = 'f8:d1:11:87:52:2e',
mcast_rate = 12000,
},
<% end -%>
},
wifi5 = {
channel = 44,
ap = {
ssid = 'hamburg.freifunk.net',
},
<% if gluon_ath10k_mesh == "11s" -%>
mesh = {
id = '<%= ("00000000" + site_code)[-8..-1].each_byte.map { |b| b.to_s(16) }.join.upcase %>',
mcast_rate = 12000,
},
<% else -%>
ibss = {
ssid = 'f8:d1:11:87:52:2e',
bssid = 'f8:d1:11:87:52:2e',
mcast_rate = 12000,
},
<% end -%>
},
next_node = {
ip4 = '<%= next_node_ipv4 %>',
ip6 = '<%= next_node_ipv6 %>',
mac = '16:41:95:40:f7:dc',
},
fastd_mesh_vpn = {
enabled = true,
methods = {'salsa2012+umac'},
mtu = <%= mtu %>,
groups = {
backbone = {
limit = 1,
peers = {
<% gateways.each_pair do | name, gw_data | -%>
<%= name %> = {
key = '<%= gw_data['key'] %>',
remotes = { '<%= gw_data['remotes'].join("', '") %>' },
},
<% end -%>
},
},
},
bandwidth_limit = {
enabled = false,
ingress = 8096,
egress = 1024,
},
},
autoupdater = {
branch = '<%= gluon_branch %>',
branches = {
stable = {
name = 'stable',
mirrors = {'http://1.updates.services.ffhh/<%= site_code %>/stable/sysupgrade','http://2.updates.services.ffhh/<%= site_code %>/stable/sysupgrade'},
good_signatures = 2,
pubkeys = {
<% signing_keys.each do | key | -%>
'<%= key %>',
<% end -%>
},
},
beta = {
name = 'beta',
mirrors = {'http://1.updates.services.ffhh/<%= site_code %>/beta/sysupgrade','http://2.updates.services.ffhh/<%= site_code %>/beta/sysupgrade'},
good_signatures = 2,
pubkeys = {
<% signing_keys.each do | key | -%>
'<%= key %>',
<% end -%>
},
},
experimental = {
name = 'experimental',
mirrors = {'http://1.updates.services.ffhh/<%= site_code %>/experimental/sysupgrade','http://2.updates.services.ffhh/<%= site_code %>/experimental/sysupgrade'},
good_signatures = 1,
pubkeys = {
<% signing_keys_experimental.each do | key | -%>
'<%= key %>',
<% end -%>
},
},
},
},
poe_passthrough = false,
}

37
template/site.mk.erb Normal file
View file

@ -0,0 +1,37 @@
GLUON_SITE_PACKAGES :=<% gluon_site_packages.each do | p | -%>
<%= " " + p -%>
<% end -%>
# EXTRA_SOFTWARE_TOOLS_01
EXTRA_SOFTWARE_TOOLS_01 := \
nano \
htop \
ethtool
# x86
ifeq ($(GLUON_TARGET),x86-generic)
GLUON_SITE_PACKAGES += \
$(EXTRA_SOFTWARE_TOOLS_01)
endif
# x86-64
ifeq ($(GLUON_TARGET),x86-64)
GLUON_SITE_PACKAGES += \
$(EXTRA_SOFTWARE_TOOLS_01)
endif
DEFAULT_GLUON_RELEASE := <%= gluon_release %>
# Allow overriding the release number from the command line
GLUON_RELEASE ?= $(DEFAULT_GLUON_RELEASE)
GLUON_PRIORITY ?= 0
# Region code required for some images; supported values: us eu
GLUON_REGION ?= eu
GLUON_ATH10K_MESH ?= <%= gluon_ath10k_mesh %>
GLUON_LANGS ?= en de