[PATCH v2 1/3] fff-gateway: add package
Adrian Schmutzler
mail at adrianschmutzler.de
Mi Mär 20 18:00:34 CET 2019
Hallo nochmal,
wir hatten zuletzt die kompletten Makefiles auf Tabs umgestellt, auch die Package-definition und -description.
Ggf. noch mit ändern, wenn du dran denkst.
Beste Grüße
Adrian
> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of
> Fabian Bläse
> Sent: Montag, 18. März 2019 22:54
> To: franken-dev at freifunk.net
> Subject: [PATCH v2 1/3] fff-gateway: add package
>
> 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>
> ---
>
> Changes in v3:
> - Remove unnecessary package dependency
> - Remove unnecessary shell sources
> - Remove wrong sanity check left over from refactoring
> ---
> src/packages/fff/fff-gateway/Makefile | 38 +++++++
> .../files/usr/sbin/configuregateway | 101 ++++++++++++++++++
> 2 files changed, 139 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..4ca6889
> --- /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..938a5c9
> --- /dev/null
> +++ b/src/packages/fff/fff-gateway/files/usr/sbin/configuregateway
> @@ -0,0 +1,101 @@
> +#!/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 "shell function" > /dev/null; 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
> +}
> +
> +restart_services() {
> + execute_subshell reload
> + reload_config
> +}
> +
> +apply_changes() {
> + execute_subshell apply
> + restart_services
> + exit 0
> +}
> +
> +revert_changes() {
> + execute_subshell revert
> + exit 0
> +}
> +
> +test_changes() {
> + restart_services
> +
> + sleep 5
> + echo "services restarted. waiting up to 200s for SIGINT.."
> + 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
> --
> 2.21.0
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 834 bytes
Beschreibung: nicht verfügbar
URL : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190320/88d57da7/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev