]> git.ipfire.org Git - people/arne_f/network.git/blobdiff - functions.hook
network: Make two groups of hooks, again.
[people/arne_f/network.git] / functions.hook
index 970e43b16be32e2da506d8d22fd53c980b0993c3..481d3cc51fbf926492729f3a312189a838b57346 100644 (file)
 #                                                                             #
 ###############################################################################
 
+function hook_dir() {
+       local type=${1}
+
+       echo "${HOOKS_DIR}/${type}s"
+}
+
 function hook_exists() {
-       local hook=${1}
+       local type=${1}
+       local hook=${2}
 
-       [ -d "${HOOKS_DIR}/${hook}" ] && return ${EXIT_ERROR}
+       local hook_dir=$(hook_dir ${type})
 
-       [ -x "${HOOKS_DIR}/${hook}" ]
+       [ -d "${hook_dir}/${hook}" ] && return ${EXIT_ERROR}
+
+       [ -x "${hook_dir}/${hook}" ]
 }
 
-function hook_port_exists() {
+function hook_exec() {
+       local type=${1}
+       local hook=${2}
+       shift 2
+
+       if ! hook_exists ${type} ${hook}; then
+               error "Hook '${hook}' does not exist."
+               return ${EXIT_ERROR}
+       fi
+
+       ${SHELL} $(hook_dir ${type})/${hook} $@
+}
+
+function config_get_hook() {
+       local config=${1}
+
+       (
+               . ${config}
+               echo "${HOOK}"
+       )
+}
+
+## Wrappers around the hook functions for zones
+
+function hook_zone_exists() {
+       hook_exists zone $@
+}
+
+function hook_zone_port_exists() {
        local hook_zone=${1}
        local hook_port=${2}
 
-       hook_exists ${hook_zone} || return ${EXIT_ERROR}
+       hook_zone_exists ${hook_zone} || return ${EXIT_ERROR}
 
-       [ -x "${HOOKS_DIR}/${hook_zone}.ports/${hook_port}" ]
+       [ -x "$(hook_dir zone)/${hook_zone}.ports/${hook_port}" ]
 }
 
-function hook_config_exists() {
+function hook_zone_config_exists() {
        local hook_zone=${1}
        local hook_config=${2}
 
-       hook_exists ${hook_zone} || return ${EXIT_ERROR}
+       hook_zone_exists ${hook_zone} || return ${EXIT_ERROR}
 
-       [ -x "${HOOKS_DIR}/${hook_zone}.configs/${hook_config}" ]
+       [ -x "$(hook_dir zone)/${hook_zone}.configs/${hook_config}" ]
 }
 
-function hook_has_ports() {
+function hook_zone_has_ports() {
        local hook=${1}
 
-       [ -d "${HOOKS_DIR}/${hook}.ports" ]
+       [ -d "$(hook_dir zone)/${hook}.ports" ]
 }
 
-function hook_has_configs() {
+function hook_zone_has_configs() {
        local hook=${1}
 
-       [ -d "${HOOKS_DIR}/${hook}.configs" ]
+       [ -d "$(hook_dir zone)/${hook}.configs" ]
 }
 
-function hook_exec() {
-       local hook=${1}
-       shift
-
-       if ! hook_exists ${hook}; then
-               error "Hook '${hook}' does not exist."
-               return ${EXIT_ERROR}
-       fi
-
-       ${SHELL} ${HOOKS_DIR}/${hook} $@
+function hook_zone_exec() {
+       hook_exec zone $@
 }
 
-function hook_port_exec() {
+function hook_zone_port_exec() {
        local hook_zone=${1}
        local hook_port=${2}
        shift 2
 
-       if ! hook_exists ${hook_zone}; then
+       if ! hook_exists zone ${hook_zone}; then
                error "Hook '${hook_zone}' does not exist."
                return ${EXIT_ERROR}
        fi
 
-       if ! hook_port_exists ${hook_zone} ${hook_port}; then
+       if ! hook_zone_port_exists ${hook_zone} ${hook_port}; then
                error "Port hook '${hook_port}' does not exist."
                return ${EXIT_ERROR}
        fi
 
-       ${SHELL} ${HOOKS_DIR}/${hook_zone}.ports/${hook_port} $@
+       ${SHELL} $(hook_dir zone)/${hook_zone}.ports/${hook_port} $@
 }
 
-function hook_config_exec() {
+function hook_zone_config_exec() {
        local hook_zone=${1}
        local hook_config=${2}
        shift 2
 
-       if ! hook_exists ${hook_zone}; then
+       if ! hook_zone_exists ${hook_zone}; then
                error "Hook '${hook_zone}' does not exist."
                return ${EXIT_ERROR}
        fi
 
-       if ! hook_config_exists ${hook_zone} ${hook_config}; then
+       if ! hook_zone_config_exists ${hook_zone} ${hook_config}; then
                error "Config hook '${hook_config}' does not exist."
                return ${EXIT_ERROR}
        fi
 
-       ${SHELL} ${HOOKS_DIR}/${hook_zone}.configs/${hook_config} $@
+       ${SHELL} $(hook_dir zone)/${hook_zone}.configs/${hook_config} $@
 }
 
-function hooks_get_all() {
+function hook_zone_get_all() {
        local type=${1}
 
        local hook
-       for hook in ${HOOKS_DIR}/*; do
+       for hook in $(hook_dir zone)/*; do
                hook=$(basename ${hook})
-               hook_exists ${hook} && echo "${hook}"
+               hook_zone_exists ${hook} && echo "${hook}"
        done | sort
 }
 
-function hook_ports_get_all() {
+function hook_zone_ports_get_all() {
        local hook=${1}
 
-       if ! hook_exists ${hook}; then
+       if ! hook_exists zone ${hook}; then
                error "Hook '${hook}' does not exist."
                return ${EXIT_ERROR}
        fi
 
        local hook
-       for hook in ${HOOKS_DIR}/${zone}.ports/*; do
+       for hook in $(hook_dir zone)/${zone}.ports/*; do
                hook=$(basename ${hook})
                ## XXX executeable?
                echo "${hook}"
        done | sort
 }
-
-function config_get_hook() {
-       local config=${1}
-
-       (
-               . ${config}
-               echo "${HOOK}"
-       )
-}