[v2,1/2] vpn-select: Demand hood file to be provided as argument

Submitted by Adrian Schmutzler on July 29, 2018, 10:36 a.m.

Details

Message ID 20180729103637.28166-1-freifunk@adrianschmutzler.de
State Accepted
Headers show

Commit Message

Adrian Schmutzler July 29, 2018, 10:36 a.m.
By removing the reference to the hood file from vpn-select, we
remove the entire dependency from fff-hoodutils.
vpn-select will now work with any file provided, as long as
it has the correct syntax. At the moment, the only provider
is the configurehood script. Since the various hood file variants
are handled there, it seems logical that configurehood also
chooses and provides the correct hood file for vpn-select, instead
of vpn-select which had no other contact with hood file choice.

This is simple, tidy and effective.

Adjusted some comments.

Fixes #106

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

---

Changes in v2:
- Added usage comment
- Added exit 0
- Added error and exit 1 for missing file
- Removed sh call in configurehood

Since multiple things changed, I did NOT copy the reviews.
Please redo!

I raised the version for fff-vpn-select by 2, since it still was
on 1. The never existant version 2 would have been the initial
KeyXchangeV2 version.
---
 src/packages/fff/fff-hoods/Makefile                       |  2 +-
 src/packages/fff/fff-hoods/files/usr/sbin/configurehood   |  4 ++--
 src/packages/fff/fff-vpn-select/Makefile                  |  2 +-
 src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select | 15 +++++++++++----
 4 files changed, 15 insertions(+), 8 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-hoods/Makefile b/src/packages/fff/fff-hoods/Makefile
index b565ac7..93fd430 100644
--- a/src/packages/fff/fff-hoods/Makefile
+++ b/src/packages/fff/fff-hoods/Makefile
@@ -1,7 +1,7 @@ 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-hoods
-PKG_VERSION:=2
+PKG_VERSION:=3
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
index 57c6f9f..47e228b 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -195,9 +195,9 @@  if [ -s "$hoodfiletmp" ]; then
 	# and now we get to vpn-select script and load VPNs directly from /tmp/keyxchangev2data
 	
 	if hasInternet ; then
-		sh /usr/sbin/vpn-select
+		/usr/sbin/vpn-select "$hoodfiletmp"
 	else
-		sh /usr/sbin/vpn-stop
+		/usr/sbin/vpn-stop
 	fi
 
 	# now we load the prefix from the hoodfile and set this to br-mesh
diff --git a/src/packages/fff/fff-vpn-select/Makefile b/src/packages/fff/fff-vpn-select/Makefile
index 4e2d89b..27cff09 100644
--- a/src/packages/fff/fff-vpn-select/Makefile
+++ b/src/packages/fff/fff-vpn-select/Makefile
@@ -1,7 +1,7 @@ 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-vpn-select
-PKG_VERSION:=1
+PKG_VERSION:=3
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
index 7c9bced..ddd21a1 100755
--- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
+++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
@@ -1,15 +1,18 @@ 
 #!/bin/sh
 
-. /lib/functions/fff/keyxchange
+# Usage: vpn-select <path-to-hood-file>
+
 . /usr/share/libubox/jshn.sh
 
+hoodfile="$1"
+
 make_config() {
 # remove old config
 >/etc/config/tunneldigger
 rm /tmp/fastd_fff_peers/*
 count=0
 Index=1
-json_load "$(cat "$hoodfiletmp")"
+json_load "$(cat "$hoodfile")"
 json_select vpn
 # get fastd peers
 while json_select "$Index" > /dev/null
@@ -53,8 +56,8 @@  json_select ".." # back to root
 
 # main
 
-# Only do something when file is here and greater 0 byte
-if [ -s "$hoodfiletmp" ]; then
+# Only do something if file is there and not empty; otherwise exit 1
+if [ -s "$hoodfile" ]; then
 	# set some vars
 	hostname=$(cat /proc/sys/kernel/hostname)
 	mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac }' /sys/class/net/br-mesh/address 2>/dev/null)
@@ -84,4 +87,8 @@  if [ -s "$hoodfiletmp" ]; then
 			([ -s "$pidfile" ] && [ -d "/proc/$(cat "$pidfile")" ]) && /etc/init.d/fastd stop
 		fi
 	fi
+	exit 0
+else
+	echo "vpn-select: Hood file not found or empty!"
+	exit 1
 fi

Comments

Robert Langhammer Aug. 1, 2018, 5:58 p.m.
Hallo Adrian,

Reviewed-by: Robert Langhammer <rlanghammer@web.de>


Am 29.07.2018 um 12:36 schrieb Adrian Schmutzler:
> By removing the reference to the hood file from vpn-select, we
> remove the entire dependency from fff-hoodutils.
> vpn-select will now work with any file provided, as long as
> it has the correct syntax. At the moment, the only provider
> is the configurehood script. Since the various hood file variants
> are handled there, it seems logical that configurehood also
> chooses and provides the correct hood file for vpn-select, instead
> of vpn-select which had no other contact with hood file choice.
>
> This is simple, tidy and effective.
>
> Adjusted some comments.
>
> Fixes #106
>
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
>
> ---
>
> Changes in v2:
> - Added usage comment
> - Added exit 0
> - Added error and exit 1 for missing file
> - Removed sh call in configurehood
>
> Since multiple things changed, I did NOT copy the reviews.
> Please redo!
>
> I raised the version for fff-vpn-select by 2, since it still was
> on 1. The never existant version 2 would have been the initial
> KeyXchangeV2 version.
> ---
>  src/packages/fff/fff-hoods/Makefile                       |  2 +-
>  src/packages/fff/fff-hoods/files/usr/sbin/configurehood   |  4 ++--
>  src/packages/fff/fff-vpn-select/Makefile                  |  2 +-
>  src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select | 15 +++++++++++----
>  4 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/src/packages/fff/fff-hoods/Makefile b/src/packages/fff/fff-hoods/Makefile
> index b565ac7..93fd430 100644
> --- a/src/packages/fff/fff-hoods/Makefile
> +++ b/src/packages/fff/fff-hoods/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-hoods
> -PKG_VERSION:=2
> +PKG_VERSION:=3
>  PKG_RELEASE:=1
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 57c6f9f..47e228b 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -195,9 +195,9 @@ if [ -s "$hoodfiletmp" ]; then
>  	# and now we get to vpn-select script and load VPNs directly from /tmp/keyxchangev2data
>  	
>  	if hasInternet ; then
> -		sh /usr/sbin/vpn-select
> +		/usr/sbin/vpn-select "$hoodfiletmp"
>  	else
> -		sh /usr/sbin/vpn-stop
> +		/usr/sbin/vpn-stop
>  	fi
>  
>  	# now we load the prefix from the hoodfile and set this to br-mesh
> diff --git a/src/packages/fff/fff-vpn-select/Makefile b/src/packages/fff/fff-vpn-select/Makefile
> index 4e2d89b..27cff09 100644
> --- a/src/packages/fff/fff-vpn-select/Makefile
> +++ b/src/packages/fff/fff-vpn-select/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-vpn-select
> -PKG_VERSION:=1
> +PKG_VERSION:=3
>  PKG_RELEASE:=1
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
> diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> index 7c9bced..ddd21a1 100755
> --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> @@ -1,15 +1,18 @@
>  #!/bin/sh
>  
> -. /lib/functions/fff/keyxchange
> +# Usage: vpn-select <path-to-hood-file>
> +
>  . /usr/share/libubox/jshn.sh
>  
> +hoodfile="$1"
> +
>  make_config() {
>  # remove old config
>  >/etc/config/tunneldigger
>  rm /tmp/fastd_fff_peers/*
>  count=0
>  Index=1
> -json_load "$(cat "$hoodfiletmp")"
> +json_load "$(cat "$hoodfile")"
>  json_select vpn
>  # get fastd peers
>  while json_select "$Index" > /dev/null
> @@ -53,8 +56,8 @@ json_select ".." # back to root
>  
>  # main
>  
> -# Only do something when file is here and greater 0 byte
> -if [ -s "$hoodfiletmp" ]; then
> +# Only do something if file is there and not empty; otherwise exit 1
> +if [ -s "$hoodfile" ]; then
>  	# set some vars
>  	hostname=$(cat /proc/sys/kernel/hostname)
>  	mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac }' /sys/class/net/br-mesh/address 2>/dev/null)
> @@ -84,4 +87,8 @@ if [ -s "$hoodfiletmp" ]; then
>  			([ -s "$pidfile" ] && [ -d "/proc/$(cat "$pidfile")" ]) && /etc/init.d/fastd stop
>  		fi
>  	fi
> +	exit 0
> +else
> +	echo "vpn-select: Hood file not found or empty!"
> +	exit 1
>  fi
Fabian Blaese Aug. 2, 2018, 9:14 a.m.
Hallo,

Reviewed-by: Fabian Bläse <fabian@blaese.de>

Fabian

> On 29. Jul 2018, at 12:36, Adrian Schmutzler <freifunk@adrianschmutzler.de> wrote:
> 
> By removing the reference to the hood file from vpn-select, we
> remove the entire dependency from fff-hoodutils.
> vpn-select will now work with any file provided, as long as
> it has the correct syntax. At the moment, the only provider
> is the configurehood script. Since the various hood file variants
> are handled there, it seems logical that configurehood also
> chooses and provides the correct hood file for vpn-select, instead
> of vpn-select which had no other contact with hood file choice.
> 
> This is simple, tidy and effective.
> 
> Adjusted some comments.
> 
> Fixes #106
> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> ---
> 
> Changes in v2:
> - Added usage comment
> - Added exit 0
> - Added error and exit 1 for missing file
> - Removed sh call in configurehood
> 
> Since multiple things changed, I did NOT copy the reviews.
> Please redo!
> 
> I raised the version for fff-vpn-select by 2, since it still was
> on 1. The never existant version 2 would have been the initial
> KeyXchangeV2 version.
> ---
> src/packages/fff/fff-hoods/Makefile                       |  2 +-
> src/packages/fff/fff-hoods/files/usr/sbin/configurehood   |  4 ++--
> src/packages/fff/fff-vpn-select/Makefile                  |  2 +-
> src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select | 15 +++++++++++----
> 4 files changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/src/packages/fff/fff-hoods/Makefile b/src/packages/fff/fff-hoods/Makefile
> index b565ac7..93fd430 100644
> --- a/src/packages/fff/fff-hoods/Makefile
> +++ b/src/packages/fff/fff-hoods/Makefile
> @@ -1,7 +1,7 @@
> include $(TOPDIR)/rules.mk
> 
> PKG_NAME:=fff-hoods
> -PKG_VERSION:=2
> +PKG_VERSION:=3
> PKG_RELEASE:=1
> 
> PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 57c6f9f..47e228b 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -195,9 +195,9 @@ if [ -s "$hoodfiletmp" ]; then
> 	# and now we get to vpn-select script and load VPNs directly from /tmp/keyxchangev2data
> 
> 	if hasInternet ; then
> -		sh /usr/sbin/vpn-select
> +		/usr/sbin/vpn-select "$hoodfiletmp"
> 	else
> -		sh /usr/sbin/vpn-stop
> +		/usr/sbin/vpn-stop
> 	fi
> 
> 	# now we load the prefix from the hoodfile and set this to br-mesh
> diff --git a/src/packages/fff/fff-vpn-select/Makefile b/src/packages/fff/fff-vpn-select/Makefile
> index 4e2d89b..27cff09 100644
> --- a/src/packages/fff/fff-vpn-select/Makefile
> +++ b/src/packages/fff/fff-vpn-select/Makefile
> @@ -1,7 +1,7 @@
> include $(TOPDIR)/rules.mk
> 
> PKG_NAME:=fff-vpn-select
> -PKG_VERSION:=1
> +PKG_VERSION:=3
> PKG_RELEASE:=1
> 
> PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
> diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> index 7c9bced..ddd21a1 100755
> --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> @@ -1,15 +1,18 @@
> #!/bin/sh
> 
> -. /lib/functions/fff/keyxchange
> +# Usage: vpn-select <path-to-hood-file>
> +
> . /usr/share/libubox/jshn.sh
> 
> +hoodfile="$1"
> +
> make_config() {
> # remove old config
>> /etc/config/tunneldigger
> rm /tmp/fastd_fff_peers/*
> count=0
> Index=1
> -json_load "$(cat "$hoodfiletmp")"
> +json_load "$(cat "$hoodfile")"
> json_select vpn
> # get fastd peers
> while json_select "$Index" > /dev/null
> @@ -53,8 +56,8 @@ json_select ".." # back to root
> 
> # main
> 
> -# Only do something when file is here and greater 0 byte
> -if [ -s "$hoodfiletmp" ]; then
> +# Only do something if file is there and not empty; otherwise exit 1
> +if [ -s "$hoodfile" ]; then
> 	# set some vars
> 	hostname=$(cat /proc/sys/kernel/hostname)
> 	mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac }' /sys/class/net/br-mesh/address 2>/dev/null)
> @@ -84,4 +87,8 @@ if [ -s "$hoodfiletmp" ]; then
> 			([ -s "$pidfile" ] && [ -d "/proc/$(cat "$pidfile")" ]) && /etc/init.d/fastd stop
> 		fi
> 	fi
> +	exit 0
> +else
> +	echo "vpn-select: Hood file not found or empty!"
> +	exit 1
> fi
> --
> 2.11.0
>
Tim Niemeyer Aug. 2, 2018, 5 p.m.
Hi

Patch 1/2 ist applied.

Tim

Am Sonntag, den 29.07.2018, 12:36 +0200 schrieb Adrian Schmutzler:
> By removing the reference to the hood file from vpn-select, we
> remove the entire dependency from fff-hoodutils.
> vpn-select will now work with any file provided, as long as
> it has the correct syntax. At the moment, the only provider
> is the configurehood script. Since the various hood file variants
> are handled there, it seems logical that configurehood also
> chooses and provides the correct hood file for vpn-select, instead
> of vpn-select which had no other contact with hood file choice.
> 
> This is simple, tidy and effective.
> 
> Adjusted some comments.
> 
> Fixes #106
> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> ---
> 
> Changes in v2:
> - Added usage comment
> - Added exit 0
> - Added error and exit 1 for missing file
> - Removed sh call in configurehood
> 
> Since multiple things changed, I did NOT copy the reviews.
> Please redo!
> 
> I raised the version for fff-vpn-select by 2, since it still was
> on 1. The never existant version 2 would have been the initial
> KeyXchangeV2 version.
> ---
>  src/packages/fff/fff-hoods/Makefile                       |  2 +-
>  src/packages/fff/fff-hoods/files/usr/sbin/configurehood   |  4 ++--
>  src/packages/fff/fff-vpn-select/Makefile                  |  2 +-
>  src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select | 15
> +++++++++++----
>  4 files changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/src/packages/fff/fff-hoods/Makefile
> b/src/packages/fff/fff-hoods/Makefile
> index b565ac7..93fd430 100644
> --- a/src/packages/fff/fff-hoods/Makefile
> +++ b/src/packages/fff/fff-hoods/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-hoods
> -PKG_VERSION:=2
> +PKG_VERSION:=3
>  PKG_RELEASE:=1
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 57c6f9f..47e228b 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -195,9 +195,9 @@ if [ -s "$hoodfiletmp" ]; then
>  	# and now we get to vpn-select script and load VPNs directly
> from /tmp/keyxchangev2data
>  	
>  	if hasInternet ; then
> -		sh /usr/sbin/vpn-select
> +		/usr/sbin/vpn-select "$hoodfiletmp"
>  	else
> -		sh /usr/sbin/vpn-stop
> +		/usr/sbin/vpn-stop
>  	fi
>  
>  	# now we load the prefix from the hoodfile and set this to
> br-mesh
> diff --git a/src/packages/fff/fff-vpn-select/Makefile
> b/src/packages/fff/fff-vpn-select/Makefile
> index 4e2d89b..27cff09 100644
> --- a/src/packages/fff/fff-vpn-select/Makefile
> +++ b/src/packages/fff/fff-vpn-select/Makefile
> @@ -1,7 +1,7 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=fff-vpn-select
> -PKG_VERSION:=1
> +PKG_VERSION:=3
>  PKG_RELEASE:=1
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
> diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-
> select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> index 7c9bced..ddd21a1 100755
> --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select
> @@ -1,15 +1,18 @@
>  #!/bin/sh
>  
> -. /lib/functions/fff/keyxchange
> +# Usage: vpn-select <path-to-hood-file>
> +
>  . /usr/share/libubox/jshn.sh
>  
> +hoodfile="$1"
> +
>  make_config() {
>  # remove old config
>  >/etc/config/tunneldigger
>  rm /tmp/fastd_fff_peers/*
>  count=0
>  Index=1
> -json_load "$(cat "$hoodfiletmp")"
> +json_load "$(cat "$hoodfile")"
>  json_select vpn
>  # get fastd peers
>  while json_select "$Index" > /dev/null
> @@ -53,8 +56,8 @@ json_select ".." # back to root
>  
>  # main
>  
> -# Only do something when file is here and greater 0 byte
> -if [ -s "$hoodfiletmp" ]; then
> +# Only do something if file is there and not empty; otherwise exit 1
> +if [ -s "$hoodfile" ]; then
>  	# set some vars
>  	hostname=$(cat /proc/sys/kernel/hostname)
>  	mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac
> }' /sys/class/net/br-mesh/address 2>/dev/null)
> @@ -84,4 +87,8 @@ if [ -s "$hoodfiletmp" ]; then
>  			([ -s "$pidfile" ] && [ -d "/proc/$(cat
> "$pidfile")" ]) && /etc/init.d/fastd stop
>  		fi
>  	fi
> +	exit 0
> +else
> +	echo "vpn-select: Hood file not found or empty!"
> +	exit 1
>  fi