diff --git a/utils.py b/utils.py index a679677..621839a 100644 --- a/utils.py +++ b/utils.py @@ -728,6 +728,10 @@ method=auto elif isinstance(value, (int, float)): current_config[key] = value elif isinstance(value, list): + # Lets boot any values in a list that are just empty strings + for val in value[:]: + if val == "" : + value.remove(val) current_config[key] = value elif isinstance(value, str): if value.replace('.', '', 1).isdigit(): diff --git a/web/scripts/config.js b/web/scripts/config.js index 583a706..633ad34 100644 --- a/web/scripts/config.js +++ b/web/scripts/config.js @@ -68,12 +68,21 @@ function generateConfigForm(config) { const formData = new FormData(formElement); const formDataObj = {}; - + // Each of these fields contains an array of data. Lets track these so we can ensure the format remains an array for the underlying structure. + const arrayFields = [ + "portlist", + "mac_scan_blacklist", + "ip_scan_blacklist", + "steal_file_names", + "steal_file_extensions", + ]; + formData.forEach((value, key) => { - if (value.includes(',')) { + // Check if the input from the user contains a `,` character or is a known array field + if (value.includes(',') || arrayFields.includes(key)) { formDataObj[key] = value.split(',').map(item => { const trimmedItem = item.trim(); - return isNaN(trimmedItem) ? trimmedItem : parseFloat(trimmedItem); + return isNaN(trimmedItem) || trimmedItem == "" ? trimmedItem : parseFloat(trimmedItem); }); } else { formDataObj[key] = value === 'on' ? true : (isNaN(value) ? value : parseFloat(value));