]> git.ipfire.org Git - people/ms/network.git/blobdiff - src/functions/functions.settings
settings: Use file_delete to delete a file
[people/ms/network.git] / src / functions / functions.settings
index 9e78858f0f54ab7039bff9d52ae29742d14b44d7..a7d94640546b5402e677d331638bb78f280c539e 100644 (file)
@@ -19,7 +19,7 @@
 #                                                                             #
 ###############################################################################
 
-function settings_read() {
+settings_read() {
        local file="${1}"
        assert isset file
        shift
@@ -55,13 +55,7 @@ function settings_read() {
 
                                # If valid keys is set, key must be in the list.
                                if [ -n "${valid_keys}" ]; then
-                                       if ! listmatch ${key} ${valid_keys}; then
-                                               if ! enabled ignore_superfluous_settings; then
-                                                       log DEBUG "Ignoring configuration setting: ${key}"
-                                               fi
-
-                                               continue
-                                       fi
+                                       list_match ${key} ${valid_keys} || continue
                                fi
 
                                val=$(cli_get_val ${line})
@@ -77,7 +71,7 @@ function settings_read() {
        done < ${file}
 }
 
-function settings_read_array() {
+settings_read_array() {
        local file=${1}
        assert isset file
        shift
@@ -99,7 +93,7 @@ function settings_read_array() {
 
                                # If valid_keys is set, key must be in the list.
                                if [ -n "${valid_keys}" ]; then
-                                       if ! listmatch ${key} ${valid_keys}; then
+                                       if ! list_match ${key} ${valid_keys}; then
                                                log DEBUG "Ignoring configuration setting: ${key}"
                                                continue
                                        fi
@@ -119,7 +113,7 @@ function settings_read_array() {
 }
 
 # Strip leading and trailing "s.
-function settings_strip() {
+settings_strip() {
        local var="$@"
 
        # Do nothing for strings that contain spaces.
@@ -131,7 +125,7 @@ function settings_strip() {
        unquote "${var}"
 }
 
-function settings_write() {
+settings_write() {
        local settings_file="${1}"
        assert isset settings_file
        shift
@@ -159,18 +153,18 @@ function settings_write() {
                return ${EXIT_ERROR}
        fi
 
-       log DEBUG "Writing settings file ${settings_file}."
+       log DEBUG "Writing settings file '${settings_file}'"
 
        mkdir -p $(dirname ${settings_file}) 2>/dev/null
        > ${settings_file}
 
        local param
-       for param in $(listsort $@); do
+       for param in $(list_sort $@); do
                echo "${param}=\"${!param}\"" >> ${settings_file}
        done
 }
 
-function settings_remove() {
+settings_remove() {
        local settings_file="${1}"
 
        local abspath="$(readlink -e "${settings_file}")"
@@ -179,18 +173,18 @@ function settings_remove() {
                return ${EXIT_ERROR}
        fi
 
-       rm -f "${settings_file}"
+       file_delete "${settings_file}"
 }
 
-function settings_print() {
+settings_print() {
        local param
 
-       for param in $(listsort $@); do
+       for param in $(list_sort $@); do
                printf "%-32s = %s\n" "${param}" "${!param}"
        done
 }
 
-function settings_check() {
+settings_check() {
        local check_func="${1}"
 
        # Execute the check function
@@ -221,7 +215,7 @@ function settings_check() {
        return ${EXIT_ERROR}
 }
 
-function settings_set() {
+settings_set() {
        while [ $# -gt 0 ]; do
                case "${1}" in
                        *=*)
@@ -240,7 +234,7 @@ function settings_set() {
        done
 }
 
-function network_settings_read() {
+network_settings_read() {
        local options="${NETWORK_SETTINGS_FILE_PARAMS}"
 
        # If the DEBUG variable has already been set,
@@ -252,29 +246,63 @@ function network_settings_read() {
        settings_read "${NETWORK_SETTINGS_FILE}" ${options}
 }
 
-function network_settings_write() {
+network_settings_write() {
        settings_write "${NETWORK_SETTINGS_FILE}" ${NETWORK_SETTINGS_FILE_PARAMS}
+}
+
+network_settings_set() {
+       # Process any settings that require immediate actin
+       while [ $# -gt 0 ]; do
+               local arg=${1}
+               shift
+
+               case "${arg}" in
+                       *=*)
+                               local key=$(cli_get_key ${arg})
+                               local val=$(cli_get_val ${arg})
+
+                               case "${key}" in
+                                       DNS_RANDOMIZE|DNS_SEARCH_DOMAIN|DNS_USE_LOCAL_RESOLVER)
+                                               dns_generate_resolvconf
+                                               ;;
+
+                                       WIRELESS_REGULATORY_DOMAIN)
+                                               if ! wireless_valid_reg_domain "${val}"; then
+                                                       warning "Ignoring invalid wireless regulatory domain: ${val}"
+                                                       continue
+                                               fi
+
+                                               if ! wireless_set_reg_domain "${val}"; then
+                                                       error "Error setting wireless regulatory domain: ${val}"
+                                               fi
+                                               ;;
+                               esac
+                               ;;
+               esac
+
+               # Save setting
+               settings_set ${arg}
+       done
 
-       # Update DNS configuration.
-       dns_generate_resolvconf
+       return ${EXIT_OK}
 }
 
-function network_settings_print() {
+network_settings_print() {
        settings_print ${NETWORK_SETTINGS_FILE_PARAMS}
 }
 
-function network_settings_list() {
+network_settings_list() {
        print "${NETWORK_SETTINGS_FILE_PARAMS}"
 }
 
-function firewall_settings_read() {
+firewall_settings_read() {
        settings_read "${FIREWALL_SETTINGS_FILE}" "${FIREWALL_SETTINGS_PARAMS}"
 }
 
-function firewall_settings_write() {
+firewall_settings_write() {
        settings_write "${FIREWALL_SETTINGS_FILE}" "${FIREWALL_SETTINGS_PARAMS}"
 }
 
-function firewall_settings_print() {
+firewall_settings_print() {
        settings_print "${FIREWALL_SETTINGS_PARAMS}"
 }