From 6ea3d144808c21745b8f9a8213ab7ddbc0894536 Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Sun, 7 Jul 2024 23:11:30 +1000 Subject: [PATCH] =?UTF-8?q?=E2=9A=99=20Settings=20rework?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/PLUGINS_DEV.md | 25 +- front/deviceDetails.php | 12 +- front/js/common.js | 14 +- front/js/db_methods.js | 1 + front/js/settings_utils.js | 234 +++++++++++--- front/js/ui_components.js | 20 +- front/multiEditCore.php | 51 +-- front/php/server/util.php | 106 ++++--- front/plugins/__template/config.json | 16 +- front/plugins/_publisher_apprise/config.json | 14 +- front/plugins/_publisher_email/config.json | 24 +- front/plugins/_publisher_email/email_smtp.py | 13 + front/plugins/_publisher_mqtt/config.json | 30 +- front/plugins/_publisher_ntfy/config.json | 16 +- front/plugins/_publisher_pushover/config.json | 12 +- .../plugins/_publisher_pushsafer/config.json | 8 +- front/plugins/_publisher_webhook/config.json | 16 +- front/plugins/arp_scan/config.json | 14 +- front/plugins/csv_backup/config.json | 12 +- front/plugins/db_cleanup/config.json | 10 +- front/plugins/ddns_update/config.json | 20 +- front/plugins/dhcp_leases/config.json | 112 ++++++- front/plugins/dhcp_servers/config.json | 12 +- .../plugins/events_notifications/config.json | 56 ++-- front/plugins/internet_ip/config.json | 16 +- front/plugins/internet_speedtest/config.json | 12 +- front/plugins/known_template/config.json | 50 +-- front/plugins/maintenance/config.json | 10 +- front/plugins/newdev_template/config.json | 58 ++-- front/plugins/nmap_dev_scan/config.json | 14 +- front/plugins/nmap_scan/config.json | 14 +- .../notification_processing/config.json | 8 +- front/plugins/nslookup_scan/config.json | 8 +- front/plugins/omada_sdn_imp/README.md | 6 +- front/plugins/omada_sdn_imp/config.json | 22 +- front/plugins/pholus_scan/config.json | 14 +- front/plugins/pihole_scan/config.json | 12 +- front/plugins/set_password/config.json | 4 +- front/plugins/snmp_discovery/config.json | 14 +- front/plugins/sync/config.json | 20 +- front/plugins/ui_settings/config.json | 4 +- front/plugins/undiscoverables/README.md | 3 + front/plugins/undiscoverables/config.json | 14 +- front/plugins/unifi_import/config.json | 28 +- front/plugins/vendor_update/config.json | 12 +- front/plugins/website_monitor/config.json | 18 +- front/plugins/workflows/config.json | 2 +- front/settings.php | 300 ++++++++---------- server/database.py | 2 + server/helper.py | 126 +++++--- server/initialise.py | 40 +-- server/notification.py | 2 +- server/plugin.py | 29 +- server/reporting.py | 4 + 54 files changed, 1006 insertions(+), 708 deletions(-) diff --git a/docs/PLUGINS_DEV.md b/docs/PLUGINS_DEV.md index ada22149..e0671e52 100755 --- a/docs/PLUGINS_DEV.md +++ b/docs/PLUGINS_DEV.md @@ -191,7 +191,7 @@ This SQL query is executed on the `app.db` SQLite database file. > ```json > { > "function": "CMD", -> "type": "text", +> "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, > "default_value":"SELECT dv.dev_Name as Object_PrimaryID, cast(dv.dev_LastIP as VARCHAR(100)) || ':' || cast( SUBSTR(ns.Port ,0, INSTR(ns.Port , '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, ns.Service as Watched_Value1, ns.State as Watched_Value2, 'null' as Watched_Value3, 'null' as Watched_Value4, ns.Extra as Extra FROM (SELECT * FROM Nmap_Scan) ns LEFT JOIN (SELECT dev_Name, dev_MAC, dev_LastIP FROM Devices) dv ON ns.MAC = dv.dev_MAC", > "options": [], > "localized": ["name", "description"], @@ -222,7 +222,7 @@ For example for `PIHOLE` (`"unique_prefix": "PIHOLE"`) it is `EXTERNAL_PIHOLE.`. > ... >{ > "function": "DB_PATH", -> "type": "readonly", +> "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, > "default_value":"/etc/pihole/pihole-FTL.db", > "options": [], > "localized": ["name", "description"], @@ -247,7 +247,7 @@ The actual SQL query you want to execute is then stored as a `CMD` setting, simi >```json >{ > "function": "CMD", -> "type": "text", +> "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, > "default_value":"SELECT hwaddr as Object_PrimaryID, cast('http://' || (SELECT ip FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1) as VARCHAR(100)) || ':' || cast( SUBSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1), 0, INSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1), '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, macVendor as Watched_Value1, lastQuery as Watched_Value2, (SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1) as Watched_Value3, 'null' as Watched_Value4, '' as Extra, hwaddr as ForeignKey FROM EXTERNAL_PIHOLE.network WHERE hwaddr NOT LIKE 'ip-%' AND hwaddr <> '00:00:00:00:00:00'; ", > "options": [], > "localized": ["name", "description"], @@ -425,7 +425,7 @@ The `params` array in the `config.json` is used to enable the user to change the ```json { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value":"python3 /app/front/plugins/website_monitor/script.py urls={urls}", "options": [], "localized": ["name", "description"], @@ -508,18 +508,7 @@ Required attributes are: | -------- | ----------- | | `"function"` | Specifies the function the setting drives or a simple unique code name. See Supported settings function values for options. | | `"type"` | Specifies the form control used for the setting displayed in the Settings page and what values are accepted. Supported options include: | -| | - `text` | -| | - `integer` | -| | - `boolean` | -| | - `password` | -| | - `readonly` | -| | - `integer.select` | -| | - `text.select` | -| | - `text.multiselect` | -| | - `list` | -| | - `list.select` | -| | - `integer.checkbox` | -| | - `text.template` | +| | - `{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": ["sha256"]}]}` | | `"localized"` | A list of properties on the current JSON level that need to be localized. | | `"name"` | Displayed on the Settings page. An array of localized strings. See Localized strings below. | | `"description"` | Displayed on the Settings page. An array of localized strings. See Localized strings below. | @@ -562,7 +551,7 @@ You can have any `"function": "my_custom_name"` custom name, however, the ones l > ```json > { > "function": "RUN", -> "type": "text.select", +> "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, > "default_value":"disabled", > "options": ["disabled", "once", "schedule", "always_after_scan", "on_new_device"], > "localized": ["name", "description"], @@ -627,7 +616,7 @@ The UI will adjust how columns are displayed in the UI based on the resolvers de ```json "function": "dev_DeviceType", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 30, "default_value": "", "options": ["{value}"], diff --git a/front/deviceDetails.php b/front/deviceDetails.php index ef6143d8..4e261a1a 100755 --- a/front/deviceDetails.php +++ b/front/deviceDetails.php @@ -824,12 +824,12 @@ function initializeCombos () { initializeCombo ( '#dropdownDevices', 'getDevices', 'txtFromDevice', false); // Initiate dropdown - // function initSettingDropdown(settingKey, // Identifier for the setting - // valuesArray, // Array of values to be pre-selected in the dropdown - // targetLocation, // ID of the HTML element where dropdown should be rendered (will be replaced) - // callbackToGenerateEntries, // Callback function to generate entries based on options - // targetField, // Target field or element where selected value should be applied or updated - // nameTransformer) // callback to transform name + // initSettingDropdown(settingKey, // Identifier for the setting + // valuesArray, // Array of values to be pre-selected in the dropdown + // targetLocation, // ID of the HTML element where dropdown should be rendered (will be replaced) + // callbackToGenerateEntries, // Callback function to generate entries based on options + // targetField, // Target field or element where selected value should be applied or updated + // nameTransformer) // callback to transform name initSettingDropdown("NEWDEV_dev_Icon", [], "dropdownIcon_tmp", genListWithInputSet, 'txtIcon', atob ) diff --git a/front/js/common.js b/front/js/common.js index be6f8684..93e40f65 100755 --- a/front/js/common.js +++ b/front/js/common.js @@ -124,8 +124,10 @@ function cacheSettings() settingsData.forEach((set) => { resolvedOptions = createArray(set.Options) + resolvedOptionsOld = resolvedOptions setPlugObj = {}; options_params = []; + resolved = "" // proceed only if first option item contains something to resolve if( !set.Code_Name.includes("__metadata") && @@ -158,7 +160,12 @@ function cacheSettings() } } + console.log(resolved); + console.log(resolvedOptionsOld); + console.log(resolvedOptions); + setCache(`pia_set_${set.Code_Name}`, set.Value) + setCache(`pia_set_opt_${set.Code_Name}`, resolvedOptions) }); }).then(() => handleSuccess('cacheSettings', resolve())).catch(() => handleFailure('cacheSettings', reject("cacheSettings already completed"))); // handle AJAX synchronization @@ -179,6 +186,7 @@ function getSettingOptions (key) { if (result == "") { console.log(`Setting options with key "${key}" not found`) + result = [] } return result; @@ -743,10 +751,14 @@ function isRandomMAC(mac) // --------------------------------------------------------- // Generate an array object from a string representation of an array function createArray(input) { + // Is already array, return + if (Array.isArray(input)) { + return input; + } // Empty array if (input === '[]') { return []; - } + } // Regex pattern for brackets const patternBrackets = /(^\s*\[)|(\]\s*$)/g; diff --git a/front/js/db_methods.js b/front/js/db_methods.js index 98885527..4678629d 100755 --- a/front/js/db_methods.js +++ b/front/js/db_methods.js @@ -6,6 +6,7 @@ // -------------------------------------------------- // Read data and place intotarget location, callback processies the results function readData(sqlQuery, processDataCallback, valuesArray, targetLocation, targetField, nameTransformer) { + var apiUrl = `php/server/dbHelper.php?action=read&rawSql=${encodeURIComponent(sqlQuery)}`; $.get(apiUrl, function(data) { // Process the JSON data using the provided callback function diff --git a/front/js/settings_utils.js b/front/js/settings_utils.js index cfc0f7ff..29fc7f41 100755 --- a/front/js/settings_utils.js +++ b/front/js/settings_utils.js @@ -201,6 +201,13 @@ } } + // ------------------------------------------------------------------- + // Utility function to check if the value is already Base64 + function isBase64(value) { + const base64Regex = /^(?:[A-Za-z0-9+\/]{4})*?(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/; + return base64Regex.test(value); + } + // ------------------------------------------------------------------- // Validation // ------------------------------------------------------------------- @@ -245,35 +252,37 @@ function settingsCollectedCorrectly(settingsArray, settingsJSON_DB) { // ------------------------------------------------------------------- // --------------------------------------------------------- +// Add item to list function addList(element, clearInput = true) { - const fromId = $(element).attr('my-input-from'); - const toId = $(element).attr('my-input-to'); + const toId = $(element).attr('my-input-to'); + const input = $(`#${fromId}`).val(); + + console.log(`fromId | toId | input : ${fromId} | ${toId} | ${input}`); + + const newOption = $("").attr("value", input).text(input); - - input = $(`#${fromId}`).val(); - - console.log(input); - console.log(toId); - console.log($(`#${toId}`)); - - $(`#${toId}`).append($("").attr("value", input).text(input)); + const el = $(`#${toId}`).append(newOption); // clear input if (clearInput) { $(`#${fromId}`).val(""); } + + // Initialize interaction options only for the newly added option + initListInteractionOptions(newOption); settingsChanged(); } + // --------------------------------------------------------- function removeFromList(element) { settingsChanged(); - $(`#${$(element).attr('my-input')}`).find("option:last").remove(); + $(`#${$(element).attr('my-input-to')}`).find("option:last").remove(); } // --------------------------------------------------------- @@ -320,7 +329,7 @@ function removeOptionItem(option) { function removeAllOptions(element) { settingsChanged(); - $(`#${$(element).attr('my-input')}`).empty(); + $(`#${$(element).attr('my-input-to')}`).empty(); } @@ -331,12 +340,14 @@ function removeAllOptions(element) let clickCounter = 0; // Function to initialize list interaction options -function initListInteractionOptions(selectorId) { - // Select all options within the specified selector - const $options = $(`#${selectorId} option`); - - // Add class to make options interactable - $options.addClass('interactable-option'); +function initListInteractionOptions(element) { + if(element) + { + $options = $(element); + } else + { + $options = $(`.interactable-option`); + } // Attach click event listener to options $options.on('click', function() { @@ -350,8 +361,6 @@ function initListInteractionOptions(selectorId) { // Perform action based on click count if (clickCounter === 1) { // Single-click action - // btoa(iconHtml.replace(/"/g, "'") <-- encode - // atob() <--- decode showModalFieldInput( ` ${getString('Gen_Update_Value')}`, getString('settings_update_item_warning'), @@ -371,6 +380,7 @@ function initListInteractionOptions(selectorId) { clickCounter = 0; }, 300); // Adjust delay as needed }); + } @@ -490,39 +500,165 @@ function getParam(targetId, key, skipCache = false) { } - // --------------------------------------------------------- - // generate a list of options for a input select - function generateOptions(pluginsData, set, input, isMultiSelect = false, isValueSource = true) - { - multi = isMultiSelect ? "multiple" : ""; + // --------------------------------------------------------- + // generate a list of options for a input select + function generateOptions(pluginsData, set, input, dataType, isMultiSelect = false, editable = false, transformers = []) { + let multi = isMultiSelect ? "multiple" : ""; + let valuesArray = createArray(set['Value']); + let settingKey = set['Code_Name']; + // editable ? classNames += " interactable-option" : classNames = "" + + // generate different ID depending on if it's the source for the value to be saved or only used as an input + // isValueSource ? id = settingKey : id = settingKey + '_input'; - // optionsArray = getSettingOptions(set['Code_Name'] ) - valuesArray = createArray(set['Value']); - - - // create unique ID - var targetLocation = set['Code_Name'] + "_initSettingDropdown"; - - // execute AJAX callabck + SQL query resolution - initSettingDropdown(set['Code_Name'] , valuesArray, targetLocation, generateDropdownOptions); - - // generate different ID depending on if it's the source for the value to be saved or only used as an input - isValueSource ? id = set['Code_Name'] : id = set['Code_Name'] + '_input'; + // main selection dropdown wrapper + input += ` + + // if available transformers are applied + valuesArray = valuesArray.map(value => applyTransformers(value, transformers)); - + // get all options + optionsArray = createArray(getSettingOptions(settingKey)) + + // loop over all options and select the ones selected in the valuesArray (saved by the user) + if(optionsArray.length > 0 ) + { + // check if needs to be processed ASYNC + if(isSQLQuery(optionsArray[0])) + { + // create temporary placeholder + targetLocation = settingKey + "_temp_" + input += ``; + + // callback to the DB + readData(optionsArray[0], generateDropdownOptions, valuesArray, targetLocation, settingKey); + } else // sync processing + { + optionsArray.forEach(option => { + let selected = valuesArray.includes(option) ? 'selected' : ''; + input += ``; + }); + } + } else // this is an interactable list with default and user-defined values + { + // generates [1x 📝 | 2x 🚮] + valuesArray.forEach(option => { + input += ``; + }); + } - `; - - return input; + input += ``; + + // add values from the setting options - execute AJAX callback + SQL query resolution + // initSettingDropdown(settingKey, valuesArray, targetLocation, generateDropdownOptions); + + return input; + } + +// ------------------------------------------------------------ +// Function to apply transformers to a value +function applyTransformers(val, transformers) { + transformers.forEach(transformer => { + switch (transformer) { + case 'sha256': + // Implement sha256 hashing logic + if (!isSHA256(val)) { + val = CryptoJS.SHA256(val).toString(CryptoJS.enc.Hex); + } + break; + case 'base64': + // Implement base64 logic + if (!isBase64(val)) { + val = btoa(val); + } + break; + default: + console.warn(`Unknown transformer: ${transformer}`); + } + }); + return val; +} + + + +// ------------------------------------------------------------ +// Function to initialize relevant variables based on HTML element +const handleElementOptions = (codeName, elementOptions, transformers, val) => { + let inputType = 'text'; + let readOnly = ""; + let isMultiSelect = false; + let cssClasses = ''; + let placeholder = ''; + let suffix = ''; + let separator = ''; + let editable = false; + let valRes = val; + let sourceIds = []; + let getStringKey = ""; + let onClick = "alert('Not implemented');"; + + elementOptions.forEach(option => { + if (option.prefillValue) { + valRes = option.prefillValue === 'null' ? "" : option.prefillValue; + } + if (option.type) { + inputType = option.type; + } + if (option.readonly === "true") { + readOnly = `readonly`; + } + if (option.multiple === "true") { + isMultiSelect = true; + } + if (option.editable === "true") { + editable = true; + } + if (option.cssClasses) { + cssClasses = option.cssClasses; + } + if (option.placeholder) { + placeholder = option.placeholder; + } + if (option.suffix) { + suffix = option.suffix; + } + if (option.sourceSuffixes) { + $.each(option.sourceSuffixes, function(index, suf) { + sourceIds.push(codeName + suf) + }) + } + if (option.separator) { + separator = option.separator; + } + if (option.getStringKey) { + getStringKey = option.getStringKey; + } + if (option.onClick) { + onClick = option.onClick; + } + }); + + if (transformers.includes('sha256')) { + inputType = 'password'; } + return { + inputType, + readOnly, + isMultiSelect, + cssClasses, + placeholder, + suffix, + sourceIds, + separator, + editable, + valRes, + getStringKey, + onClick + }; +}; + + diff --git a/front/js/ui_components.js b/front/js/ui_components.js index b011777a..eeb43294 100755 --- a/front/js/ui_components.js +++ b/front/js/ui_components.js @@ -79,7 +79,7 @@ function initDeviceSelectors() { // ----------------------------------------------------------------------------- -// Initiate dropdown +// (ASYNC) Initiate dropdown function initSettingDropdown(settingKey, // Identifier for the setting valuesArray, // Array of values to be pre-selected in the dropdown targetLocation, // ID of the HTML element where dropdown should be rendered (will be replaced) @@ -93,9 +93,15 @@ function initSettingDropdown(settingKey, // Identifier for the setting // NOTE {value} options to replace with a setting or SQL value are handled in the cacheSettings() function optionsArray = createArray(getSettingOptions(settingKey)) + // check if the result is a SQL query - if(isSQLQuery(optionsArray[0])) + if(optionsArray.length > 0 && isSQLQuery(optionsArray[0])) { + + if (settingKey == "NEWDEV_dev_Network_Node_MAC_ADDR") { + console.log("isSQLQuery in initSettingDropdown"); + + } readData(optionsArray[0], callbackToGenerateEntries, valuesArray, targetLocation, targetField, nameTransformer); } else // this should be already an array, e.g. from a setting or pre-defined @@ -103,16 +109,18 @@ function initSettingDropdown(settingKey, // Identifier for the setting optionsArray.forEach(option => { let selected = valuesArray.includes(option) ? 'selected' : ''; optionsHtml += ``; - }); - + }); + // Replace the specified placeholder div with the resulting HTML setTimeout(() => { $("#" + targetLocation).replaceWith(optionsHtml); - }, 50); - + }, 50); } + + + } diff --git a/front/multiEditCore.php b/front/multiEditCore.php index e1a7eb8a..aac32609 100755 --- a/front/multiEditCore.php +++ b/front/multiEditCore.php @@ -1,5 +1,5 @@ - +
@@ -102,22 +102,31 @@ // Append form groups to the column for (let j = i * elementsPerColumn; j < Math.min((i + 1) * elementsPerColumn, columns.length); j++) { - let inputType; + const setTypeObject = JSON.parse(columns[j].Type.replace(/'/g, '"')); + // console.log(setTypeObject); + const lastElementObj = setTypeObject.elements[setTypeObject.elements.length - 1] - switch (columns[j].Type) { - case 'integer.checkbox': - case 'checkbox': - inputType = 'checkbox'; - break; - case 'text.select': - inputType = 'text.select'; - break; - default: - inputType = 'text'; - break; - } - - if (inputType === 'text.select') { + const { elementType, elementOptions = [], transformers = [] } = lastElementObj; + const { + inputType, + readOnly, + isMultiSelect, + cssClasses, + placeholder, + suffix, + sourceIds, + separator, + editable, + valRes, + getStringKey, + onClick + } = handleElementOptions('none', elementOptions, transformers, val = ""); + + // console.log(setTypeObject); + // console.log(inputType); + + // render based on element type + if (lastElementObj.elementType === 'select') { targetLocation = columns[j].Code_Name + "_initSettingDropdown" @@ -147,15 +156,11 @@ } - } else { + } else if (lastElementObj.elementType === 'input'){ // Add classes specifically for checkboxes - if (inputType === 'checkbox') { - inputClass = 'checkbox'; - - } else { - inputClass = 'form-control'; - } + inputType === 'checkbox' ? inputClass = 'checkbox' : inputClass = 'form-control'; + input = ` 3 && is_array($settingValue) == true) { + foreach ($settingValue as $val) { + $temp .= "'" . encode_single_quotes($val) . "',"; + } - if ($group == $settingGroup) { - if ($settingType == 'text' || $settingType == 'password' || $settingType == 'password.SHA256' || $settingType == 'readonly' || $settingType == 'text.select') { - $val = encode_single_quotes($settingValue); - $txt .= $settingKey . "='" . $val . "'\n"; - } elseif ($settingType == 'integer' || $settingType == 'integer.select') { - $txt .= $settingKey . "=" . $settingValue . "\n"; - } elseif ($settingType == 'boolean' || $settingType == 'integer.checkbox') { + $temp = substr_replace($temp, "", -1); // remove last comma ',' + } - if ($settingValue === true || $settingValue === 1 || strtolower($settingValue) === 'true') { - $val = "True"; - } else { - $val = "False"; - } - - $txt .= $settingKey . "=" . $val . "\n"; - } elseif ($settingType == 'text.multiselect' || $settingType == 'subnets' || $settingType == 'list' || $settingType == 'list.select' || $settingType == 'list.base64') { - $temp = ''; - - if(is_array($settingValue) == FALSE) - { - $settingValue = json_decode($settingValue); - } - - if (count($setting) > 3 && is_array($settingValue) == true) { - foreach ($settingValue as $val) { - $temp .= "'" . encode_single_quotes($val) . "',"; - } - - $temp = substr_replace($temp, "", -1); // remove last comma ',' - } - - $temp = '['.$temp.']'; // wrap brackets - $txt .= $settingKey . "=" . $temp . "\n"; - } elseif ($settingType == 'json') { - $txt .= $settingKey . "=" . $settingValue . "\n"; - } - } - } + $temp = '['.$temp.']'; // wrap brackets + $txt .= $settingKey . "=" . $temp . "\n"; + // $temp = ''; + // if (is_array($settingValue) == FALSE) { + // $settingValue = json_decode($settingValue); + // } + // if (count($setting) > 3 && is_array($settingValue) == true) { + // foreach ($settingValue as $val) { + // $temp .= "'" . encode_single_quotes($val) . "',"; + // } + // $temp = substr_replace($temp, "", -1); // remove last comma ',' + // } + // $temp = '[' . $temp . ']'; // wrap brackets + // $txt .= $settingKey . "=" . $temp . "\n"; + } else { + $txt .= $settingKey . "='⭕Not handled⭕'\n"; + } + } + } + } diff --git a/front/plugins/__template/config.json b/front/plugins/__template/config.json index 8938a1c4..dd2d1745 100755 --- a/front/plugins/__template/config.json +++ b/front/plugins/__template/config.json @@ -39,7 +39,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ @@ -66,7 +66,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], "localized": ["name", "description"], @@ -85,7 +85,7 @@ }, { "function": "text_example", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -105,7 +105,7 @@ }, { "function": "boolean_example", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -124,7 +124,7 @@ }, { "function": "list_example", - "type": "list", + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}, "default_value": ["existing_entry_1", "existing_entry_2"], "options": [], "localized": ["name", "description"], @@ -143,7 +143,7 @@ }, { "function": "multiselect_example_from_setting", - "type": "text.multiselect", + "type": {"dataType":"array", "element": "select", "elementOptions" : ["multiple"] ,"transformers": []}, "maxLength": 50, "default_value": [], "options": ["{value}"], @@ -170,7 +170,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "element": "input", "elementOptions" : ["readonly"] ,"transformers": []}, "default_value": "python3 /app/front/plugins//rename_me.py", "options": [], "localized": ["name", "description"], @@ -189,7 +189,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], diff --git a/front/plugins/_publisher_apprise/config.json b/front/plugins/_publisher_apprise/config.json index 7ad14747..572e80c4 100755 --- a/front/plugins/_publisher_apprise/config.json +++ b/front/plugins/_publisher_apprise/config.json @@ -288,7 +288,7 @@ { "function": "RUN", "events": ["test"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "on_notification"], "localized": ["name", "description"], @@ -315,7 +315,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/_publisher_apprise/apprise.py", "options": [], "localized": ["name", "description"], @@ -342,7 +342,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], @@ -373,7 +373,7 @@ }, { "function": "HOST", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -400,7 +400,7 @@ }, { "function": "URL", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -427,7 +427,7 @@ }, { "function": "PAYLOAD", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "html", "options": ["html", "text"], "localized": ["name", "description"], @@ -454,7 +454,7 @@ }, { "function": "SIZE", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 1024, "options": [], "localized": ["name", "description"], diff --git a/front/plugins/_publisher_email/config.json b/front/plugins/_publisher_email/config.json index 9e4b97d8..192b5c07 100755 --- a/front/plugins/_publisher_email/config.json +++ b/front/plugins/_publisher_email/config.json @@ -288,7 +288,7 @@ { "function": "RUN", "events": ["test"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "on_notification"], "localized": ["name", "description"], @@ -315,7 +315,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/_publisher_email/email_smtp.py", "options": [], "localized": ["name", "description"], @@ -342,7 +342,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 20, "options": [], "localized": ["name", "description"], @@ -373,7 +373,7 @@ }, { "function": "SERVER", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -400,7 +400,7 @@ }, { "function": "PORT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 587, "options": [], "localized": ["name", "description"], @@ -427,7 +427,7 @@ }, { "function": "SKIP_LOGIN", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -454,7 +454,7 @@ }, { "function": "USER", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -481,7 +481,7 @@ }, { "function": "PASS", - "type": "password", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -508,7 +508,7 @@ }, { "function": "SKIP_TLS", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -535,7 +535,7 @@ }, { "function": "FORCE_SSL", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -562,7 +562,7 @@ }, { "function": "REPORT_TO", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "user@gmail.com", "options": [], "localized": ["name", "description"], @@ -589,7 +589,7 @@ }, { "function": "REPORT_FROM", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "NetAlertX ", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/_publisher_email/email_smtp.py b/front/plugins/_publisher_email/email_smtp.py index a098b59c..11e6e45f 100755 --- a/front/plugins/_publisher_email/email_smtp.py +++ b/front/plugins/_publisher_email/email_smtp.py @@ -56,6 +56,19 @@ def main(): # Retrieve new notifications new_notifications = notifications.getNew() + # mylog('verbose', [f'[{pluginName}] new_notifications: ', new_notifications]) + # mylog('verbose', [f'[{pluginName}] SMTP_SERVER: ', get_setting_value("SMTP_SERVER")]) + # mylog('verbose', [f'[{pluginName}] SMTP_PORT: ', get_setting_value("SMTP_PORT")]) + # mylog('verbose', [f'[{pluginName}] SMTP_SKIP_LOGIN: ', get_setting_value("SMTP_SKIP_LOGIN")]) + # mylog('verbose', [f'[{pluginName}] SMTP_USER: ', get_setting_value("SMTP_USER")]) + # mylog('verbose', [f'[{pluginName}] SMTP_PASS: ', get_setting_value("SMTP_PASS")]) + + # mylog('verbose', [f'[{pluginName}] SMTP_SKIP_TLS: ', get_setting_value("SMTP_SKIP_TLS")]) + # mylog('verbose', [f'[{pluginName}] SMTP_FORCE_SSL: ', get_setting_value("SMTP_FORCE_SSL")]) + # mylog('verbose', [f'[{pluginName}] SMTP_REPORT_TO: ', get_setting_value("SMTP_REPORT_TO")]) + # mylog('verbose', [f'[{pluginName}] SMTP_REPORT_FROM: ', get_setting_value("SMTP_REPORT_FROM")]) + + # Process the new notifications (see the Notifications DB table for structure or check the /api/table_notifications.json endpoint) for notification in new_notifications: diff --git a/front/plugins/_publisher_mqtt/config.json b/front/plugins/_publisher_mqtt/config.json index 3fe65744..bd4ae866 100755 --- a/front/plugins/_publisher_mqtt/config.json +++ b/front/plugins/_publisher_mqtt/config.json @@ -278,7 +278,7 @@ { "function": "RUN", "events": ["test"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -312,7 +312,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/_publisher_mqtt/mqtt.py devices={devices}", "options": [], "localized": ["name", "description"], @@ -339,7 +339,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 2 * * 3", "options": [], "localized": ["name", "description"], @@ -374,7 +374,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 20, "options": [], "localized": ["name", "description"], @@ -405,7 +405,7 @@ }, { "function": "BROKER", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -432,7 +432,7 @@ }, { "function": "PORT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 1883, "options": [], "localized": ["name", "description"], @@ -459,7 +459,7 @@ }, { "function": "USER", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -486,7 +486,7 @@ }, { "function": "PASSWORD", - "type": "password", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -513,7 +513,7 @@ }, { "function": "SEND_STATS", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": true, "options": [], "localized": ["name", "description"], @@ -532,7 +532,7 @@ }, { "function": "DEVICE_ID", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "netalertx", "options": [], "localized": ["name", "description"], @@ -551,7 +551,7 @@ }, { "function": "DEVICE_NAME", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "NetAlertX", "options": [], "localized": ["name", "description"], @@ -570,7 +570,7 @@ }, { "function": "SEND_DEVICES", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": true, "options": [], "localized": ["name", "description"], @@ -589,7 +589,7 @@ }, { "function": "QOS", - "type": "integer.select", + "type": {"dataType":"integer", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": 0, "options": [0, 1, 2], "localized": ["name", "description"], @@ -616,7 +616,7 @@ }, { "function": "VERSION", - "type": "integer.select", + "type": {"dataType":"integer", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": 1, "options": [1, 2], "localized": ["name", "description"], @@ -635,7 +635,7 @@ }, { "function": "DELAY_SEC", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 2, "options": [2, 3, 4, 5], "localized": ["name", "description"], diff --git a/front/plugins/_publisher_ntfy/config.json b/front/plugins/_publisher_ntfy/config.json index 8c3e53f2..667d095c 100755 --- a/front/plugins/_publisher_ntfy/config.json +++ b/front/plugins/_publisher_ntfy/config.json @@ -242,7 +242,7 @@ { "function": "RUN", "events": ["test"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "on_notification"], "localized": ["name", "description"], @@ -269,7 +269,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/_publisher_ntfy/ntfy.py", "options": [], "localized": ["name", "description"], @@ -296,7 +296,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], @@ -327,7 +327,7 @@ }, { "function": "HOST", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "https://ntfy.sh", "options": [], "localized": ["name", "description"], @@ -354,7 +354,7 @@ }, { "function": "TOPIC", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -381,7 +381,7 @@ }, { "function": "USER", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -408,7 +408,7 @@ }, { "function": "PASSWORD", - "type": "password", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -435,7 +435,7 @@ }, { "function": "PRIORITY", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "urgent", "options": ["urgent", "high", "default", "low", "min"], "localized": ["name", "description"], diff --git a/front/plugins/_publisher_pushover/config.json b/front/plugins/_publisher_pushover/config.json index 7e47e8d0..e9b1ed95 100755 --- a/front/plugins/_publisher_pushover/config.json +++ b/front/plugins/_publisher_pushover/config.json @@ -242,7 +242,7 @@ { "function": "RUN", "events": ["test"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "on_notification"], "localized": ["name", "description"], @@ -269,7 +269,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/_publisher_pushover/pushover.py", "options": [], "localized": ["name", "description"], @@ -296,7 +296,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], @@ -323,7 +323,7 @@ }, { "function": "USER_KEY", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "USER_KEY", "options": [], "localized": ["name", "description"], @@ -342,7 +342,7 @@ }, { "function": "APP_TOKEN", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "APP_TOKEN", "options": [], "localized": ["name", "description"], @@ -361,7 +361,7 @@ }, { "function": "DEVICE_NAME", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "DEVICE_NAME", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/_publisher_pushsafer/config.json b/front/plugins/_publisher_pushsafer/config.json index be390332..1774ea57 100755 --- a/front/plugins/_publisher_pushsafer/config.json +++ b/front/plugins/_publisher_pushsafer/config.json @@ -242,7 +242,7 @@ { "function": "RUN", "events": ["test"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "on_notification"], "localized": ["name", "description"], @@ -269,7 +269,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/_publisher_pushsafer/pushsafer.py", "options": [], "localized": ["name", "description"], @@ -296,7 +296,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], @@ -327,7 +327,7 @@ }, { "function": "TOKEN", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "ApiKey", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/_publisher_webhook/config.json b/front/plugins/_publisher_webhook/config.json index 9dfe6aaf..fface170 100755 --- a/front/plugins/_publisher_webhook/config.json +++ b/front/plugins/_publisher_webhook/config.json @@ -242,7 +242,7 @@ { "function": "RUN", "events": ["test"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "on_notification"], "localized": ["name", "description"], @@ -269,7 +269,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/_publisher_webhook/webhook.py", "options": [], "localized": ["name", "description"], @@ -296,7 +296,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], @@ -327,7 +327,7 @@ }, { "function": "URL", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -354,7 +354,7 @@ }, { "function": "PAYLOAD", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "json", "options": ["json", "html", "text"], "localized": ["name", "description"], @@ -381,7 +381,7 @@ }, { "function": "REQUEST_METHOD", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "GET", "options": ["GET", "POST", "PUT"], "localized": ["name", "description"], @@ -408,7 +408,7 @@ }, { "function": "SIZE", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 1024, "options": [], "localized": ["name", "description"], @@ -435,7 +435,7 @@ }, { "function": "SECRET", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/arp_scan/config.json b/front/plugins/arp_scan/config.json index 14f47a8c..5c2da327 100755 --- a/front/plugins/arp_scan/config.json +++ b/front/plugins/arp_scan/config.json @@ -69,7 +69,7 @@ "settings": [ { "function": "RUN", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -111,7 +111,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/arp_scan/script.py userSubnets={subnets}", "options": [], "localized": ["name", "description"], @@ -146,7 +146,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 300, "options": [], "localized": ["name", "description"], @@ -181,7 +181,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], "localized": ["name", "description"], @@ -216,7 +216,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1", "Watched_Value2"], "options": [ "Watched_Value1", @@ -256,7 +256,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new"], "options": [ "new", @@ -296,7 +296,7 @@ }, { "function": "ARGS", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "sudo arp-scan --ignoredups --retry=6", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/csv_backup/config.json b/front/plugins/csv_backup/config.json index 99968bbe..322238e1 100755 --- a/front/plugins/csv_backup/config.json +++ b/front/plugins/csv_backup/config.json @@ -58,7 +58,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "schedule", "options": [ "disabled", @@ -99,7 +99,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/csv_backup/script.py overwrite={overwrite} location={location}", "options": [], "localized": ["name", "description"], @@ -134,7 +134,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 2 * * 3", "options": [], "localized": ["name", "description"], @@ -169,7 +169,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -204,7 +204,7 @@ }, { "function": "overwrite", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -239,7 +239,7 @@ }, { "function": "location", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "/app/config", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/db_cleanup/config.json b/front/plugins/db_cleanup/config.json index 6e047139..179dd903 100755 --- a/front/plugins/db_cleanup/config.json +++ b/front/plugins/db_cleanup/config.json @@ -47,7 +47,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "schedule", "options": ["disabled", "once", "schedule", "always_after_scan"], "localized": ["name", "description"], @@ -74,7 +74,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/db_cleanup/script.py pluginskeephistory={pluginskeephistory} hourstokeepnewdevice={hourstokeepnewdevice} daystokeepevents={daystokeepevents} pholuskeepdays={pholuskeepdays}", "options": [], "localized": ["name", "description"], @@ -109,7 +109,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/30 * * * *", "options": [], "localized": ["name", "description"], @@ -144,7 +144,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -179,7 +179,7 @@ }, { "function": "NOTIFI_HIST", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 100, "options": [], "localized": ["name", "description"], diff --git a/front/plugins/ddns_update/config.json b/front/plugins/ddns_update/config.json index 1420b636..eeb5678f 100755 --- a/front/plugins/ddns_update/config.json +++ b/front/plugins/ddns_update/config.json @@ -76,7 +76,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "once", "schedule", "always_after_scan"], "localized": ["name", "description"], @@ -107,7 +107,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/ddns_update/script.py prev_ip={prev_ip} DDNS_UPDATE_URL={DDNS_UPDATE_URL} DDNS_USER={DDNS_USER} DDNS_PASSWORD={DDNS_PASSWORD} DDNS_DOMAIN={DDNS_DOMAIN} ", "options": [], "localized": ["name", "description"], @@ -142,7 +142,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], "localized": ["name", "description"], @@ -177,7 +177,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -212,7 +212,7 @@ }, { "function": "DOMAIN", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "your_domain.freeddns.org", "options": [], "localized": ["name", "description"], @@ -247,7 +247,7 @@ }, { "function": "USER", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "dynu_user", "options": [], "localized": ["name", "description"], @@ -282,7 +282,7 @@ }, { "function": "PASSWORD", - "type": "password", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]}, "default_value": "A0000000B0000000C0000000D0000000", "options": [], "localized": ["name", "description"], @@ -317,7 +317,7 @@ }, { "function": "UPDATE_URL", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "https://api.dynu.com/nic/update?", "options": [], "localized": ["name", "description"], @@ -352,7 +352,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1"], "options": [ "Watched_Value1", @@ -388,7 +388,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new", "watched-changed"], "options": [ "new", diff --git a/front/plugins/dhcp_leases/config.json b/front/plugins/dhcp_leases/config.json index 9dd217db..37b197d6 100755 --- a/front/plugins/dhcp_leases/config.json +++ b/front/plugins/dhcp_leases/config.json @@ -414,7 +414,12 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": { + "dataType": "string", + "elements": [ + { "elementType": "select", "elementOptions": [], "transformers": [] } + ] + }, "default_value": "disabled", "options": [ "disabled", @@ -455,7 +460,12 @@ }, { "function": "CMD", - "type": "text", + "type": { + "dataType": "string", + "elements": [ + { "elementType": "input", "elementOptions": [], "transformers": [] } + ] + }, "default_value": "python3 /app/front/plugins/dhcp_leases/script.py paths={paths}", "options": [], "localized": ["name", "description"], @@ -490,7 +500,63 @@ }, { "function": "paths_to_check", - "type": "list", + "type": { + "dataType": "array", + "elements": [ + { + "elementType": "input", + "elementOptions": [ + { "placeholder": "Enter value" }, + { "suffix": "_in" }, + { "cssClasses": "col-sm-10" }, + { "prefillValue": "null" } + ], + "transformers": [] + }, + { + "elementType": "button", + "elementOptions": [ + { "sourceSuffixes": [] }, + { "separator": "" }, + { "cssClasses": "col-sm-3" }, + { "onClick": "removeAllOptions(this)" }, + { "getStringKey": "Gen_Remove_All" } + ], + "transformers": [] + }, + { + "elementType": "button", + "elementOptions": [ + { "sourceSuffixes": [] }, + { "separator": "" }, + { "cssClasses": "col-sm-3" }, + { "onClick": "removeFromList(this)" }, + { "getStringKey": "Gen_Remove_Last" } + ], + "transformers": [] + }, + { + "elementType": "button", + "elementOptions": [ + { "sourceSuffixes": ["_in"] }, + { "separator": "" }, + { "cssClasses": "col-sm-2" }, + { "onClick": "addList(this, false)" }, + { "getStringKey": "Gen_Add" } + ], + "transformers": [] + }, + { + "elementType": "select", + "elementOptions": [ + { "multiple": "true" }, + { "readonly": "true" }, + { "editable": "true" } + ], + "transformers": [] + } + ] + }, "default_value": ["/mnt/dhcp1.leases", "/mnt/dhcp2.leases"], "options": [], "localized": ["name", "description"], @@ -525,7 +591,12 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": { + "dataType": "string", + "elements": [ + { "elementType": "input", "elementOptions": [], "transformers": [] } + ] + }, "default_value": "0 2 * * *", "options": [], "localized": ["name", "description"], @@ -560,7 +631,16 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": { + "dataType": "integer", + "elements": [ + { + "elementType": "input", + "elementOptions": [{ "type": "number" }], + "transformers": [] + } + ] + }, "default_value": 5, "options": [], "localized": ["name", "description"], @@ -595,7 +675,16 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": { + "dataType": "array", + "elements": [ + { + "elementType": "select", + "elementOptions": [{ "multiple": "true" }], + "transformers": [] + } + ] + }, "default_value": ["Watched_Value1", "Watched_Value4"], "options": [ "Watched_Value1", @@ -635,7 +724,16 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": { + "dataType": "array", + "elements": [ + { + "elementType": "select", + "elementOptions": [{ "multiple": "true" }], + "transformers": [] + } + ] + }, "default_value": ["new", "watched-changed"], "options": [ "new", diff --git a/front/plugins/dhcp_servers/config.json b/front/plugins/dhcp_servers/config.json index 1c3f2d5d..5870825d 100755 --- a/front/plugins/dhcp_servers/config.json +++ b/front/plugins/dhcp_servers/config.json @@ -307,7 +307,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -340,7 +340,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/dhcp_servers/script.py", "options": [], "localized": ["name", "description"], @@ -367,7 +367,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 2 * * *", "options": [], "localized": ["name", "description"], @@ -394,7 +394,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], @@ -425,7 +425,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1"], "options": [ "Watched_Value1", @@ -457,7 +457,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new", "watched-changed"], "options": ["new", "watched-changed", "watched-not-changed"], "localized": ["name", "description"], diff --git a/front/plugins/events_notifications/config.json b/front/plugins/events_notifications/config.json index d7bb43bf..4caf5114 100755 --- a/front/plugins/events_notifications/config.json +++ b/front/plugins/events_notifications/config.json @@ -153,7 +153,7 @@ "string": "Device ID Parameter" } ], - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "1", "localized": ["name"] }, @@ -164,7 +164,7 @@ "string": "Event Type Parameter" } ], - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "device_down", "localized": ["name"] }, @@ -175,7 +175,7 @@ "string": "Repetition Count Parameter" } ], - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 3, "localized": ["name"] } @@ -216,7 +216,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "UPDATE Devices SET dev_AlertDeviceDown = {KNWN_dev_AlertDeviceDown}, dev_AlertEvents = {KNWN_dev_AlertEvents} WHERE dev_MAC in ({target_macs})", "options": [], "localized": ["name", "description"], @@ -235,7 +235,7 @@ }, { "function": "dev_Name", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "(unknown)", "options": [], @@ -255,7 +255,7 @@ }, { "function": "dev_Owner", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 30, "default_value": "House", "override_value": { @@ -278,7 +278,7 @@ }, { "function": "dev_DeviceType", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 30, "default_value": "", "options": [], @@ -298,7 +298,7 @@ }, { "function": "dev_Vendor", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 250, "default_value": "", "options": [], @@ -318,7 +318,7 @@ }, { "function": "dev_Favorite", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "override_value": { "override": false @@ -340,7 +340,7 @@ }, { "function": "dev_Group", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 10, "default_value": "", "override_value": { @@ -363,7 +363,7 @@ }, { "function": "dev_Comments", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -382,7 +382,7 @@ }, { "function": "dev_FirstConnection", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -402,7 +402,7 @@ }, { "function": "dev_LastConnection", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -422,7 +422,7 @@ }, { "function": "dev_LastIP", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -442,7 +442,7 @@ }, { "function": "dev_StaticIP", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "override_value": { "override": true @@ -464,7 +464,7 @@ }, { "function": "dev_ScanCycle", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "override_value": { "override": true @@ -486,7 +486,7 @@ }, { "function": "dev_LogEvents", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "override_value": { "override": false @@ -508,7 +508,7 @@ }, { "function": "dev_AlertEvents", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "override_value": { "override": true @@ -530,7 +530,7 @@ }, { "function": "dev_AlertDeviceDown", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -549,7 +549,7 @@ }, { "function": "dev_SkipRepeated", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -568,7 +568,7 @@ }, { "function": "dev_LastNotification", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -588,7 +588,7 @@ }, { "function": "dev_PresentLastScan", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "options": [], "localized": ["name", "description"], @@ -607,7 +607,7 @@ }, { "function": "dev_NewDevice", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": true, "options": [], "localized": ["name", "description"], @@ -626,7 +626,7 @@ }, { "function": "dev_Location", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 250, "default_value": "", "options": [], @@ -646,7 +646,7 @@ }, { "function": "dev_Archived", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -665,7 +665,7 @@ }, { "function": "dev_Network_Node_MAC_ADDR", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -684,7 +684,7 @@ }, { "function": "dev_Network_Node_port", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -703,7 +703,7 @@ }, { "function": "dev_Icon", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/internet_ip/config.json b/front/plugins/internet_ip/config.json index f3315a8f..79ed91f1 100755 --- a/front/plugins/internet_ip/config.json +++ b/front/plugins/internet_ip/config.json @@ -63,7 +63,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "once", "schedule", "always_after_scan"], "localized": ["name", "description"], @@ -94,7 +94,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/internet_ip/script.py prev_ip={prev_ip} INTRNT_DIG_GET_IP_ARG={INTRNT_DIG_GET_IP_ARG}", "options": [], "localized": ["name", "description"], @@ -129,7 +129,7 @@ }, { "function": "DIG_GET_IP_ARG", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "-4 myip.opendns.com @resolver1.opendns.com", "options": [], "localized": ["name", "description"], @@ -164,7 +164,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], "localized": ["name", "description"], @@ -199,7 +199,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -234,7 +234,7 @@ }, { "function": "RETRIES", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 3, "options": [], "localized": ["name", "description"], @@ -253,7 +253,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1"], "options": [ "Watched_Value1", @@ -289,7 +289,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new", "watched-changed"], "options": [ "new", diff --git a/front/plugins/internet_speedtest/config.json b/front/plugins/internet_speedtest/config.json index 33cebed8..9c0fcd17 100755 --- a/front/plugins/internet_speedtest/config.json +++ b/front/plugins/internet_speedtest/config.json @@ -377,7 +377,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "once", "schedule", "always_after_scan"], "localized": ["name", "description"], @@ -408,7 +408,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/internet_speedtest/script.py", "options": [], "localized": ["name", "description"], @@ -443,7 +443,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/30 * * * *", "options": [], "localized": ["name", "description"], @@ -478,7 +478,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 60, "options": [], "localized": ["name", "description"], @@ -513,7 +513,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": [], "options": [ "Watched_Value1", @@ -549,7 +549,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": [], "options": [ "new", diff --git a/front/plugins/known_template/config.json b/front/plugins/known_template/config.json index be4380a6..32c3f3b1 100755 --- a/front/plugins/known_template/config.json +++ b/front/plugins/known_template/config.json @@ -159,7 +159,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "UPDATE Devices SET dev_AlertDeviceDown = {KNWN_dev_AlertDeviceDown}, dev_AlertEvents = {KNWN_dev_AlertEvents} WHERE dev_MAC in ({target_macs})", "options": [], "localized": ["name", "description"], @@ -178,7 +178,7 @@ }, { "function": "dev_Name", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "(unknown)", "options": [], @@ -198,7 +198,7 @@ }, { "function": "dev_Owner", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 30, "default_value": "House", "override_value": { @@ -221,7 +221,7 @@ }, { "function": "dev_DeviceType", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 30, "default_value": "", "options": [], @@ -241,7 +241,7 @@ }, { "function": "dev_Vendor", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 250, "default_value": "", "options": [], @@ -261,7 +261,7 @@ }, { "function": "dev_Favorite", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "override_value": { "override": false @@ -283,7 +283,7 @@ }, { "function": "dev_Group", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 10, "default_value": "", "override_value": { @@ -306,7 +306,7 @@ }, { "function": "dev_Comments", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -325,7 +325,7 @@ }, { "function": "dev_FirstConnection", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -345,7 +345,7 @@ }, { "function": "dev_LastConnection", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -365,7 +365,7 @@ }, { "function": "dev_LastIP", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -385,7 +385,7 @@ }, { "function": "dev_StaticIP", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "override_value": { "override": true @@ -407,7 +407,7 @@ }, { "function": "dev_ScanCycle", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "override_value": { "override": true @@ -429,7 +429,7 @@ }, { "function": "dev_LogEvents", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "override_value": { "override": false @@ -451,7 +451,7 @@ }, { "function": "dev_AlertEvents", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "override_value": { "override": true @@ -473,7 +473,7 @@ }, { "function": "dev_AlertDeviceDown", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -492,7 +492,7 @@ }, { "function": "dev_SkipRepeated", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -511,7 +511,7 @@ }, { "function": "dev_LastNotification", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -531,7 +531,7 @@ }, { "function": "dev_PresentLastScan", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "options": [], "localized": ["name", "description"], @@ -550,7 +550,7 @@ }, { "function": "dev_NewDevice", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": true, "options": [], "localized": ["name", "description"], @@ -569,7 +569,7 @@ }, { "function": "dev_Location", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 250, "default_value": "", "options": [], @@ -589,7 +589,7 @@ }, { "function": "dev_Archived", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -608,7 +608,7 @@ }, { "function": "dev_Network_Node_MAC_ADDR", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -627,7 +627,7 @@ }, { "function": "dev_Network_Node_port", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -646,7 +646,7 @@ }, { "function": "dev_Icon", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/maintenance/config.json b/front/plugins/maintenance/config.json index 2bbbf5d2..280eb554 100755 --- a/front/plugins/maintenance/config.json +++ b/front/plugins/maintenance/config.json @@ -29,7 +29,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "schedule", "options": [ "disabled", @@ -62,7 +62,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/maintenance/maintenance.py", "options": [], "localized": ["name", "description"], @@ -97,7 +97,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 2 * * *", "options": [], "localized": ["name", "description"], @@ -132,7 +132,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -167,7 +167,7 @@ }, { "function": "LOG_LENGTH", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 250000, "options": [], "localized": ["name", "description"], diff --git a/front/plugins/newdev_template/config.json b/front/plugins/newdev_template/config.json index 69f23a0c..d9573841 100755 --- a/front/plugins/newdev_template/config.json +++ b/front/plugins/newdev_template/config.json @@ -28,7 +28,7 @@ "settings": [ { "function": "ignored_MACs", - "type": "list", + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}, "default_value": [], "options": [], "localized": ["name", "description"], @@ -47,7 +47,7 @@ }, { "function": "ignored_IPs", - "type": "list", + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}, "default_value": [], "options": [], "localized": ["name", "description"], @@ -66,7 +66,7 @@ }, { "function": "dev_MAC", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -86,7 +86,7 @@ }, { "function": "dev_Name", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "(unknown)", "options": [], @@ -106,7 +106,7 @@ }, { "function": "dev_Owner", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 30, "default_value": "", "options": ["{value}"], @@ -133,7 +133,7 @@ }, { "function": "dev_DeviceType", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 30, "default_value": "", "options": ["{value}"], @@ -165,7 +165,7 @@ }, { "function": "dev_Vendor", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 250, "default_value": "", "options": [], @@ -185,7 +185,7 @@ }, { "function": "dev_Favorite", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -204,7 +204,7 @@ }, { "function": "dev_Group", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 10, "default_value": "", "options": ["{value}"], @@ -231,7 +231,7 @@ }, { "function": "dev_Comments", - "type": "string", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -250,7 +250,7 @@ }, { "function": "dev_FirstConnection", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -270,7 +270,7 @@ }, { "function": "dev_LastConnection", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -290,7 +290,7 @@ }, { "function": "dev_LastIP", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -310,7 +310,7 @@ }, { "function": "dev_StaticIP", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -329,7 +329,7 @@ }, { "function": "dev_ScanCycle", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "options": [], "localized": ["name", "description"], @@ -348,7 +348,7 @@ }, { "function": "dev_LogEvents", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "options": [], "localized": ["name", "description"], @@ -367,7 +367,7 @@ }, { "function": "dev_AlertEvents", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "options": [], "localized": ["name", "description"], @@ -386,7 +386,7 @@ }, { "function": "dev_AlertDeviceDown", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -405,7 +405,7 @@ }, { "function": "dev_SkipRepeated", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": 0, "options": ["{value}"], "options_params": [ @@ -431,7 +431,7 @@ }, { "function": "dev_LastNotification", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "format": "date-time", "default_value": "", "options": [], @@ -451,7 +451,7 @@ }, { "function": "dev_PresentLastScan", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "options": [], "localized": ["name", "description"], @@ -470,7 +470,7 @@ }, { "function": "dev_NewDevice", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 1, "options": [], "localized": ["name", "description"], @@ -489,7 +489,7 @@ }, { "function": "dev_Location", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 250, "default_value": "", "options": ["{value}"], @@ -516,7 +516,7 @@ }, { "function": "dev_Archived", - "type": "integer.checkbox", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -535,7 +535,7 @@ }, { "function": "dev_Network_Node_MAC_ADDR", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": ["{value}"], "options_params": [ @@ -566,7 +566,7 @@ }, { "function": "dev_Network_Node_port", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -585,7 +585,7 @@ }, { "function": "dev_Icon", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": ["{value}"], "options_params": [ @@ -611,7 +611,7 @@ }, { "function": "LESS_NAME_CLEANUP", - "type": "integer.checkbox", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": 0, "options": [], "localized": ["name", "description"], @@ -630,7 +630,7 @@ }, { "function": "NAME_CLEANUP_REGEX", - "type": "list.base64", + "type": {"dataType":"string", "elements": [{"elementType" : "textarea", "elementOptions" : [] ,"transformers": ["base64"]}]}, "default_value": ["XC5fYWlycGxheQ==", "XC5fdGNw", "XC5sb2NhbGRvbWFpbg==", "XC5sb2NhbA==", "XC5fZXNwaG9tZWxpYg==", "XC5fZ29vZ2xlY2FzdA==", "XC5sYW4=", "XC5ob21l", "LVthLWZBLUYwLTldezMyfQ==", "Iy4q" ], "options": [], "localized": ["name", "description"], diff --git a/front/plugins/nmap_dev_scan/config.json b/front/plugins/nmap_dev_scan/config.json index e1b9ae32..2dab080b 100755 --- a/front/plugins/nmap_dev_scan/config.json +++ b/front/plugins/nmap_dev_scan/config.json @@ -45,7 +45,7 @@ "settings": [ { "function": "RUN", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -87,7 +87,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/nmap_dev_scan/nmap_dev.py ", "options": [], "localized": ["name", "description"], @@ -122,7 +122,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 300, "options": [], "localized": ["name", "description"], @@ -157,7 +157,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], "localized": ["name", "description"], @@ -192,7 +192,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": [], "options": [ "Watched_Value1", @@ -232,7 +232,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new"], "options": [ "new", @@ -272,7 +272,7 @@ }, { "function": "ARGS", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "sudo nmap -sn -PR -oX - ", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/nmap_scan/config.json b/front/plugins/nmap_scan/config.json index e2b4ffce..08b9090a 100755 --- a/front/plugins/nmap_scan/config.json +++ b/front/plugins/nmap_scan/config.json @@ -354,7 +354,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -387,7 +387,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/nmap_scan/script.py ips={ips} macs={macs} timeout={timeout} args={args}", "options": [], "localized": ["name", "description"], @@ -414,7 +414,7 @@ }, { "function": "ARGS", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "-p -10000", "options": [], "localized": ["name", "description"], @@ -441,7 +441,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 2 * * *", "options": [], "localized": ["name", "description"], @@ -468,7 +468,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -495,7 +495,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1"], "options": [ "Watched_Value1", @@ -527,7 +527,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new", "watched-changed"], "options": ["new", "watched-changed", "watched-not-changed"], "localized": ["name", "description"], diff --git a/front/plugins/notification_processing/config.json b/front/plugins/notification_processing/config.json index 0154ff63..f5a8cff5 100755 --- a/front/plugins/notification_processing/config.json +++ b/front/plugins/notification_processing/config.json @@ -29,7 +29,7 @@ "settings": [ { "function": "INCLUDED_SECTIONS", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new_devices", "down_devices", "events"], "options": [ "new_devices", @@ -70,7 +70,7 @@ }, { "function": "alert_down_time", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 5, "options": [], "localized": ["name", "description"], @@ -89,7 +89,7 @@ }, { "function": "new_dev_condition", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], @@ -108,7 +108,7 @@ }, { "function": "event_condition", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/nslookup_scan/config.json b/front/plugins/nslookup_scan/config.json index 4715add5..1c5625e1 100755 --- a/front/plugins/nslookup_scan/config.json +++ b/front/plugins/nslookup_scan/config.json @@ -36,7 +36,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -70,7 +70,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/nslookup_scan/nslookup.py", "options": [], "localized": ["name", "description"], @@ -105,7 +105,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/30 * * * *", "options": [], "localized": ["name", "description"], @@ -140,7 +140,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], diff --git a/front/plugins/omada_sdn_imp/README.md b/front/plugins/omada_sdn_imp/README.md index c73241c3..1ebe573e 100755 --- a/front/plugins/omada_sdn_imp/README.md +++ b/front/plugins/omada_sdn_imp/README.md @@ -1,6 +1,6 @@ ## Overview -PLugin functionality overview and links to external resources if relevant. Include use cases if available. +Plugin functionality overview and links to external resources if relevant. Include use cases if available. > [!TIP] > Some tip. @@ -20,4 +20,6 @@ To set up the plugin correctly, make sure... ### Notes -- Additional notes, limitations, Author info. \ No newline at end of file +- Additional notes, limitations, Author info. + +Made with ❤ by [@FlyingToto](https://github.com/FlyingToto) 🙏 \ No newline at end of file diff --git a/front/plugins/omada_sdn_imp/config.json b/front/plugins/omada_sdn_imp/config.json index 6ec693f2..dd122d8e 100755 --- a/front/plugins/omada_sdn_imp/config.json +++ b/front/plugins/omada_sdn_imp/config.json @@ -39,7 +39,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ @@ -72,7 +72,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], @@ -100,7 +100,7 @@ }, { "function": "url", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -120,7 +120,7 @@ }, { "function": "sites", - "type": "list", + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}, "default_value": [], "options": [], "localized": ["name", "description"], @@ -139,7 +139,7 @@ }, { "function": "username", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -159,7 +159,7 @@ }, { "function": "password", - "type": "password", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -179,7 +179,7 @@ }, { "function": "force_overwrite", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -198,7 +198,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/omada_sdn_imp/omada_sdn.py", "options": [], "localized": ["name", "description"], @@ -233,7 +233,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -292,7 +292,7 @@ "Watched_Value3", "Watched_Value4" ], - "type": "text.multiselect" + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]} }, { "default_value": ["new", "watched-changed"], @@ -316,7 +316,7 @@ "watched-not-changed", "missing-in-last-scan" ], - "type": "text.multiselect" + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]} } ], "database_column_definitions": [ diff --git a/front/plugins/pholus_scan/config.json b/front/plugins/pholus_scan/config.json index 996cd823..b983d3c5 100755 --- a/front/plugins/pholus_scan/config.json +++ b/front/plugins/pholus_scan/config.json @@ -62,7 +62,7 @@ "settings": [ { "function": "RUN", - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -96,7 +96,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/pholus_scan/script.py userSubnets={subnets} timeoutSec={timeout}", "options": [], "localized": ["name", "description"], @@ -123,7 +123,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 300, "options": [], "localized": ["name", "description"], @@ -150,7 +150,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "30 3 * * *", "options": [], "localized": ["name", "description"], @@ -177,7 +177,7 @@ }, { "function": "DAYS_DATA", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], @@ -204,7 +204,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1", "Watched_Value2"], "options": [ "Watched_Value1", @@ -236,7 +236,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new"], "options": [ "new", diff --git a/front/plugins/pihole_scan/config.json b/front/plugins/pihole_scan/config.json index 211a3710..10f1cef0 100755 --- a/front/plugins/pihole_scan/config.json +++ b/front/plugins/pihole_scan/config.json @@ -60,7 +60,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -93,7 +93,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "SELECT n.hwaddr AS Object_PrimaryID, {s-quote}null{s-quote} AS Object_SecondaryID, datetime() AS DateTime, na.ip AS Watched_Value1, n.lastQuery AS Watched_Value2, na.name AS Watched_Value3, n.macVendor AS Watched_Value4, {s-quote}null{s-quote} AS Extra, n.hwaddr AS ForeignKey FROM EXTERNAL_PIHOLE.Network AS n LEFT JOIN EXTERNAL_PIHOLE.Network_Addresses AS na ON na.network_id = n.id WHERE n.hwaddr NOT LIKE {s-quote}ip-%{s-quote} AND n.hwaddr is not {s-quote}00:00:00:00:00:00{s-quote} AND na.ip is not null", "options": [], "localized": ["name", "description"], @@ -120,7 +120,7 @@ }, { "function": "DB_PATH", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "/etc/pihole/pihole-FTL.db", "options": [], "localized": ["name", "description"], @@ -147,7 +147,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/30 * * * *", "options": [], "localized": ["name", "description"], @@ -174,7 +174,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1", "Watched_Value2"], "options": [ "Watched_Value1", @@ -206,7 +206,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new"], "options": [ "new", diff --git a/front/plugins/set_password/config.json b/front/plugins/set_password/config.json index 210a187c..f31266dc 100755 --- a/front/plugins/set_password/config.json +++ b/front/plugins/set_password/config.json @@ -47,7 +47,7 @@ "settings": [ { "function": "enable_password", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -66,7 +66,7 @@ }, { "function": "password", - "type": "password.SHA256", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": ["sha256"]}]}, "maxLength": 50, "default_value": "123456", "options": [], diff --git a/front/plugins/snmp_discovery/config.json b/front/plugins/snmp_discovery/config.json index 650eb4fa..3e698ae5 100755 --- a/front/plugins/snmp_discovery/config.json +++ b/front/plugins/snmp_discovery/config.json @@ -339,7 +339,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -372,7 +372,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/snmp_discovery/script.py routers={s-quote}{routers}{s-quote}", "options": [], "localized": ["name", "description"], @@ -399,7 +399,7 @@ }, { "function": "routers", - "type": "list", + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}, "default_value": [ "snmpwalk -v 2c -c public -OXsq 192.168.1.1 .1.3.6.1.2.1.3.1.1.2" ], @@ -428,7 +428,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 2 * * *", "options": [], "localized": ["name", "description"], @@ -455,7 +455,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 5, "options": [], "localized": ["name", "description"], @@ -486,7 +486,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1"], "options": [ "Watched_Value1", @@ -518,7 +518,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new", "watched-changed"], "options": [ "new", diff --git a/front/plugins/sync/config.json b/front/plugins/sync/config.json index a873141a..603cfa54 100755 --- a/front/plugins/sync/config.json +++ b/front/plugins/sync/config.json @@ -39,7 +39,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ @@ -74,7 +74,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], @@ -102,7 +102,7 @@ }, { "function": "api_token", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -122,7 +122,7 @@ }, { "function": "encryption_key", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -142,7 +142,7 @@ }, { "function": "hub_url", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 50, "default_value": "", @@ -163,7 +163,7 @@ }, { "function": "node_name", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "maxLength": 50, "default_value": "", "options": [], @@ -183,7 +183,7 @@ }, { "function": "devices", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], @@ -202,7 +202,7 @@ }, { "function": "plugins", - "type": "list.select", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": [], "options": ["{value}"], @@ -229,7 +229,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/sync/sync.py", "options": [], "localized": ["name", "description"], @@ -264,7 +264,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 30, "options": [], "localized": ["name", "description"], diff --git a/front/plugins/ui_settings/config.json b/front/plugins/ui_settings/config.json index f97f5079..1b3d60de 100755 --- a/front/plugins/ui_settings/config.json +++ b/front/plugins/ui_settings/config.json @@ -28,7 +28,7 @@ "settings": [ { "function": "shown_cards", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "maxLength": 50, "default_value": [ "my_devices", @@ -64,7 +64,7 @@ }, { "function": "hide_empty", - "type": "boolean", + "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]}, "default_value": false, "options": [], "localized": ["name", "description"], diff --git a/front/plugins/undiscoverables/README.md b/front/plugins/undiscoverables/README.md index 6d00d808..6dcef70a 100755 --- a/front/plugins/undiscoverables/README.md +++ b/front/plugins/undiscoverables/README.md @@ -25,3 +25,6 @@ Allowing Un-Discoverable devices like hubs, switches or APs to be added to the n ### Known Limitations - Un-Discoverable Devices always show as offline. That is expected as they can not be discovered by NetAlertX. - All IPs are set to 0.0.0.0 therefore the "Random MAC" icon might show up. + +Made with ❤ by [@Data-Monkey](https://github.com/Data-Monkey) 🙏 + diff --git a/front/plugins/undiscoverables/config.json b/front/plugins/undiscoverables/config.json index 7f480dae..8babb797 100755 --- a/front/plugins/undiscoverables/config.json +++ b/front/plugins/undiscoverables/config.json @@ -60,7 +60,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": ["disabled", "once", "schedule", "always_after_scan"], "localized": ["name", "description"], @@ -95,7 +95,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/undiscoverables/script.py devices={devices}", "options": [], "localized": ["name", "description"], @@ -130,7 +130,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 10, "options": [], "localized": ["name", "description"], @@ -165,7 +165,7 @@ }, { "function": "WATCH", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": [], "options": [], "localized": ["name", "description"], @@ -200,7 +200,7 @@ }, { "function": "REPORT_ON", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": [], "options": [ "new", @@ -240,7 +240,7 @@ }, { "function": "devices_to_import", - "type": "list", + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}, "default_value": ["dummy_router"], "options": [], "localized": ["name", "description"], @@ -275,7 +275,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "*/5 * * * *", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/unifi_import/config.json b/front/plugins/unifi_import/config.json index b06660b6..459d36ef 100755 --- a/front/plugins/unifi_import/config.json +++ b/front/plugins/unifi_import/config.json @@ -483,7 +483,7 @@ "always_after_scan", "on_new_device" ], - "type": "text.select" + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]} }, { "default_value": "python3 /app/front/plugins/unifi_import/script.py username={username} password={password} host={host} sites={sites} port={port} verifyssl={verifyssl} version={version} fullimport={fullimport}", @@ -518,7 +518,7 @@ } ], "options": [], - "type": "text" + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]} }, { "default_value": "", @@ -545,7 +545,7 @@ } ], "options": [], - "type": "text" + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]} }, { "default_value": "", @@ -572,7 +572,7 @@ } ], "options": [], - "type": "password" + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]} }, { "default_value": "192.168.1.1", @@ -599,7 +599,7 @@ } ], "options": [], - "type": "text" + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]} }, { "default_value": "8443", @@ -626,7 +626,7 @@ } ], "options": [], - "type": "text" + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]} }, { "default_value": "false", @@ -653,11 +653,11 @@ } ], "options": ["true", "false"], - "type": "text.select" + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]} }, { "function": "version", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "v4", "options": [], "localized": ["name", "description"], @@ -707,7 +707,7 @@ } ], "options": [], - "type": "list" + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]} }, { "default_value": "0 2 * * *", @@ -734,7 +734,7 @@ } ], "options": [], - "type": "text" + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]} }, { "default_value": 5, @@ -769,7 +769,7 @@ } ], "options": [], - "type": "integer" + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]} }, { "default_value": ["Watched_Value1", "Watched_Value4"], @@ -801,7 +801,7 @@ "Watched_Value3", "Watched_Value4" ], - "type": "text.multiselect" + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]} }, { "default_value": ["new", "watched-changed"], @@ -833,7 +833,7 @@ "watched-not-changed", "missing-in-last-scan" ], - "type": "text.multiselect" + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]} }, { "default_value": "disabled", @@ -868,7 +868,7 @@ } ], "options": ["disabled", "once", "always"], - "type": "text.select" + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]} } ] } diff --git a/front/plugins/vendor_update/config.json b/front/plugins/vendor_update/config.json index bd298640..1b86086b 100755 --- a/front/plugins/vendor_update/config.json +++ b/front/plugins/vendor_update/config.json @@ -41,7 +41,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "schedule", "options": ["disabled", "once", "schedule", "always_after_scan"], "localized": ["name", "description"], @@ -72,7 +72,7 @@ }, { "function": "CMD", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/vendor_update/script.py", "options": [], "localized": ["name", "description"], @@ -107,7 +107,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 4 * * 3", "options": [], "localized": ["name", "description"], @@ -142,7 +142,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 600, "options": [], "localized": ["name", "description"], @@ -177,7 +177,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1"], "options": [ "Watched_Value1", @@ -213,7 +213,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new", "watched-changed"], "options": [ "new", diff --git a/front/plugins/website_monitor/config.json b/front/plugins/website_monitor/config.json index fe8b9266..6c5e25af 100755 --- a/front/plugins/website_monitor/config.json +++ b/front/plugins/website_monitor/config.json @@ -344,7 +344,7 @@ { "function": "RUN", "events": ["run"], - "type": "text.select", + "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}, "default_value": "disabled", "options": [ "disabled", @@ -377,7 +377,7 @@ }, { "function": "CMD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "python3 /app/front/plugins/website_monitor/script.py urls={urls}", "options": [], "localized": ["name", "description"], @@ -404,7 +404,7 @@ }, { "function": "RUN_SCHD", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "0 2 * * *", "options": [], "localized": ["name", "description"], @@ -431,7 +431,7 @@ }, { "function": "API_SQL", - "type": "text", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}, "default_value": "SELECT * FROM plugin_website_monitor", "options": [], "localized": ["name", "description"], @@ -458,7 +458,7 @@ }, { "function": "RUN_TIMEOUT", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 5, "options": [], "localized": ["name", "description"], @@ -489,7 +489,7 @@ }, { "function": "WATCH", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["Watched_Value1"], "options": [ "Watched_Value1", @@ -521,7 +521,7 @@ }, { "function": "REPORT_ON", - "type": "text.multiselect", + "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}, "default_value": ["new", "watched-changed"], "options": [ "new", @@ -553,7 +553,7 @@ }, { "function": "urls_to_check", - "type": "list", + "type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}, "default_value": ["https://google.com", "https://duck.com"], "options": [], "localized": ["name", "description"], @@ -580,7 +580,7 @@ }, { "function": "SQL_internet_ip", - "type": "readonly", + "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}, "default_value": "SELECT dev_LastIP FROM Devices WHERE dev_MAC = 'Internet'", "options": [], "localized": ["name", "description"], diff --git a/front/plugins/workflows/config.json b/front/plugins/workflows/config.json index 0a795394..8188dea6 100755 --- a/front/plugins/workflows/config.json +++ b/front/plugins/workflows/config.json @@ -30,7 +30,7 @@ "settings": [ { "function": "AppEvents_hist", - "type": "integer", + "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}, "default_value": 5000, "options": [], "localized": ["name", "description"], diff --git a/front/settings.php b/front/settings.php index a77dbead..bfae0bff 100755 --- a/front/settings.php +++ b/front/settings.php @@ -374,9 +374,9 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX // go thru all settings and collect settings per settings prefix settingsData.forEach((set) => { - let val = set['Value']; + const val = set['Value']; const codeName = set['Code_Name']; - const setType = set['Type'].toLowerCase(); + const setType = set['Type']; const isMetadata = codeName.includes('__metadata'); // is this isn't a metadata entry, get corresponding metadata object from the dummy setting const setObj = isMetadata ? {} : JSON.parse(getSetting(`${codeName}__metadata`)); @@ -414,7 +414,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
${getString(codeName + '_description', set['Description'])}
-
+
`; // OVERRIDE @@ -452,142 +452,87 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
${getString("Setting_Override")}
-
`; +
`; } - // INPUT - // pre-processing done, render setting based on type - - let inputHtml = ""; - if (setType.startsWith('text') || setType.startsWith('string') || setType.startsWith('date-time') ) { - // --- process text --- - if(setType.includes(".select")) - { - inputHtml = generateOptions(pluginsData, set, inputHtml, isMultiSelect = false) - - } else if(setType.includes(".multiselect")) - { - inputHtml = generateOptions(pluginsData, set, inputHtml, isMultiSelect = true) - } else{ - - // if it's overridable set readonly accordingly - if(overridable) - { - override ? readonly = "" : readonly = " readonly" ; - } - - inputHtml = ``; - } - } else if (setType === 'integer') { - // --- process integer --- - inputHtml = ``; - } else if (setType.startsWith('password')) { - // --- process password --- - inputHtml = ``; - } else if (setType === 'readonly') { - // --- process readonly --- - inputHtml = ``; - } else if (setType === 'boolean' || setType === 'integer.checkbox') { - // --- process boolean --- - let checked = val === 'True' || val === '1' ? 'checked' : ''; - - // if it's overridable set readonly accordingly - if(overridable) - { - override ? disabled = "" : disabled = " disabled" ; - } - - inputHtml = ``; - } else if (setType === 'integer.select') { - - inputHtml = generateOptions(pluginsData, set, inputHtml) - } else if (setType === 'subnets') { - // --- process subnets --- - inputHtml = ` -
-
- -
-
- -
-
- -
-
-
- -
-
- - -
`; - } else if (setType.startsWith('list')) { - // --- process list --- + case 'input': + let checked = val === 'True' || val === '1' ? 'checked' : ''; + inputType === 'checkbox' ? inputClass = 'checkbox' : inputClass = 'form-control'; - inputHtml += ` -
-
` + inputHtml += ` + `; + break; - if(setType.includes(".select")) // not tested - { - inputHtml += generateOptions(pluginsData, set, inputHtml, isMultiSelect = false, isValueSource = false) + case 'button': + + inputHtml += ` + `; + break; + case 'textarea': + inputHtml += ` + `; + break; + + default: + console.warn(`Unknown element type: ${elementType}`); } - else if(setType.includes(".multiselect")) - { - inputHtml += generateOptions(pluginsData, set, inputHtml, isMultiSelect = true) - } - else - { - inputHtml += ` - - `; - } - - inputHtml += `
-
- -
-
-
-
' + - `
- - -
`; - } else if (setType === 'json') { - // --- process json --- - inputHtml = ``; - } + }); // EVENTS // process events (e.g. run ascan, or test a notification) if associated with the setting @@ -617,21 +562,14 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX ` // generate settings in the correct prefix (group) section - $(`#${prefix} .panel-body`).append(setHtml); - - // init remove and edit listitem click gestures - if(['subnets'].includes(setType) || setType.startsWith('list')) - { - initListInteractionOptions(codeName) - } - + $(`#${prefix} .panel-body`).append(setHtml); } }); } // init finished - + initListInteractionOptions() // init remove and edit listitem click gestures setupSmoothScrolling() hideSpinner() @@ -666,49 +604,78 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX var settingsArray = []; // collect values for each of the different input form controls - const noConversion = ['text', 'integer', 'string', 'password', 'readonly', 'text.select', 'integer.select', 'text.multiselect']; - // get settings to determine setting type to store values appropriately $.get('api/table_settings.json?nocache=' + Date.now(), function(res) { // loop through the settings definitions from the json res["data"].forEach(set => { - prefix = set["Group"] - setType = set["Type"] + prefix = set["Group"] + setType = set["Type"] setCodeName = set["Code_Name"] - if (noConversion.includes(setType)) { + const setTypeObject = JSON.parse(setType.replace(/'/g, '"')); + // console.log(setTypeObject); - settingsArray.push([prefix, setCodeName, setType, $('#'+setCodeName).val()]); + const lastElementObj = setTypeObject.elements[setTypeObject.elements.length - 1]; + const { elementType, elementOptions = [], transformers = [] } = lastElementObj; + const { + inputType, + readOnly, + isMultiSelect, + cssClasses, + placeholder, + suffix, + sourceIds, + separator, + editable, + valRes, + getStringKey, + onClick + } = handleElementOptions('none', elementOptions, transformers, val = ""); - } else if (setType === 'boolean' || setType === 'integer.checkbox') { + let value; + + if (setTypeObject.dataType === "string" || + (setTypeObject.dataType === "integer" && (inputType === "number" || inputType === "text"))) { - const temp = $(`#${setCodeName}`).is(':checked') ? 1 : 0; - settingsArray.push([prefix, setCodeName, setType, temp]); - - } else if (setType.startsWith('list') || setType === 'subnets') { + value = $('#' + setCodeName).val(); + value = applyTransformers(value, transformers); + settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]); + + } else if (inputType === 'checkbox') { + value = $(`#${setCodeName}`).is(':checked') ? 1 : 0; + value = applyTransformers(value, transformers); + settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]); + + } else if (setTypeObject.dataType === "array" ) { + + // make sure to collect all if set as "editable" or selected only otherwise + $(`#${setCodeName}`).attr("my-editable") == "true" ? additionalSelector = "" : additionalSelector = ":selected" + const temps = []; - $(`#${setCodeName} option`).each(function (i, selected) { - const vl = $(selected).val(); + $(`#${setCodeName} option${additionalSelector}`).each(function() { + const vl = $(this).val(); if (vl !== '') { temps.push(vl); } - }); + }); + + value = JSON.stringify(temps); + value = applyTransformers(value, transformers); + settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]); + + } else if (setTypeObject.dataType === "json") { - settingsArray.push([prefix, setCodeName, setType, JSON.stringify(temps)]); - } else if (setType === 'json') { - const temps = $('#'+setCodeName).val(); - settingsArray.push([prefix, setCodeName, setType, temps]); - } else if (setType === 'password.SHA256') { - // save value as SHA256 if value isn't SHA256 already - var temps = $('#'+setCodeName).val(); - - if(temps != "" && !isSHA256(temps)) - { - temps = CryptoJS.SHA256(temps).toString(CryptoJS.enc.Hex); - } - settingsArray.push([prefix, setCodeName, setType, temps]); + value = $('#' + setCodeName).val(); + value = applyTransformers(value, transformers); + value = JSON.stringify(value, null, 2) + settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]); + + } else { + value = $('#' + setCodeName).val(); + value = applyTransformers(value, transformers); + settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]); } }); @@ -716,8 +683,9 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX if(settingsCollectedCorrectly(settingsArray, settingsJSON_DB)) { - // console.log(settingsArray); - + console.log(settingsArray); + console.log( JSON.stringify(settingsArray)); + // return; // trigger a save settings event in the backend $.ajax({ method: "POST", @@ -734,7 +702,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX window.onbeforeunload = null; // Reloads the current page - setTimeout("clearCache()", 5000); + // setTimeout("clearCache()", 5000); } else{ // something went wrong // write_notification(data, 'interrupt') diff --git a/server/database.py b/server/database.py index c6fed953..345db587 100755 --- a/server/database.py +++ b/server/database.py @@ -2,6 +2,7 @@ import sqlite3 import base64 +import json # Register NetAlertX modules from const import fullDbPath, sql_devices_stats, sql_devices_all, sql_generateGuid @@ -556,6 +557,7 @@ class DB(): result["data"].append(tmp) # mylog('debug',[ '[Database] - get_table_as_json - returning ', len(rows), " rows with columns: ", columnNames]) + # mylog('debug',[ '[Database] - get_table_as_json - returning json ', json.dumps(result) ]) return json_obj(result, columnNames) #------------------------------------------------------------------------------- diff --git a/server/helper.py b/server/helper.py index ebfb17f3..368ecaab 100755 --- a/server/helper.py +++ b/server/helper.py @@ -312,59 +312,100 @@ def get_setting_value(key): #------------------------------------------------------------------------------- # Convert the setting value to the corresponding python type -def setting_value_to_python_type(set_type, set_value): +import json +import base64 +import hashlib +import json +import base64 +import hashlib + +def setting_value_to_python_type(set_type, set_value): value = '----not processed----' - # Handle different types of settings - if set_type in ['text', 'string', 'password', 'password.SHA256', 'readonly', 'text.select']: + # "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]} + + + setTypJSN = json.loads(str(set_type).replace('"','\"').replace("'",'"')) + + # Handle different types of settings based on set_type dictionary + dataType = setTypJSN.get('dataType', '') + elements = setTypJSN.get('elements', []) + + # Ensure there's at least one element in the elements list + if not elements: + mylog('none', [f'[HELPER] No elements provided in set_type: {set_type} ']) + return value + + # Use the last element in the list + last_element = elements[len(elements)-1] + elementType = last_element.get('elementType', '') + elementOptions = last_element.get('elementOptions', []) + transformers = last_element.get('transformers', []) + + # Apply transformers to the value + for transformer in transformers: + if transformer == 'base64': + if isinstance(set_value, str): + set_value = base64.b64decode(set_value).decode('utf-8') + elif transformer == 'sha256': + if isinstance(set_value, str): + set_value = hashlib.sha256(set_value.encode()).hexdigest() + + # Convert value based on dataType and elementType + if dataType == 'string' and elementType in ['input', 'select']: value = str(set_value) - elif set_type in ['boolean', 'integer.checkbox']: - - value = False - if isinstance(set_value, str) and set_value.lower() in ['true', '1']: - value = True - elif isinstance(set_value, int) and set_value == 1: - value = True + elif dataType == 'integer' and elementType == 'input': + # handle storing/retrieving boolean values as 1/0 + if set_value.lower() not in ['true', 'false'] and isinstance(set_value, str): + value = int(set_value) elif isinstance(set_value, bool): - value = set_value - - elif set_type in ['integer.select', 'integer']: - value = int(set_value) - # belwo covers 'text.multiselect', 'list', 'subnets', 'list.select', 'list' - elif set_type in ['subnets', 'text.multiselect' ] or 'list' in set_type: + value = 1 if set_value else 0 + elif isinstance(set_value, str): + value = 1 if set_value.lower() == 'true' else 0 + else: + value = int(set_value) - mylog('debug', [f'[SETTINGS] Handling set_type: "{set_type}", set_value: "{set_value}"']) + elif dataType == 'boolean' and elementType == 'input': + value = set_value.lower() in ['true', '1'] - # Handle string + elif dataType == 'array' and elementType == 'select': if isinstance(set_value, str): - value = json.loads(set_value.replace("'", "\"")) - - # Assuming set_value is a list at this point - if isinstance(set_value, list): - if 'base64' in set_type: - tmp_value = [] - for item in set_value: - tmp_value.append(base64.b64decode(item)) - - set_value = tmp_value - + try: + value = json.loads(set_value.replace("'", "\"")) + except json.JSONDecodeError as e: + print(f"Error decoding JSON array: {e}") + value = [] + elif isinstance(set_value, list): value = set_value - elif set_type == '.template': - # Assuming set_value is a JSON object in this case - value = json.loads(set_value) - - # log debug info if not processed + elif dataType == 'object' and elementType == 'input': + if isinstance(set_value, str): + try: + value = json.loads(set_value) + except json.JSONDecodeError as e: + print(f"Error decoding JSON object: {e}") + value = {} + elif isinstance(set_value, dict): + value = set_value + + elif dataType == 'string' and elementType == 'input' and any(opt.get('readonly') == "true" for opt in elementOptions): + value = str(set_value) + + elif dataType == 'string' and elementType == 'input' and any(opt.get('type') == "password" for opt in elementOptions) and 'sha256' in transformers: + value = hashlib.sha256(set_value.encode()).hexdigest() + + if value == '----not processed----': - mylog('none', [f'[SETTINGS] ⚠ ERROR - set_type not handled:{set_type}']) - mylog('none', [f'[SETTINGS] ⚠ ERROR - setting json:{json.dumps(set_value)}']) - value = '' + mylog('none', [f'[HELPER] ⚠ ERROR not processed set_type: {set_type} ']) + mylog('none', [f'[HELPER] ⚠ ERROR not processed set_value: {set_value} ']) return value + + #------------------------------------------------------------------------------- # Generate a WHERE condition for SQLite based on a list of values. def list_to_where(logical_operator, column_name, condition_operator, values_list): @@ -601,6 +642,10 @@ import dns.resolver def cleanDeviceName(str, match_IP): + # add matching info + if match_IP: + str = str + " (IP match)" + if get_setting_value('NEWDEV_LESS_NAME_CLEANUP'): mylog('debug', ["[Name cleanup] Using new cleanDeviceName(" + str + ")"]) @@ -628,9 +673,7 @@ def cleanDeviceName(str, match_IP): if str.endswith('.'): str = str[:-1] - # add matching info - if match_IP: - str = str + " (IP match)" + # done mylog('debug', ["[Name cleanup] cleanDeviceName = " + str]) @@ -656,9 +699,6 @@ def cleanDeviceName(str, match_IP): if str.endswith('.'): str = str[:-1] - if match_IP: - str = str + " (IP match)" - mylog('debug', ["cleanDeviceName = " + str]) return str diff --git a/server/initialise.py b/server/initialise.py index ecb4238c..a6ce25aa 100755 --- a/server/initialise.py +++ b/server/initialise.py @@ -48,7 +48,7 @@ def ccd(key, default, config_dir, name, inputtype, options, group, events=None, result = result.replace('\'', "{s-quote}") # Create the tuples - sql_safe_tuple = (key, name, desc, inputtype, options, regex, str(result), group, str(events)) + sql_safe_tuple = (key, name, desc, str(inputtype), options, regex, str(result), group, str(events)) settings_tuple = (key, name, desc, inputtype, options, regex, result, group, str(events)) # Update or append the tuples in the lists @@ -57,7 +57,7 @@ def ccd(key, default, config_dir, name, inputtype, options, group, events=None, # Save metadata in dummy setting if not a metadata key if '__metadata' not in key: - metadata_tuple = (f'{key}__metadata', "metadata name", "metadata desc", 'json', "", "", json.dumps(setJsonMetadata), group, '[]') + metadata_tuple = (f'{key}__metadata', "metadata name", "metadata desc", '{"dataType":"json", "elements": [{"elementType" : "textarea", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}', '[]', "", json.dumps(setJsonMetadata), group, '[]') conf.mySettingsSQLsafe = update_or_append(conf.mySettingsSQLsafe, metadata_tuple, f'{key}__metadata') conf.mySettings = update_or_append(conf.mySettings, metadata_tuple, f'{key}__metadata') @@ -131,25 +131,25 @@ def importConfigs (db, all_plugins): # ---------------------------------------- # ccd(key, default, config_dir, name, inputtype, options, group, events=[], desc = "", regex = "", setJsonMetadata = {}, overrideTemplate = {}) - conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', [] , c_d, 'Loaded plugins', 'list.select', '', 'General') - conf.SCAN_SUBNETS = ccd('SCAN_SUBNETS', ['192.168.1.0/24 --interface=eth1', '192.168.1.0/24 --interface=eth0'] , c_d, 'Subnets to scan', 'subnets', '', 'General') - conf.LOG_LEVEL = ccd('LOG_LEVEL', 'verbose' , c_d, 'Log verboseness', 'text.select', "['none', 'minimal', 'verbose', 'debug']", 'General') - conf.TIMEZONE = ccd('TIMEZONE', 'Europe/Berlin' , c_d, 'Time zone', 'text', '', 'General') - conf.PLUGINS_KEEP_HIST = ccd('PLUGINS_KEEP_HIST', 250 , c_d, 'Keep history entries', 'integer', '', 'General') - conf.REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://netalertx/' , c_d, 'NetAlertX URL', 'text', '', 'General') - conf.DAYS_TO_KEEP_EVENTS = ccd('DAYS_TO_KEEP_EVENTS', 90 , c_d, 'Delete events days', 'integer', '', 'General') - conf.HRS_TO_KEEP_NEWDEV = ccd('HRS_TO_KEEP_NEWDEV', 0 , c_d, 'Keep new devices for', 'integer', "0", 'General') - conf.API_CUSTOM_SQL = ccd('API_CUSTOM_SQL', 'SELECT * FROM Devices WHERE dev_PresentLastScan = 0' , c_d, 'Custom endpoint', 'text', '', 'General') - conf.NETWORK_DEVICE_TYPES = ccd('NETWORK_DEVICE_TYPES', ['AP', 'Gateway', 'Firewall', 'Hypervisor', 'Powerline', 'Switch', 'WLAN', 'PLC', 'Router','USB LAN Adapter', 'USB WIFI Adapter', 'Internet'] , c_d, 'Network device types', 'list', '', 'General') + conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', [] , c_d, 'Loaded plugins', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', '[]', 'General') + conf.SCAN_SUBNETS = ccd('SCAN_SUBNETS', ['192.168.1.0/24 --interface=eth1', '192.168.1.0/24 --interface=eth0'] , c_d, 'Subnets to scan', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "192.168.1.0/24 --interface=eth1" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', '[]', 'General') + conf.LOG_LEVEL = ccd('LOG_LEVEL', 'verbose' , c_d, 'Log verboseness', '{"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}', "['none', 'minimal', 'verbose', 'debug']", 'General') + conf.TIMEZONE = ccd('TIMEZONE', 'Europe/Berlin' , c_d, 'Time zone', '{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}', '[]', 'General') + conf.PLUGINS_KEEP_HIST = ccd('PLUGINS_KEEP_HIST', 250 , c_d, 'Keep history entries', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', '[]', 'General') + conf.REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://netalertx/' , c_d, 'NetAlertX URL', '{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}', '[]', 'General') + conf.DAYS_TO_KEEP_EVENTS = ccd('DAYS_TO_KEEP_EVENTS', 90 , c_d, 'Delete events days', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', '[]', 'General') + conf.HRS_TO_KEEP_NEWDEV = ccd('HRS_TO_KEEP_NEWDEV', 0 , c_d, 'Keep new devices for', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', "[]", 'General') + conf.API_CUSTOM_SQL = ccd('API_CUSTOM_SQL', 'SELECT * FROM Devices WHERE dev_PresentLastScan = 0' , c_d, 'Custom endpoint', '{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}', '[]', 'General') + conf.NETWORK_DEVICE_TYPES = ccd('NETWORK_DEVICE_TYPES', ['AP', 'Gateway', 'Firewall', 'Hypervisor', 'Powerline', 'Switch', 'WLAN', 'PLC', 'Router','USB LAN Adapter', 'USB WIFI Adapter', 'Internet'] , c_d, 'Network device types', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', '[]', 'General') # UI - conf.UI_LANG = ccd('UI_LANG', 'English' , c_d, 'Language Interface', 'text.select', "['English', 'French', 'German', 'Norwegian', 'Russian', 'Spanish', 'Italian (it_it)', 'Portuguese (pt_br)', 'Polish (pl_pl)', 'Turkish (tr_tr)', 'Chinese (zh_cn)' ]", 'UI') - conf.UI_NOT_RANDOM_MAC = ccd('UI_NOT_RANDOM_MAC', [] , c_d, 'Exlude from Random Prefix', 'list', "", 'UI') - conf.UI_ICONS = ccd('UI_ICONS', ['PGkgY2xhc3M9ImZhIGZhLWNvbXB1dGVyIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWV0aGVybmV0Ij48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWdhbWVwYWQiPjwvaT4', 'PGkgY2xhc3M9ImZhIGZhLWdsb2JlIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWxhcHRvcCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLWxpZ2h0YnVsYiI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXNoaWVsZCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXdpZmkiPjwvaT4'] , c_d, 'Icons', 'list', "", 'UI') - conf.UI_REFRESH = ccd('UI_REFRESH', 0 , c_d, 'Refresh interval', 'integer', "", 'UI') - conf.UI_DEV_SECTIONS = ccd('UI_DEV_SECTIONS', [] , c_d, 'Show sections', 'text.multiselect', "['Tile Cards', 'Device Presence']", 'UI') - conf.UI_PRESENCE = ccd('UI_PRESENCE', ['online', 'offline', 'archived'] , c_d, 'Include in presence', 'text.multiselect', "['online', 'offline', 'archived']", 'UI') - conf.UI_MY_DEVICES = ccd('UI_MY_DEVICES', ['online', 'offline', 'archived', 'new', 'down'] , c_d, 'Include in My Devices', 'text.multiselect', "['online', 'offline', 'archived', 'new', 'down']", 'UI') + conf.UI_LANG = ccd('UI_LANG', 'English' , c_d, 'Language Interface', '{"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}', "['English', 'French', 'German', 'Norwegian', 'Russian', 'Spanish', 'Italian (it_it)', 'Portuguese (pt_br)', 'Polish (pl_pl)', 'Turkish (tr_tr)', 'Chinese (zh_cn)' ]", 'UI') + conf.UI_NOT_RANDOM_MAC = ccd('UI_NOT_RANDOM_MAC', [] , c_d, 'Exlude from Random Prefix', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', "[]", 'UI') + conf.UI_ICONS = ccd('UI_ICONS', ['PGkgY2xhc3M9ImZhIGZhLWNvbXB1dGVyIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWV0aGVybmV0Ij48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWdhbWVwYWQiPjwvaT4', 'PGkgY2xhc3M9ImZhIGZhLWdsb2JlIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWxhcHRvcCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLWxpZ2h0YnVsYiI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXNoaWVsZCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXdpZmkiPjwvaT4'] , c_d, 'Icons', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', "[]", 'UI') + conf.UI_REFRESH = ccd('UI_REFRESH', 0 , c_d, 'Refresh interval', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', "[]", 'UI') + conf.UI_DEV_SECTIONS = ccd('UI_DEV_SECTIONS', [] , c_d, 'Show sections', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', "['Tile Cards', 'Device Presence']", 'UI') + conf.UI_PRESENCE = ccd('UI_PRESENCE', ['online', 'offline', 'archived'] , c_d, 'Include in presence', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', "['online', 'offline', 'archived']", 'UI') + conf.UI_MY_DEVICES = ccd('UI_MY_DEVICES', ['online', 'offline', 'archived', 'new', 'down'] , c_d, 'Include in My Devices', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', "['online', 'offline', 'archived', 'new', 'down']", 'UI') # Init timezone in case it changed conf.tz = timezone(conf.TIMEZONE) @@ -288,7 +288,7 @@ def importConfigs (db, all_plugins): # save the newly discovered plugins as options and default values - conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', loaded_plugins_prefixes , c_d, 'Loaded plugins', 'text.multiselect', str(sorted(all_plugins_prefixes)), 'General') + conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', loaded_plugins_prefixes , c_d, 'Loaded plugins', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', str(sorted(all_plugins_prefixes)), 'General') mylog('none', ['[Config] Number of Plugins to load: ', len(loaded_plugins_prefixes)]) mylog('none', ['[Config] Plugins to load: ', loaded_plugins_prefixes]) diff --git a/server/notification.py b/server/notification.py index 16978465..cb9433e0 100755 --- a/server/notification.py +++ b/server/notification.py @@ -306,7 +306,7 @@ def write_notification(content, level, timestamp): if file_contents == '': file_contents = '[]' # If file is empty, initialize as empty list - mylog('debug', ['[Notification] User Notifications file: ', file_contents]) + # mylog('debug', ['[Notification] User Notifications file: ', file_contents]) notifications = json.loads(file_contents) # Parse JSON data else: mylog('error', 'File is not of type _io.TextIOWrapper') diff --git a/server/plugin.py b/server/plugin.py index c5ecfc1f..952ec8fb 100755 --- a/server/plugin.py +++ b/server/plugin.py @@ -33,30 +33,35 @@ class plugin_param: setVal = inputValue["Value"] # setting value setTyp = inputValue["Type"] # setting type - noConversion = ['text', 'string', 'integer', 'boolean', 'password', 'password.SHA256', 'readonly', 'integer.select', 'text.select', 'integer.checkbox' ] - arrayConversion = ['text.multiselect', 'list', 'list.select', 'subnets'] - jsonConversion = ['.template'] + setTypJSN = json.loads(setTyp.replace('"','\"').replace("'",'"')) mylog('debug', f'[Plugins] setTyp: {setTyp}') + mylog('debug', f'[Plugins] setTypJSN: {setTypJSN}') - if '.select' in setTyp or setTyp in arrayConversion: + dataType = setTypJSN["dataType"] + + mylog('debug', f'[Plugins] dType: {dataType}') + + # noConversion = ['text', 'string', 'integer', 'boolean', 'password', 'password.SHA256', 'readonly', 'integer.select', 'text.select', 'integer.checkbox' ] + # arrayConversion = ['text.multiselect', 'list', 'list.select', 'subnets'] + # jsonConversion = ['.template'] + + + + if dataType == 'array': # store number of returned values paramValuesCount = len(setVal) - if setTyp in noConversion: + if dataType in ['string','integer', 'boolean']: resolved = setVal - elif setTyp in arrayConversion: + elif dataType == 'array': # make them safely passable to a python or linux script resolved = list_to_csv(setVal) else: - for item in jsonConversion: - if setTyp.endswith(item): - return json.dumps(setVal) - else: - mylog('none', ['[Plugins] ⚠ ERROR: Parameter not converted.']) - + mylog('none', ['[Plugins] ⚠ ERROR: Parameter probably not converted.']) + return json.dumps(setVal) # Get SQL result if param["type"] == "sql": diff --git a/server/reporting.py b/server/reporting.py index 8baf41fb..8b7212bf 100755 --- a/server/reporting.py +++ b/server/reporting.py @@ -107,6 +107,8 @@ def get_notifications (db): "columnNames": json_obj.columnNames } json_down_devices = json_obj.json["data"] + + mylog('debug', ['[Notification] json_down_devices: ', json.dumps(json_down_devices) ]) if 'down_reconnected' in sections: # Compose Reconnected Down Section @@ -128,6 +130,8 @@ def get_notifications (db): } json_down_reconnected = json_obj.json["data"] + mylog('debug', ['[Notification] json_down_reconnected: ', json.dumps(json_down_reconnected) ]) + if 'events' in sections: # Compose Events Section sqlQuery = f"""SELECT eve_MAC as MAC, eve_DateTime as Datetime, dev_LastIP as IP, eve_EventType as "Event Type", dev_Name as "Device name", dev_Comments as Comments FROM Events_Devices