[PATCH v13 6/6] Remove references to community.cfg

Tim Niemeyer tim at tn-x.org
Di Okt 3 13:01:12 CEST 2017


Hi Adrian

Der Umbau gefällt mir sehr sehr gut! Danke.

Unten trotzdem noch eine wichtige und eine nicht so wichtige Anmerkung.

Am Dienstag, den 03.10.2017, 12:14 +0200 schrieb Adrian Schmutzler:
> This removes all references to community.cfg except in the
> buildscript and except the file itself.
> 
> Changes in v13:
>  - Fixed timeserver and upgrade path to be set by keyxchange
> 
> > Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> ---
>  .../fff-fastd/files/etc/uci-defaults/55_fff-fastd  | 41 +++++++++++-----------
>  .../fff-hoods/files/lib/functions/fff/keyxchange   | 15 ++++++++
>  .../fff/fff-hoods/files/usr/sbin/configurehood     |  6 ++++
>  .../fff/fff-support/files/usr/sbin/show_info       |  1 -
>  src/packages/fff/fff-sysupgrade/Makefile           |  4 +--
>  .../fff/fff-sysupgrade/files/etc/sysupgrade.sh     |  9 ++++-
>  src/packages/fff/fff-timeserver/Makefile           |  2 +-
>  .../files/etc/uci-defaults/51-fff-timeserver       |  3 +-
>  8 files changed, 53 insertions(+), 28 deletions(-)
>  create mode 100644 src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
>  mode change 100755 => 100644 src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> 
> diff --git a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
> index 8ce8425..72970bd 100644
> --- a/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
> +++ b/src/packages/fff/fff-fastd/files/etc/uci-defaults/55_fff-fastd
> @@ -1,28 +1,27 @@
> -/etc/init.d/fastd disable
> +#!/bin/sh
>  
> -. /etc/community.cfg
> -project="$VPN_PROJECT"
> +/etc/init.d/fastd disable
>  
>  >/etc/config/fastd
>  
>  uci batch <<EOF
> -  set fastd.${project}='fastd'
> -  set fastd.${project}.enabled='1'
> -  set fastd.${project}.config_peer_dir="/etc/fastd/${project}/peers"
> -  set fastd.${project}.syslog_level='warn'
> -  set fastd.${project}.method='null'
> -  set fastd.${project}.mode='tap'
> -  set fastd.${project}.interface="${project}VPN"
> -  set fastd.${project}.mtu='1426'
> -  set fastd.${project}.on_up="/etc/fastd/${project}/up.sh"
> -  set fastd.${project}.secure_handshakes='0'
> -  set fastd.${project}.secret="generate"
> +  set fastd.fff='fastd'
> +  set fastd.fff.enabled='1'
> +  set fastd.fff.config_peer_dir="/etc/fastd/fff/peers"
> +  set fastd.fff.syslog_level='warn'
> +  set fastd.fff.method='null'
> +  set fastd.fff.mode='tap'
> +  set fastd.fff.interface="fffVPN"
> +  set fastd.fff.mtu='1426'
> +  set fastd.fff.on_up="/etc/fastd/fff/up.sh"
> +  set fastd.fff.secure_handshakes='0'
> +  set fastd.fff.secret="generate"
>  EOF
>  
> -[ ! -d /etc/fastd/${project} ] &&  mkdir -p /etc/fastd/${project}
> -ln -s /tmp/fastd_${project}_peers /etc/fastd/${project}/peers
> -echo "#!/bin/sh" > /etc/fastd/${project}/up.sh
> -echo "ip link set up dev ${project}VPN" >> /etc/fastd/${project}/up.sh
> -echo "echo enable > /sys/devices/virtual/net/${project}VPN/batman_adv/no_rebroadcast" >> /etc/fastd/${project}/up.sh
> -echo "batctl if add ${project}VPN" >> /etc/fastd/${project}/up.sh
> -chmod +x /etc/fastd/${project}/up.sh
> +[ ! -d /etc/fastd/fff ] &&  mkdir -p /etc/fastd/fff
> +ln -s /tmp/fastd_fff_peers /etc/fastd/fff/peers
> +echo "#!/bin/sh" > /etc/fastd/fff/up.sh
> +echo "ip link set up dev fffVPN" >> /etc/fastd/fff/up.sh
> +echo "echo enable > /sys/devices/virtual/net/fffVPN/batman_adv/no_rebroadcast" >> /etc/fastd/fff/up.sh
> +echo "batctl if add fffVPN" >> /etc/fastd/fff/up.sh
> +chmod +x /etc/fastd/fff/up.sh
> diff --git a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
> new file mode 100644
> index 0000000..ddae6b3
> --- /dev/null
> +++ b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange
> @@ -0,0 +1,15 @@
> +#!/bin/sh
> +# Copyright 2017 Adrian Schmutzler
> +# License GPLv3
> +
> +getUpgradePath() {
> > +	if [ -s /tmp/keyxchangev2data ]; then
> > +		json_load "$(cat /tmp/keyxchangev2data)"
> > +		json_select hood
> > +		json_get_var upath upgrade_path
> > +		echo "$upath"
> > +	else
> > +		return 1
> > +	fi
> > +	return 0
> +}
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index ac800f4..3168eb1 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -2,6 +2,7 @@
>  
>  . /usr/share/libubox/jshn.sh
>  . /lib/functions/fff/wireless
> +. /lib/functions/fff/timeserver
>  
>  rm /tmp/keyxchangev2data
>  
> @@ -117,6 +118,7 @@ if [ -s /tmp/keyxchangev2data ]; then
> >  		json_get_var mesh_bssid mesh_bssid
> >  		json_get_var mesh_essid mesh_essid
> >  		json_get_var essid essid
> > +		json_get_var ntpip ntp_ip
> >  		# i think the next things we don't active this in the first version! we can do it later
> >  		#json_get_var channel2 channel2
> >  		#json_get_var mode2 mode2
> @@ -171,6 +173,10 @@ if [ -s /tmp/keyxchangev2data ]; then
> >  		echo "Loading wifi"
> >  		wifi
>  
> > +		oldntp="$(uci -q get system.ntp.server)"
> +		newntp="${ntpip}%br-mesh"
Wenn wir die Scope-ID ("%br-mesh") behalten, darf in dem Hoodfile nur
eine Link-Local IP drin sein. Wenn wir die weg lassen, darf nur noch
eine routebare IPv6 Adresse enthalten sein. Man könnte ein
Zwischenschritt machen und im Hoodfile die Scope-ID mitgeben, aber dann
muss jeder Knoten immer das br-mesh bereithalten und wir haben damit
eine sehr langkettige Abhängigkeit gebaut.

Sofern sicher ist, dass wir routbare IPv6 Adressen kriegen, und ich
denke das ist sicher, dann sollten wir auch nur diese dafür verwenden.
Von daher würde ich die Scope-ID entfernen.

Wenn wir dann endlich die Link-Local Adressen für das NTP los sind,
dann könnten wir auch diesen Patch kicken:
build_patches/openwrt/0003-ntpd-host-as-string.patch
Der tut uns zwar nicht weh, ist dann aber auch nicht mehr nötig.

> +		[ "$newntp" = "$oldntp" ] || setTimeserver "${newntp}" # only rewrite if changed
> +
> >  	else
> >  		echo "We have no new file. We do nothing. We try it again in 5 minutes...";
> >  		exit 0
> diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info b/src/packages/fff/fff-support/files/usr/sbin/show_info
> index fc7cffb..3914391 100755
> --- a/src/packages/fff/fff-support/files/usr/sbin/show_info
> +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
> @@ -1,6 +1,5 @@
>  #!/bin/sh
>  
> -. /etc/community.cfg
>  . /etc/firmware_release
>  
>  board_name=$(uci -q get board.model.name)
> diff --git a/src/packages/fff/fff-sysupgrade/Makefile b/src/packages/fff/fff-sysupgrade/Makefile
> index 3224662..f29cf73 100644
> --- a/src/packages/fff/fff-sysupgrade/Makefile
> +++ b/src/packages/fff/fff-sysupgrade/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-sysupgrade
> -PKG_VERSION:=0.0.4
> +PKG_VERSION:=5
>  PKG_RELEASE:=4
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/fff-sysupgrade
> @@ -13,7 +13,7 @@ define Package/fff-sysupgrade
>      CATEGORY:=Freifunk
>      TITLE:=Freifunk-Franken sysupgrade
>      URL:=http://www.freifunk-franken.de
> > -    DEPENDS:=+fff-boardname + at BUSYBOX_CONFIG_WGET
> > +    DEPENDS:=+fff-boardname +fff-hoods + at BUSYBOX_CONFIG_WGET
>  endef
>  
>  define Package/fff-sysupgrade/description
> diff --git a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
> index df9d519..8aaa924 100755
> --- a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
> +++ b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
> @@ -1,9 +1,16 @@
>  #!/bin/sh
>  cd /tmp/
>  
> +. /lib/functions/fff/keyxchange
>  . /etc/firmware_release
>  
> -. /etc/community.cfg
> +UPGRADE_PATH="$(getUpgradePath)"

Die Lösung ist gut, aber nur mal als Überlegung.. Wenn wir
dev.freifunk-franken.de IPv6 fähig machen, dann könnten wir das einfach
nehmen, oder? Hm, ne, wir müssten den Knoten noch DNS beibringen..

Ach erstmal egal.. Lieber so lassen wir du das jetzt hier im Patch
hast.

> +
> +if [ -z "$UPGRADE_PATH" ]; then
> +  echo "Upgrade path not set! Aborting."
> +  echo ""
> +  exit 1
> +fi
>  
>  BOARD=$(uci get board.model.name)
>  
> diff --git a/src/packages/fff/fff-timeserver/Makefile b/src/packages/fff/fff-timeserver/Makefile
> index 4a2decd..d88d646 100644
> --- a/src/packages/fff/fff-timeserver/Makefile
> +++ b/src/packages/fff/fff-timeserver/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-timeserver
> -PKG_VERSION:=0.0.1
> +PKG_VERSION:=2
>  PKG_RELEASE:=1
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/fff-timeserver
> diff --git a/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver b/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> old mode 100755
> new mode 100644
> index aa485ab..fe5979d
> --- a/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> +++ b/src/packages/fff/fff-timeserver/files/etc/uci-defaults/51-fff-timeserver
> @@ -1,9 +1,8 @@
>  #!/bin/sh
>  
>  . /lib/functions/fff/timeserver
Die wird nicht mehr benötigt.

Tim

> -. /etc/community.cfg
>  
> -setTimeserver "${NTPD_IP}"
> +# No initialization here, this is done in configurehood
>  
> >  uci -q set "system. at system[0].timezone=CET-1CEST,M3.5.0,M10.5.0/3"
>  
> -- 
> 2.7.4
> 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 488 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20171003/32136dd4/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev