Similar to zone_config_settings_write and zone_config_settings_read this function provides an easy way to delete a config file.
Signed-off-by: Jonatan Schlag jonatan.schlag@ipfire.org --- src/functions/functions.zone | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/src/functions/functions.zone b/src/functions/functions.zone index d121225..0dd4fde 100644 --- a/src/functions/functions.zone +++ b/src/functions/functions.zone @@ -1248,6 +1248,24 @@ zone_config_settings_write() { settings_write "${path}" ${args} }
+zone_config_settings_destroy() { + # This function deletes the config file for a given zone and config + assert [ $# -ge 2 ] + local zone="${1}" + local config="${2}" + + local path="$(zone_dir "${zone}")/configs/${config}" + + # Check if path is valid + if [ ! -f ${path} ]; then + log ERROR "Path: '${path}' is not valid" + return ${EXIT_ERROR} + fi + + log DEBUG "Deleting config file ${path}" + rm -f "${path}" + +} zone_port_settings_read() { assert [ $# -ge 2 ]
We now just bring the hook down, execute hook_destroy which can be not empty inside the hook, because it is defined in src/header-config. After this we delete the config file.
Fixes: #11416
Signed-off-by: Jonatan Schlag jonatan.schlag@ipfire.org --- src/header-config | 4 ++++ src/header-zone | 6 ++++++ 2 files changed, 10 insertions(+)
diff --git a/src/header-config b/src/header-config index b697797..d55d7e5 100644 --- a/src/header-config +++ b/src/header-config @@ -22,3 +22,7 @@ hook_new() { cmd_not_implemented } + +hook_destroy() { + return ${EXIT_OK} +} diff --git a/src/header-zone b/src/header-zone index 2e3fa09..b4588fb 100644 --- a/src/header-zone +++ b/src/header-zone @@ -221,7 +221,13 @@ hook_config_destroy() { local hook=$(zone_config_get_hook_from_id ${zone} ${id}) assert isset hook
+ # First we bring the hook down + hook_config_cmd "down" "${zone}" "${hook}" "${hook}.${id}" + # If a hook_destroy function is implemented in the hook this function will be executed. + # If not a empty defined in header-config is executed. hook_config_cmd "destroy" "${zone}" "${hook}" "${hook}.${id}" "$@" + # Now we delete the config of the zone + zone_config_settings_destroy "${zone}" "${hook}.${id}" }
hook_config_edit() {
Hi,
On Mon, 2017-07-10 at 13:53 +0200, Jonatan Schlag wrote:
We now just bring the hook down, execute hook_destroy which can be not empty inside the hook, because it is defined in src/header-config. After this we delete the config file.
Fixes: #11416
Signed-off-by: Jonatan Schlag jonatan.schlag@ipfire.org
src/header-config | 4 ++++ src/header-zone | 6 ++++++ 2 files changed, 10 insertions(+)
diff --git a/src/header-config b/src/header-config index b697797..d55d7e5 100644 --- a/src/header-config +++ b/src/header-config @@ -22,3 +22,7 @@ hook_new() { cmd_not_implemented }
+hook_destroy() {
- return ${EXIT_OK}
+} diff --git a/src/header-zone b/src/header-zone index 2e3fa09..b4588fb 100644 --- a/src/header-zone +++ b/src/header-zone @@ -221,7 +221,13 @@ hook_config_destroy() { local hook=$(zone_config_get_hook_from_id ${zone} ${id}) assert isset hook
- # First we bring the hook down
- hook_config_cmd "down" "${zone}" "${hook}" "${hook}.${id}"
- # If a hook_destroy function is implemented in the hook this
function will be executed.
- # If not a empty defined in header-config is executed.
hook_config_cmd "destroy" "${zone}" "${hook}" "${hook}.${id}" "$@"
- # Now we delete the config of the zone
- zone_config_settings_destroy "${zone}" "${hook}.${id}"
} hook_config_edit() {
1) Please use spaces before starting a new block of comments. This is really hard to read here.
2) Do we not need to catch any errors? For example if hook_destroy() returns an error, this just goes on which I think is not right.
Best, -Michael