# #
###############################################################################
-function settings_read() {
+settings_read() {
local file="${1}"
assert isset file
shift
list_append valid_keys "${arg}"
;;
esac
- done <<< "$(args $@)"
+ done <<< "$(args "$@")"
if [ -d "${file}" ]; then
error "Not a configuration file: '${file}'"
# 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})
+ val=$(cli_get_val "${line}")
val=$(settings_strip ${val})
# Assign variable.
done < ${file}
}
-function settings_read_array() {
+settings_read_array() {
local file=${1}
assert isset file
shift
# 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
fi
- val=$(cli_get_val ${line})
+ val=$(cli_get_val "${line}")
val=$(settings_strip ${val})
# Assign variable.
}
# Strip leading and trailing "s.
-function settings_strip() {
+settings_strip() {
local var="$@"
# Do nothing for strings that contain spaces.
unquote "${var}"
}
-function settings_write() {
+settings_write() {
local settings_file="${1}"
assert isset settings_file
shift
;;
esac
shift
- done <<< "$(args $@)"
+ done <<< "$(args "$@")"
# Check if all values to be written are sane
if isset check_func && ! settings_check "${check_func}"; then
return ${EXIT_ERROR}
fi
- log DEBUG "Writing settings file ${settings_file}."
+ if ! make_parent_directory "${settings_file}"; then
+ return ${EXIT_ERROR}
+ fi
- mkdir -p $(dirname ${settings_file}) 2>/dev/null
- > ${settings_file}
+ log DEBUG "Writing settings file '${settings_file}'"
local param
- for param in $(listsort $@); do
- echo "${param}=\"${!param}\"" >> ${settings_file}
- done
+ for param in $(list_sort "$@"); do
+ echo "${param}=\"${!param}\""
+ done > ${settings_file}
}
-function settings_remove() {
+settings_remove() {
local settings_file="${1}"
local abspath="$(readlink -e "${settings_file}")"
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
return ${EXIT_ERROR}
}
-function settings_set() {
+settings_set() {
while [ $# -gt 0 ]; do
case "${1}" in
*=*)
- local key=$(cli_get_key ${1})
- local val=$(cli_get_val ${1})
+ local key=$(cli_get_key "${1}")
+ local val=$(cli_get_val "${1}")
log INFO "Setting configuration option '${key}=${val}'".
done
}
-function network_settings_read() {
+network_settings_read() {
local options="${NETWORK_SETTINGS_FILE_PARAMS}"
# If the DEBUG variable has already been set,
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() {
- settings_read "${FIREWALL_SETTINGS_FILE}" "${FIREWALL_SETTINGS_PARAMS}"
+firewall_settings_read() {
+ settings_read "${FIREWALL_SETTINGS_FILE}" "${FIREWALL_SETTINGS[*]}"
}
-function firewall_settings_write() {
- settings_write "${FIREWALL_SETTINGS_FILE}" "${FIREWALL_SETTINGS_PARAMS}"
+firewall_settings_write() {
+ settings_write "${FIREWALL_SETTINGS_FILE}" "${FIREWALL_SETTINGS[*]}"
}
-function firewall_settings_print() {
- settings_print "${FIREWALL_SETTINGS_PARAMS}"
+firewall_settings_print() {
+ settings_print "${FIREWALL_SETTINGS[*]}"
}