[PATCH v3 1/3] fff-gateway: add package

Tim Niemeyer tim at tn-x.org
Mi Mai 8 21:20:48 CEST 2019


Hi

Reviewed-by: Tim Niemeyer <tim at tn-x.org>

Tim

Am Dienstag, den 23.04.2019, 18:09 +0200 schrieb Fabian Bläse:
> This introduces a new script for simple gateway configuration.
> 
> The main configuregateway script is able to execute functions
> for various steps like 'configure' or 'apply' from scripts in
> /etc/gateway.d.
> 
> This makes it easy to distribute configuration to the appropriate
> packages.
> 
> Signed-off-by: Fabian Bläse <fabian at blaese.de>
> Reviewed-by: Robert Langhammer <rlanghammer at web.de>
> ---
> Changes in v2:
> - Remove unnecessary package dependency
> - Remove unnecessary shell sources
> - Remove wrong sanity check left over from refactoring
> 
> Changes in v3:
> - rename service reload function
> - use grep -q instead of redirection to /dev/null
> - use tabs for Makefile indentation
> ---
>  src/packages/fff/fff-gateway/Makefile         |  38 +++++++
>  .../files/usr/sbin/configuregateway           | 102
> ++++++++++++++++++
>  2 files changed, 140 insertions(+)
>  create mode 100644 src/packages/fff/fff-gateway/Makefile
>  create mode 100755 src/packages/fff/fff-
> gateway/files/usr/sbin/configuregateway
> 
> diff --git a/src/packages/fff/fff-gateway/Makefile
> b/src/packages/fff/fff-gateway/Makefile
> new file mode 100644
> index 0000000..7c1dd55
> --- /dev/null
> +++ b/src/packages/fff/fff-gateway/Makefile
> @@ -0,0 +1,38 @@
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=fff-gateway
> +PKG_VERSION:=1
> +PKG_RELEASE:=1
> +
> +PKG_BUILD_DIR:=$(BUILD_DIR)/fff-gateway
> +
> +include $(INCLUDE_DIR)/package.mk
> +
> +define Package/fff-gateway
> +	SECTION:=base
> +	CATEGORY:=Freifunk
> +	TITLE:= Freifunk-Franken gateway configuration
> +	URL:=https://www.freifunk-franken.de
> +endef
> +
> +define Package/fff-gateway/description
> +	This package configures the gateway
> +endef
> +
> +define Build/Prepare
> +	echo "all: " > $(PKG_BUILD_DIR)/Makefile
> +endef
> +
> +define Build/Configure
> +	# nothing
> +endef
> +
> +define Build/Compile
> +	# nothing
> +endef
> +
> +define Package/fff-gateway/install
> +	$(CP) ./files/* $(1)/
> +endef
> +
> +$(eval $(call BuildPackage,fff-gateway))
> diff --git a/src/packages/fff/fff-
> gateway/files/usr/sbin/configuregateway b/src/packages/fff/fff-
> gateway/files/usr/sbin/configuregateway
> new file mode 100755
> index 0000000..42be02f
> --- /dev/null
> +++ b/src/packages/fff/fff-gateway/files/usr/sbin/configuregateway
> @@ -0,0 +1,102 @@
> +#!/bin/sh
> +# This program is free software; you can redistribute it and/or
> modify
> +# it under the terms of the GNU General Public License as published
> by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See
> the
> +# GNU General Public License for more details.
> +
> +
> +# IMPORTANT!!
> +# DO NOT RUN THIS IN CRONJOB!
> +
> +execute_subshell() {
> +	if [ $# -ne 1 ]; then
> +		echo "Usage:" "$0" "<function>"
> +	fi
> +
> +	for script in /etc/gateway.d/*; do
> +		(
> +			# unset function to prevent executing
> parents shell function
> +			unset -f "$1"
> +			. "$script"
> +
> +			if type "$1" | grep -q "shell function";
> then
> +				"$1"
> +			fi
> +		)
> +
> +		if [ $? -ne 0 ]; then
> +			echo "Error when executing" "$1" "from"
> "$(basename "$script")"
> +			exit 1
> +		fi
> +	done
> +}
> +
> +configure() {
> +	echo "This script might remove existing vlans, interfaces,
> addresses, etc."
> +	read -r -p "Do you really want to continue? (y/n) " response
> +	if ! [ "$response" == "y" ] || [ "$response" == "Y" ]; then
> +		exit 1
> +	fi
> +
> +	execute_subshell configure
> +
> +	exit 0
> +}
> +
> +reload_services() {
> +	execute_subshell reload
> +	reload_config
> +}
> +
> +apply_changes() {
> +	execute_subshell apply
> +	reload_services
> +	exit 0
> +}
> +
> +revert_changes() {
> +	execute_subshell revert
> +	exit 0
> +}
> +
> +test_changes() {
> +	reload_services
> +
> +	sleep 5
> +	echo "Configuration reloaded. Changes will be reverted in
> 200s."
> +	echo "Kill this script to keep changes."
> +	sleep 200
> +	echo "Reverting changes.."
> +
> +	revert_changes
> +	restart_services
> +}
> +
> +
> +usage() {
> +	echo Usage: $0 [OPTION];
> +	echo;
> +	echo "Options:"
> +	echo "	-c: configure. No commit, no restart!"
> +	echo "	-t: test changes. Restarts services, waits up
> to 200s for SIGINT"
> +	echo "	-a: apply changes"
> +	echo "	-r: revert changes"
> +}
> +
> +
> +if [ $# != 1 ]; then
> +	usage; exit 1
> +fi
> +
> +case "$1" in
> +	-c) configure ;;
> +	-t) test_changes ;;
> +	-a) apply_changes ;;
> +	-r) revert_changes ;;
> +	*) usage; exit 1 ;;
> +esac
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: This is a digitally signed message part
URL         : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190508/bdc51a81/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev