⚙ Settings rework

This commit is contained in:
jokob-sk
2024-07-07 23:11:30 +10:00
parent 55440090fe
commit 6ea3d14480
54 changed files with 1006 additions and 708 deletions

View File

@@ -191,7 +191,7 @@ This SQL query is executed on the `app.db` SQLite database file.
> ```json > ```json
> { > {
> "function": "CMD", > "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", > "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": [], > "options": [],
> "localized": ["name", "description"], > "localized": ["name", "description"],
@@ -222,7 +222,7 @@ For example for `PIHOLE` (`"unique_prefix": "PIHOLE"`) it is `EXTERNAL_PIHOLE.`.
> ... > ...
>{ >{
> "function": "DB_PATH", > "function": "DB_PATH",
> "type": "readonly", > "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
> "default_value":"/etc/pihole/pihole-FTL.db", > "default_value":"/etc/pihole/pihole-FTL.db",
> "options": [], > "options": [],
> "localized": ["name", "description"], > "localized": ["name", "description"],
@@ -247,7 +247,7 @@ The actual SQL query you want to execute is then stored as a `CMD` setting, simi
>```json >```json
>{ >{
> "function": "CMD", > "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'; ", > "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": [], > "options": [],
> "localized": ["name", "description"], > "localized": ["name", "description"],
@@ -425,7 +425,7 @@ The `params` array in the `config.json` is used to enable the user to change the
```json ```json
{ {
"function": "CMD", "function": "CMD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value":"python3 /app/front/plugins/website_monitor/script.py urls={urls}", "default_value":"python3 /app/front/plugins/website_monitor/script.py urls={urls}",
"options": [], "options": [],
"localized": ["name", "description"], "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. | | `"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: | | `"type"` | Specifies the form control used for the setting displayed in the Settings page and what values are accepted. Supported options include: |
| | - `text` | | | - `{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": ["sha256"]}]}` |
| | - `integer` |
| | - `boolean` |
| | - `password` |
| | - `readonly` |
| | - `integer.select` |
| | - `text.select` |
| | - `text.multiselect` |
| | - `list` |
| | - `list.select` |
| | - `integer.checkbox` |
| | - `text.template` |
| `"localized"` | A list of properties on the current JSON level that need to be localized. | | `"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. | | `"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. | | `"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 > ```json
> { > {
> "function": "RUN", > "function": "RUN",
> "type": "text.select", > "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
> "default_value":"disabled", > "default_value":"disabled",
> "options": ["disabled", "once", "schedule", "always_after_scan", "on_new_device"], > "options": ["disabled", "once", "schedule", "always_after_scan", "on_new_device"],
> "localized": ["name", "description"], > "localized": ["name", "description"],
@@ -627,7 +616,7 @@ The UI will adjust how columns are displayed in the UI based on the resolvers de
```json ```json
"function": "dev_DeviceType", "function": "dev_DeviceType",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30, "maxLength": 30,
"default_value": "", "default_value": "",
"options": ["{value}"], "options": ["{value}"],

View File

@@ -824,7 +824,7 @@ function initializeCombos () {
initializeCombo ( '#dropdownDevices', 'getDevices', 'txtFromDevice', false); initializeCombo ( '#dropdownDevices', 'getDevices', 'txtFromDevice', false);
// Initiate dropdown // Initiate dropdown
// function initSettingDropdown(settingKey, // Identifier for the setting // initSettingDropdown(settingKey, // Identifier for the setting
// valuesArray, // Array of values to be pre-selected in the dropdown // 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) // targetLocation, // ID of the HTML element where dropdown should be rendered (will be replaced)
// callbackToGenerateEntries, // Callback function to generate entries based on options // callbackToGenerateEntries, // Callback function to generate entries based on options

View File

@@ -124,8 +124,10 @@ function cacheSettings()
settingsData.forEach((set) => { settingsData.forEach((set) => {
resolvedOptions = createArray(set.Options) resolvedOptions = createArray(set.Options)
resolvedOptionsOld = resolvedOptions
setPlugObj = {}; setPlugObj = {};
options_params = []; options_params = [];
resolved = ""
// proceed only if first option item contains something to resolve // proceed only if first option item contains something to resolve
if( !set.Code_Name.includes("__metadata") && 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_${set.Code_Name}`, set.Value)
setCache(`pia_set_opt_${set.Code_Name}`, resolvedOptions) setCache(`pia_set_opt_${set.Code_Name}`, resolvedOptions)
}); });
}).then(() => handleSuccess('cacheSettings', resolve())).catch(() => handleFailure('cacheSettings', reject("cacheSettings already completed"))); // handle AJAX synchronization }).then(() => handleSuccess('cacheSettings', resolve())).catch(() => handleFailure('cacheSettings', reject("cacheSettings already completed"))); // handle AJAX synchronization
@@ -179,6 +186,7 @@ function getSettingOptions (key) {
if (result == "") if (result == "")
{ {
console.log(`Setting options with key "${key}" not found`) console.log(`Setting options with key "${key}" not found`)
result = []
} }
return result; return result;
@@ -743,6 +751,10 @@ function isRandomMAC(mac)
// --------------------------------------------------------- // ---------------------------------------------------------
// Generate an array object from a string representation of an array // Generate an array object from a string representation of an array
function createArray(input) { function createArray(input) {
// Is already array, return
if (Array.isArray(input)) {
return input;
}
// Empty array // Empty array
if (input === '[]') { if (input === '[]') {
return []; return [];

View File

@@ -6,6 +6,7 @@
// -------------------------------------------------- // --------------------------------------------------
// Read data and place intotarget location, callback processies the results // Read data and place intotarget location, callback processies the results
function readData(sqlQuery, processDataCallback, valuesArray, targetLocation, targetField, nameTransformer) { function readData(sqlQuery, processDataCallback, valuesArray, targetLocation, targetField, nameTransformer) {
var apiUrl = `php/server/dbHelper.php?action=read&rawSql=${encodeURIComponent(sqlQuery)}`; var apiUrl = `php/server/dbHelper.php?action=read&rawSql=${encodeURIComponent(sqlQuery)}`;
$.get(apiUrl, function(data) { $.get(apiUrl, function(data) {
// Process the JSON data using the provided callback function // Process the JSON data using the provided callback function

View File

@@ -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 // Validation
// ------------------------------------------------------------------- // -------------------------------------------------------------------
@@ -245,21 +252,19 @@ function settingsCollectedCorrectly(settingsArray, settingsJSON_DB) {
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// --------------------------------------------------------- // ---------------------------------------------------------
// Add item to list
function addList(element, clearInput = true) function addList(element, clearInput = true)
{ {
const fromId = $(element).attr('my-input-from'); 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}`);
input = $(`#${fromId}`).val(); const newOption = $("<option class='interactable-option'></option>").attr("value", input).text(input);
console.log(input); const el = $(`#${toId}`).append(newOption);
console.log(toId);
console.log($(`#${toId}`));
$(`#${toId}`).append($("<option ></option>").attr("value", input).text(input));
// clear input // clear input
if (clearInput) if (clearInput)
@@ -267,13 +272,17 @@ function addList(element, clearInput = true)
$(`#${fromId}`).val(""); $(`#${fromId}`).val("");
} }
// Initialize interaction options only for the newly added option
initListInteractionOptions(newOption);
settingsChanged(); settingsChanged();
} }
// --------------------------------------------------------- // ---------------------------------------------------------
function removeFromList(element) function removeFromList(element)
{ {
settingsChanged(); 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) function removeAllOptions(element)
{ {
settingsChanged(); settingsChanged();
$(`#${$(element).attr('my-input')}`).empty(); $(`#${$(element).attr('my-input-to')}`).empty();
} }
@@ -331,12 +340,14 @@ function removeAllOptions(element)
let clickCounter = 0; let clickCounter = 0;
// Function to initialize list interaction options // Function to initialize list interaction options
function initListInteractionOptions(selectorId) { function initListInteractionOptions(element) {
// Select all options within the specified selector if(element)
const $options = $(`#${selectorId} option`); {
$options = $(element);
// Add class to make options interactable } else
$options.addClass('interactable-option'); {
$options = $(`.interactable-option`);
}
// Attach click event listener to options // Attach click event listener to options
$options.on('click', function() { $options.on('click', function() {
@@ -350,8 +361,6 @@ function initListInteractionOptions(selectorId) {
// Perform action based on click count // Perform action based on click count
if (clickCounter === 1) { if (clickCounter === 1) {
// Single-click action // Single-click action
// btoa(iconHtml.replace(/"/g, "'") <-- encode
// atob() <--- decode
showModalFieldInput( showModalFieldInput(
`<i class="fa-regular fa-pen-to-square"></i> ${getString('Gen_Update_Value')}`, `<i class="fa-regular fa-pen-to-square"></i> ${getString('Gen_Update_Value')}`,
getString('settings_update_item_warning'), getString('settings_update_item_warning'),
@@ -371,6 +380,7 @@ function initListInteractionOptions(selectorId) {
clickCounter = 0; clickCounter = 0;
}, 300); // Adjust delay as needed }, 300); // Adjust delay as needed
}); });
} }
@@ -492,37 +502,163 @@ function getParam(targetId, key, skipCache = false) {
// --------------------------------------------------------- // ---------------------------------------------------------
// generate a list of options for a input select // generate a list of options for a input select
function generateOptions(pluginsData, set, input, isMultiSelect = false, isValueSource = true) function generateOptions(pluginsData, set, input, dataType, isMultiSelect = false, editable = false, transformers = []) {
{ let multi = isMultiSelect ? "multiple" : "";
multi = isMultiSelect ? "multiple" : ""; let valuesArray = createArray(set['Value']);
let settingKey = set['Code_Name'];
// optionsArray = getSettingOptions(set['Code_Name'] ) // editable ? classNames += " interactable-option" : classNames = ""
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 // 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'; // isValueSource ? id = settingKey : id = settingKey + '_input';
// main selection dropdown wrapper // main selection dropdown wrapper
input += ` input += `
<select onChange="settingsChanged()" <select onChange="settingsChanged()" my-data-type="${dataType}" my-editable="${editable}" class="form-control" name="${settingKey}" id="${settingKey}" ${multi}>
my-data-type="${set['Type']}" `;
class="form-control"
name="${set['Code_Name']}"
id="${id}"
${multi}>
<option id="${targetLocation}" temporary="temporary"></option> // if available transformers are applied
valuesArray = valuesArray.map(value => applyTransformers(value, transformers));
</select>`; // 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 += `<option value="" id="${targetLocation}" ></option>`;
// callback to the DB
readData(optionsArray[0], generateDropdownOptions, valuesArray, targetLocation, settingKey);
} else // sync processing
{
optionsArray.forEach(option => {
let selected = valuesArray.includes(option) ? 'selected' : '';
input += `<option value="${option}" ${selected}>${option}</option>`;
});
}
} else // this is an interactable list with default and user-defined values
{
// generates [1x 📝 | 2x 🚮]
valuesArray.forEach(option => {
input += `<option class="interactable-option" value="${option}">${option}</option>`;
});
}
input += `</select>`;
// add values from the setting options - execute AJAX callback + SQL query resolution
// initSettingDropdown(settingKey, valuesArray, targetLocation, generateDropdownOptions);
return input; 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
};
};

View File

@@ -79,7 +79,7 @@ function initDeviceSelectors() {
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Initiate dropdown // (ASYNC) Initiate dropdown
function initSettingDropdown(settingKey, // Identifier for the setting function initSettingDropdown(settingKey, // Identifier for the setting
valuesArray, // Array of values to be pre-selected in the dropdown 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) 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 // NOTE {value} options to replace with a setting or SQL value are handled in the cacheSettings() function
optionsArray = createArray(getSettingOptions(settingKey)) optionsArray = createArray(getSettingOptions(settingKey))
// check if the result is a SQL query // 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); readData(optionsArray[0], callbackToGenerateEntries, valuesArray, targetLocation, targetField, nameTransformer);
} else // this should be already an array, e.g. from a setting or pre-defined } else // this should be already an array, e.g. from a setting or pre-defined
@@ -111,8 +117,10 @@ function initSettingDropdown(settingKey, // Identifier for the setting
$("#" + targetLocation).replaceWith(optionsHtml); $("#" + targetLocation).replaceWith(optionsHtml);
}, 50); }, 50);
} }
} }

View File

@@ -1,5 +1,5 @@
<script src="js/settings_utils.js?v=<?php include 'php/templates/version.php'; ?>"></script>
<div class="col-md-12"> <div class="col-md-12">
@@ -102,22 +102,31 @@
// Append form groups to the column // Append form groups to the column
for (let j = i * elementsPerColumn; j < Math.min((i + 1) * elementsPerColumn, columns.length); j++) { 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) { const { elementType, elementOptions = [], transformers = [] } = lastElementObj;
case 'integer.checkbox': const {
case 'checkbox': inputType,
inputType = 'checkbox'; readOnly,
break; isMultiSelect,
case 'text.select': cssClasses,
inputType = 'text.select'; placeholder,
break; suffix,
default: sourceIds,
inputType = 'text'; separator,
break; editable,
} valRes,
getStringKey,
onClick
} = handleElementOptions('none', elementOptions, transformers, val = "");
if (inputType === 'text.select') { // console.log(setTypeObject);
// console.log(inputType);
// render based on element type
if (lastElementObj.elementType === 'select') {
targetLocation = columns[j].Code_Name + "_initSettingDropdown" targetLocation = columns[j].Code_Name + "_initSettingDropdown"
@@ -147,15 +156,11 @@
} }
} else { } else if (lastElementObj.elementType === 'input'){
// Add classes specifically for checkboxes // Add classes specifically for checkboxes
if (inputType === 'checkbox') { inputType === 'checkbox' ? inputClass = 'checkbox' : inputClass = 'form-control';
inputClass = 'checkbox';
} else {
inputClass = 'form-control';
}
input = `<input class="${inputClass}" input = `<input class="${inputClass}"
id="${columns[j].Code_Name}" id="${columns[j].Code_Name}"

View File

@@ -328,39 +328,38 @@ function saveSettings()
foreach ($decodedSettings as $setting) { foreach ($decodedSettings as $setting) {
$settingGroup = $setting[0]; $settingGroup = $setting[0];
$settingKey = $setting[1]; $settingKey = $setting[1];
$settingType = $setting[2]; $dataType = $setting[2];
$settingValue = $setting[3]; $settingValue = $setting[3];
// sanity check // // Parse the settingType JSON
if($settingKey == "UI_LANG" && $settingValue == "") // $settingType = json_decode($settingTypeJson, true);
{
// Sanity check
if($settingKey == "UI_LANG" && $settingValue == "") {
echo "🔴 Error: important settings missing. Refresh the page with 🔃 on the top and try again."; echo "🔴 Error: important settings missing. Refresh the page with 🔃 on the top and try again.";
return; return;
} }
if ($group == $settingGroup) { if ($group == $settingGroup) {
if ($settingType == 'text' || $settingType == 'password' || $settingType == 'password.SHA256' || $settingType == 'readonly' || $settingType == 'text.select') {
if ($dataType == 'string' ) {
$val = encode_single_quotes($settingValue); $val = encode_single_quotes($settingValue);
$txt .= $settingKey . "='" . $val . "'\n"; $txt .= $settingKey . "='" . $val . "'\n";
} elseif ($settingType == 'integer' || $settingType == 'integer.select') { } elseif ($dataType == 'integer') {
$txt .= $settingKey . "=" . $settingValue . "\n"; $txt .= $settingKey . "=" . $settingValue . "\n";
} elseif ($settingType == 'boolean' || $settingType == 'integer.checkbox') { } elseif ($dataType == 'json') {
$txt .= $settingKey . "=" . $settingValue . "\n";
if ($settingValue === true || $settingValue === 1 || strtolower($settingValue) === 'true') { } elseif ($dataType == 'boolean') {
$val = "True"; $val = ($settingValue === true || $settingValue === 1 || strtolower($settingValue) === 'true') ? "True" : "False";
} else {
$val = "False";
}
$txt .= $settingKey . "=" . $val . "\n"; $txt .= $settingKey . "=" . $val . "\n";
} elseif ($settingType == 'text.multiselect' || $settingType == 'subnets' || $settingType == 'list' || $settingType == 'list.select' || $settingType == 'list.base64') { } elseif ($dataType == 'array' ) {
$temp = ''; $temp = '';
if(is_array($settingValue) == FALSE) if(is_array($settingValue) == FALSE)
{ {
$settingValue = json_decode($settingValue); $settingValue = json_decode($settingValue);
} }
// skipping __metadata entries (?)
if (count($setting) > 3 && is_array($settingValue) == true) { if (count($setting) > 3 && is_array($settingValue) == true) {
foreach ($settingValue as $val) { foreach ($settingValue as $val) {
$temp .= "'" . encode_single_quotes($val) . "',"; $temp .= "'" . encode_single_quotes($val) . "',";
@@ -371,11 +370,24 @@ function saveSettings()
$temp = '['.$temp.']'; // wrap brackets $temp = '['.$temp.']'; // wrap brackets
$txt .= $settingKey . "=" . $temp . "\n"; $txt .= $settingKey . "=" . $temp . "\n";
} elseif ($settingType == 'json') { // $temp = '';
$txt .= $settingKey . "=" . $settingValue . "\n"; // 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";
} }
} }
} }
} }

View File

@@ -39,7 +39,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
@@ -66,7 +66,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -85,7 +85,7 @@
}, },
{ {
"function": "text_example", "function": "text_example",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -105,7 +105,7 @@
}, },
{ {
"function": "boolean_example", "function": "boolean_example",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -124,7 +124,7 @@
}, },
{ {
"function": "list_example", "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"], "default_value": ["existing_entry_1", "existing_entry_2"],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -143,7 +143,7 @@
}, },
{ {
"function": "multiselect_example_from_setting", "function": "multiselect_example_from_setting",
"type": "text.multiselect", "type": {"dataType":"array", "element": "select", "elementOptions" : ["multiple"] ,"transformers": []},
"maxLength": 50, "maxLength": 50,
"default_value": [], "default_value": [],
"options": ["{value}"], "options": ["{value}"],
@@ -170,7 +170,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "element": "input", "elementOptions" : ["readonly"] ,"transformers": []},
"default_value": "python3 /app/front/plugins/<plugin folder>/rename_me.py", "default_value": "python3 /app/front/plugins/<plugin folder>/rename_me.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -189,7 +189,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -288,7 +288,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["test"], "events": ["test"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "on_notification"], "options": ["disabled", "on_notification"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -315,7 +315,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/_publisher_apprise/apprise.py", "default_value": "python3 /app/front/plugins/_publisher_apprise/apprise.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -342,7 +342,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -373,7 +373,7 @@
}, },
{ {
"function": "HOST", "function": "HOST",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -400,7 +400,7 @@
}, },
{ {
"function": "URL", "function": "URL",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -427,7 +427,7 @@
}, },
{ {
"function": "PAYLOAD", "function": "PAYLOAD",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "html", "default_value": "html",
"options": ["html", "text"], "options": ["html", "text"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -454,7 +454,7 @@
}, },
{ {
"function": "SIZE", "function": "SIZE",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 1024, "default_value": 1024,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -288,7 +288,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["test"], "events": ["test"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "on_notification"], "options": ["disabled", "on_notification"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -315,7 +315,7 @@
}, },
{ {
"function": "CMD", "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", "default_value": "python3 /app/front/plugins/_publisher_email/email_smtp.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -342,7 +342,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 20, "default_value": 20,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -373,7 +373,7 @@
}, },
{ {
"function": "SERVER", "function": "SERVER",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -400,7 +400,7 @@
}, },
{ {
"function": "PORT", "function": "PORT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 587, "default_value": 587,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -427,7 +427,7 @@
}, },
{ {
"function": "SKIP_LOGIN", "function": "SKIP_LOGIN",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -454,7 +454,7 @@
}, },
{ {
"function": "USER", "function": "USER",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -481,7 +481,7 @@
}, },
{ {
"function": "PASS", "function": "PASS",
"type": "password", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -508,7 +508,7 @@
}, },
{ {
"function": "SKIP_TLS", "function": "SKIP_TLS",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -535,7 +535,7 @@
}, },
{ {
"function": "FORCE_SSL", "function": "FORCE_SSL",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -562,7 +562,7 @@
}, },
{ {
"function": "REPORT_TO", "function": "REPORT_TO",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "user@gmail.com", "default_value": "user@gmail.com",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -589,7 +589,7 @@
}, },
{ {
"function": "REPORT_FROM", "function": "REPORT_FROM",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "NetAlertX <user@gmail.com>", "default_value": "NetAlertX <user@gmail.com>",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -56,6 +56,19 @@ def main():
# Retrieve new notifications # Retrieve new notifications
new_notifications = notifications.getNew() 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) # Process the new notifications (see the Notifications DB table for structure or check the /api/table_notifications.json endpoint)
for notification in new_notifications: for notification in new_notifications:

View File

@@ -278,7 +278,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["test"], "events": ["test"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -312,7 +312,7 @@
}, },
{ {
"function": "CMD", "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}", "default_value": "python3 /app/front/plugins/_publisher_mqtt/mqtt.py devices={devices}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -339,7 +339,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * 3", "default_value": "0 2 * * 3",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -374,7 +374,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 20, "default_value": 20,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -405,7 +405,7 @@
}, },
{ {
"function": "BROKER", "function": "BROKER",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -432,7 +432,7 @@
}, },
{ {
"function": "PORT", "function": "PORT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 1883, "default_value": 1883,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -459,7 +459,7 @@
}, },
{ {
"function": "USER", "function": "USER",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -486,7 +486,7 @@
}, },
{ {
"function": "PASSWORD", "function": "PASSWORD",
"type": "password", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -513,7 +513,7 @@
}, },
{ {
"function": "SEND_STATS", "function": "SEND_STATS",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": true, "default_value": true,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -532,7 +532,7 @@
}, },
{ {
"function": "DEVICE_ID", "function": "DEVICE_ID",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "netalertx", "default_value": "netalertx",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -551,7 +551,7 @@
}, },
{ {
"function": "DEVICE_NAME", "function": "DEVICE_NAME",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "NetAlertX", "default_value": "NetAlertX",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -570,7 +570,7 @@
}, },
{ {
"function": "SEND_DEVICES", "function": "SEND_DEVICES",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": true, "default_value": true,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -589,7 +589,7 @@
}, },
{ {
"function": "QOS", "function": "QOS",
"type": "integer.select", "type": {"dataType":"integer", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [0, 1, 2], "options": [0, 1, 2],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -616,7 +616,7 @@
}, },
{ {
"function": "VERSION", "function": "VERSION",
"type": "integer.select", "type": {"dataType":"integer", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [1, 2], "options": [1, 2],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -635,7 +635,7 @@
}, },
{ {
"function": "DELAY_SEC", "function": "DELAY_SEC",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 2, "default_value": 2,
"options": [2, 3, 4, 5], "options": [2, 3, 4, 5],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -242,7 +242,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["test"], "events": ["test"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "on_notification"], "options": ["disabled", "on_notification"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -269,7 +269,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/_publisher_ntfy/ntfy.py", "default_value": "python3 /app/front/plugins/_publisher_ntfy/ntfy.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -296,7 +296,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -327,7 +327,7 @@
}, },
{ {
"function": "HOST", "function": "HOST",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "https://ntfy.sh", "default_value": "https://ntfy.sh",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -354,7 +354,7 @@
}, },
{ {
"function": "TOPIC", "function": "TOPIC",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -381,7 +381,7 @@
}, },
{ {
"function": "USER", "function": "USER",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -408,7 +408,7 @@
}, },
{ {
"function": "PASSWORD", "function": "PASSWORD",
"type": "password", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -435,7 +435,7 @@
}, },
{ {
"function": "PRIORITY", "function": "PRIORITY",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "urgent", "default_value": "urgent",
"options": ["urgent", "high", "default", "low", "min"], "options": ["urgent", "high", "default", "low", "min"],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -242,7 +242,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["test"], "events": ["test"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "on_notification"], "options": ["disabled", "on_notification"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -269,7 +269,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/_publisher_pushover/pushover.py", "default_value": "python3 /app/front/plugins/_publisher_pushover/pushover.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -296,7 +296,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -323,7 +323,7 @@
}, },
{ {
"function": "USER_KEY", "function": "USER_KEY",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "USER_KEY", "default_value": "USER_KEY",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -342,7 +342,7 @@
}, },
{ {
"function": "APP_TOKEN", "function": "APP_TOKEN",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "APP_TOKEN", "default_value": "APP_TOKEN",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -361,7 +361,7 @@
}, },
{ {
"function": "DEVICE_NAME", "function": "DEVICE_NAME",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "DEVICE_NAME", "default_value": "DEVICE_NAME",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -242,7 +242,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["test"], "events": ["test"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "on_notification"], "options": ["disabled", "on_notification"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -269,7 +269,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/_publisher_pushsafer/pushsafer.py", "default_value": "python3 /app/front/plugins/_publisher_pushsafer/pushsafer.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -296,7 +296,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -327,7 +327,7 @@
}, },
{ {
"function": "TOKEN", "function": "TOKEN",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "ApiKey", "default_value": "ApiKey",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -242,7 +242,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["test"], "events": ["test"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "on_notification"], "options": ["disabled", "on_notification"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -269,7 +269,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/_publisher_webhook/webhook.py", "default_value": "python3 /app/front/plugins/_publisher_webhook/webhook.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -296,7 +296,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -327,7 +327,7 @@
}, },
{ {
"function": "URL", "function": "URL",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -354,7 +354,7 @@
}, },
{ {
"function": "PAYLOAD", "function": "PAYLOAD",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "json", "default_value": "json",
"options": ["json", "html", "text"], "options": ["json", "html", "text"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -381,7 +381,7 @@
}, },
{ {
"function": "REQUEST_METHOD", "function": "REQUEST_METHOD",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "GET", "default_value": "GET",
"options": ["GET", "POST", "PUT"], "options": ["GET", "POST", "PUT"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -408,7 +408,7 @@
}, },
{ {
"function": "SIZE", "function": "SIZE",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 1024, "default_value": 1024,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -435,7 +435,7 @@
}, },
{ {
"function": "SECRET", "function": "SECRET",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -69,7 +69,7 @@
"settings": [ "settings": [
{ {
"function": "RUN", "function": "RUN",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -111,7 +111,7 @@
}, },
{ {
"function": "CMD", "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}", "default_value": "python3 /app/front/plugins/arp_scan/script.py userSubnets={subnets}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -146,7 +146,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 300, "default_value": 300,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -181,7 +181,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -216,7 +216,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1", "Watched_Value2"], "default_value": ["Watched_Value1", "Watched_Value2"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -256,7 +256,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new"], "default_value": ["new"],
"options": [ "options": [
"new", "new",
@@ -296,7 +296,7 @@
}, },
{ {
"function": "ARGS", "function": "ARGS",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "sudo arp-scan --ignoredups --retry=6", "default_value": "sudo arp-scan --ignoredups --retry=6",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -58,7 +58,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "schedule", "default_value": "schedule",
"options": [ "options": [
"disabled", "disabled",
@@ -99,7 +99,7 @@
}, },
{ {
"function": "CMD", "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}", "default_value": "python3 /app/front/plugins/csv_backup/script.py overwrite={overwrite} location={location}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -134,7 +134,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * 3", "default_value": "0 2 * * 3",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -169,7 +169,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -204,7 +204,7 @@
}, },
{ {
"function": "overwrite", "function": "overwrite",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -239,7 +239,7 @@
}, },
{ {
"function": "location", "function": "location",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "/app/config", "default_value": "/app/config",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -47,7 +47,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "schedule", "default_value": "schedule",
"options": ["disabled", "once", "schedule", "always_after_scan"], "options": ["disabled", "once", "schedule", "always_after_scan"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -74,7 +74,7 @@
}, },
{ {
"function": "CMD", "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}", "default_value": "python3 /app/front/plugins/db_cleanup/script.py pluginskeephistory={pluginskeephistory} hourstokeepnewdevice={hourstokeepnewdevice} daystokeepevents={daystokeepevents} pholuskeepdays={pholuskeepdays}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -109,7 +109,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/30 * * * *", "default_value": "*/30 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -144,7 +144,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -179,7 +179,7 @@
}, },
{ {
"function": "NOTIFI_HIST", "function": "NOTIFI_HIST",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 100, "default_value": 100,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -76,7 +76,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "once", "schedule", "always_after_scan"], "options": ["disabled", "once", "schedule", "always_after_scan"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -107,7 +107,7 @@
}, },
{ {
"function": "CMD", "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} ", "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": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -142,7 +142,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -177,7 +177,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -212,7 +212,7 @@
}, },
{ {
"function": "DOMAIN", "function": "DOMAIN",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "your_domain.freeddns.org", "default_value": "your_domain.freeddns.org",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -247,7 +247,7 @@
}, },
{ {
"function": "USER", "function": "USER",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "dynu_user", "default_value": "dynu_user",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -282,7 +282,7 @@
}, },
{ {
"function": "PASSWORD", "function": "PASSWORD",
"type": "password", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]},
"default_value": "A0000000B0000000C0000000D0000000", "default_value": "A0000000B0000000C0000000D0000000",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -317,7 +317,7 @@
}, },
{ {
"function": "UPDATE_URL", "function": "UPDATE_URL",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "https://api.dynu.com/nic/update?", "default_value": "https://api.dynu.com/nic/update?",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -352,7 +352,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"], "default_value": ["Watched_Value1"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -388,7 +388,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": [ "options": [
"new", "new",

View File

@@ -414,7 +414,12 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {
"dataType": "string",
"elements": [
{ "elementType": "select", "elementOptions": [], "transformers": [] }
]
},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -455,7 +460,12 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "text", "type": {
"dataType": "string",
"elements": [
{ "elementType": "input", "elementOptions": [], "transformers": [] }
]
},
"default_value": "python3 /app/front/plugins/dhcp_leases/script.py paths={paths}", "default_value": "python3 /app/front/plugins/dhcp_leases/script.py paths={paths}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -490,7 +500,63 @@
}, },
{ {
"function": "paths_to_check", "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"], "default_value": ["/mnt/dhcp1.leases", "/mnt/dhcp2.leases"],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -525,7 +591,12 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {
"dataType": "string",
"elements": [
{ "elementType": "input", "elementOptions": [], "transformers": [] }
]
},
"default_value": "0 2 * * *", "default_value": "0 2 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -560,7 +631,16 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {
"dataType": "integer",
"elements": [
{
"elementType": "input",
"elementOptions": [{ "type": "number" }],
"transformers": []
}
]
},
"default_value": 5, "default_value": 5,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -595,7 +675,16 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {
"dataType": "array",
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true" }],
"transformers": []
}
]
},
"default_value": ["Watched_Value1", "Watched_Value4"], "default_value": ["Watched_Value1", "Watched_Value4"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -635,7 +724,16 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {
"dataType": "array",
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true" }],
"transformers": []
}
]
},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": [ "options": [
"new", "new",

View File

@@ -307,7 +307,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -340,7 +340,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/dhcp_servers/script.py", "default_value": "python3 /app/front/plugins/dhcp_servers/script.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -367,7 +367,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * *", "default_value": "0 2 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -394,7 +394,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -425,7 +425,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"], "default_value": ["Watched_Value1"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -457,7 +457,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": ["new", "watched-changed", "watched-not-changed"], "options": ["new", "watched-changed", "watched-not-changed"],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -153,7 +153,7 @@
"string": "Device ID Parameter" "string": "Device ID Parameter"
} }
], ],
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "1", "default_value": "1",
"localized": ["name"] "localized": ["name"]
}, },
@@ -164,7 +164,7 @@
"string": "Event Type Parameter" "string": "Event Type Parameter"
} }
], ],
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "device_down", "default_value": "device_down",
"localized": ["name"] "localized": ["name"]
}, },
@@ -175,7 +175,7 @@
"string": "Repetition Count Parameter" "string": "Repetition Count Parameter"
} }
], ],
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 3, "default_value": 3,
"localized": ["name"] "localized": ["name"]
} }
@@ -216,7 +216,7 @@
}, },
{ {
"function": "CMD", "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})", "default_value": "UPDATE Devices SET dev_AlertDeviceDown = {KNWN_dev_AlertDeviceDown}, dev_AlertEvents = {KNWN_dev_AlertEvents} WHERE dev_MAC in ({target_macs})",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -235,7 +235,7 @@
}, },
{ {
"function": "dev_Name", "function": "dev_Name",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "(unknown)", "default_value": "(unknown)",
"options": [], "options": [],
@@ -255,7 +255,7 @@
}, },
{ {
"function": "dev_Owner", "function": "dev_Owner",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30, "maxLength": 30,
"default_value": "House", "default_value": "House",
"override_value": { "override_value": {
@@ -278,7 +278,7 @@
}, },
{ {
"function": "dev_DeviceType", "function": "dev_DeviceType",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30, "maxLength": 30,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -298,7 +298,7 @@
}, },
{ {
"function": "dev_Vendor", "function": "dev_Vendor",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 250, "maxLength": 250,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -318,7 +318,7 @@
}, },
{ {
"function": "dev_Favorite", "function": "dev_Favorite",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"override_value": { "override_value": {
"override": false "override": false
@@ -340,7 +340,7 @@
}, },
{ {
"function": "dev_Group", "function": "dev_Group",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 10, "maxLength": 10,
"default_value": "", "default_value": "",
"override_value": { "override_value": {
@@ -363,7 +363,7 @@
}, },
{ {
"function": "dev_Comments", "function": "dev_Comments",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -382,7 +382,7 @@
}, },
{ {
"function": "dev_FirstConnection", "function": "dev_FirstConnection",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -402,7 +402,7 @@
}, },
{ {
"function": "dev_LastConnection", "function": "dev_LastConnection",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -422,7 +422,7 @@
}, },
{ {
"function": "dev_LastIP", "function": "dev_LastIP",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -442,7 +442,7 @@
}, },
{ {
"function": "dev_StaticIP", "function": "dev_StaticIP",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"override_value": { "override_value": {
"override": true "override": true
@@ -464,7 +464,7 @@
}, },
{ {
"function": "dev_ScanCycle", "function": "dev_ScanCycle",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"override_value": { "override_value": {
"override": true "override": true
@@ -486,7 +486,7 @@
}, },
{ {
"function": "dev_LogEvents", "function": "dev_LogEvents",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"override_value": { "override_value": {
"override": false "override": false
@@ -508,7 +508,7 @@
}, },
{ {
"function": "dev_AlertEvents", "function": "dev_AlertEvents",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"override_value": { "override_value": {
"override": true "override": true
@@ -530,7 +530,7 @@
}, },
{ {
"function": "dev_AlertDeviceDown", "function": "dev_AlertDeviceDown",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -549,7 +549,7 @@
}, },
{ {
"function": "dev_SkipRepeated", "function": "dev_SkipRepeated",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -568,7 +568,7 @@
}, },
{ {
"function": "dev_LastNotification", "function": "dev_LastNotification",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -588,7 +588,7 @@
}, },
{ {
"function": "dev_PresentLastScan", "function": "dev_PresentLastScan",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -607,7 +607,7 @@
}, },
{ {
"function": "dev_NewDevice", "function": "dev_NewDevice",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": true, "default_value": true,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -626,7 +626,7 @@
}, },
{ {
"function": "dev_Location", "function": "dev_Location",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 250, "maxLength": 250,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -646,7 +646,7 @@
}, },
{ {
"function": "dev_Archived", "function": "dev_Archived",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -665,7 +665,7 @@
}, },
{ {
"function": "dev_Network_Node_MAC_ADDR", "function": "dev_Network_Node_MAC_ADDR",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -684,7 +684,7 @@
}, },
{ {
"function": "dev_Network_Node_port", "function": "dev_Network_Node_port",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -703,7 +703,7 @@
}, },
{ {
"function": "dev_Icon", "function": "dev_Icon",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -63,7 +63,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "once", "schedule", "always_after_scan"], "options": ["disabled", "once", "schedule", "always_after_scan"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -94,7 +94,7 @@
}, },
{ {
"function": "CMD", "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}", "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": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -129,7 +129,7 @@
}, },
{ {
"function": "DIG_GET_IP_ARG", "function": "DIG_GET_IP_ARG",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "-4 myip.opendns.com @resolver1.opendns.com", "default_value": "-4 myip.opendns.com @resolver1.opendns.com",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -164,7 +164,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -199,7 +199,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -234,7 +234,7 @@
}, },
{ {
"function": "RETRIES", "function": "RETRIES",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 3, "default_value": 3,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -253,7 +253,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"], "default_value": ["Watched_Value1"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -289,7 +289,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": [ "options": [
"new", "new",

View File

@@ -377,7 +377,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "once", "schedule", "always_after_scan"], "options": ["disabled", "once", "schedule", "always_after_scan"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -408,7 +408,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/internet_speedtest/script.py", "default_value": "python3 /app/front/plugins/internet_speedtest/script.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -443,7 +443,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/30 * * * *", "default_value": "*/30 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -478,7 +478,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 60, "default_value": 60,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -513,7 +513,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": [], "default_value": [],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -549,7 +549,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": [], "default_value": [],
"options": [ "options": [
"new", "new",

View File

@@ -159,7 +159,7 @@
}, },
{ {
"function": "CMD", "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})", "default_value": "UPDATE Devices SET dev_AlertDeviceDown = {KNWN_dev_AlertDeviceDown}, dev_AlertEvents = {KNWN_dev_AlertEvents} WHERE dev_MAC in ({target_macs})",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -178,7 +178,7 @@
}, },
{ {
"function": "dev_Name", "function": "dev_Name",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "(unknown)", "default_value": "(unknown)",
"options": [], "options": [],
@@ -198,7 +198,7 @@
}, },
{ {
"function": "dev_Owner", "function": "dev_Owner",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30, "maxLength": 30,
"default_value": "House", "default_value": "House",
"override_value": { "override_value": {
@@ -221,7 +221,7 @@
}, },
{ {
"function": "dev_DeviceType", "function": "dev_DeviceType",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30, "maxLength": 30,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -241,7 +241,7 @@
}, },
{ {
"function": "dev_Vendor", "function": "dev_Vendor",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 250, "maxLength": 250,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -261,7 +261,7 @@
}, },
{ {
"function": "dev_Favorite", "function": "dev_Favorite",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"override_value": { "override_value": {
"override": false "override": false
@@ -283,7 +283,7 @@
}, },
{ {
"function": "dev_Group", "function": "dev_Group",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 10, "maxLength": 10,
"default_value": "", "default_value": "",
"override_value": { "override_value": {
@@ -306,7 +306,7 @@
}, },
{ {
"function": "dev_Comments", "function": "dev_Comments",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -325,7 +325,7 @@
}, },
{ {
"function": "dev_FirstConnection", "function": "dev_FirstConnection",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -345,7 +345,7 @@
}, },
{ {
"function": "dev_LastConnection", "function": "dev_LastConnection",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -365,7 +365,7 @@
}, },
{ {
"function": "dev_LastIP", "function": "dev_LastIP",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -385,7 +385,7 @@
}, },
{ {
"function": "dev_StaticIP", "function": "dev_StaticIP",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"override_value": { "override_value": {
"override": true "override": true
@@ -407,7 +407,7 @@
}, },
{ {
"function": "dev_ScanCycle", "function": "dev_ScanCycle",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"override_value": { "override_value": {
"override": true "override": true
@@ -429,7 +429,7 @@
}, },
{ {
"function": "dev_LogEvents", "function": "dev_LogEvents",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"override_value": { "override_value": {
"override": false "override": false
@@ -451,7 +451,7 @@
}, },
{ {
"function": "dev_AlertEvents", "function": "dev_AlertEvents",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"override_value": { "override_value": {
"override": true "override": true
@@ -473,7 +473,7 @@
}, },
{ {
"function": "dev_AlertDeviceDown", "function": "dev_AlertDeviceDown",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -492,7 +492,7 @@
}, },
{ {
"function": "dev_SkipRepeated", "function": "dev_SkipRepeated",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -511,7 +511,7 @@
}, },
{ {
"function": "dev_LastNotification", "function": "dev_LastNotification",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -531,7 +531,7 @@
}, },
{ {
"function": "dev_PresentLastScan", "function": "dev_PresentLastScan",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -550,7 +550,7 @@
}, },
{ {
"function": "dev_NewDevice", "function": "dev_NewDevice",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": true, "default_value": true,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -569,7 +569,7 @@
}, },
{ {
"function": "dev_Location", "function": "dev_Location",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 250, "maxLength": 250,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -589,7 +589,7 @@
}, },
{ {
"function": "dev_Archived", "function": "dev_Archived",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -608,7 +608,7 @@
}, },
{ {
"function": "dev_Network_Node_MAC_ADDR", "function": "dev_Network_Node_MAC_ADDR",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -627,7 +627,7 @@
}, },
{ {
"function": "dev_Network_Node_port", "function": "dev_Network_Node_port",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -646,7 +646,7 @@
}, },
{ {
"function": "dev_Icon", "function": "dev_Icon",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -29,7 +29,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "schedule", "default_value": "schedule",
"options": [ "options": [
"disabled", "disabled",
@@ -62,7 +62,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/maintenance/maintenance.py", "default_value": "python3 /app/front/plugins/maintenance/maintenance.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -97,7 +97,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * *", "default_value": "0 2 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -132,7 +132,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -167,7 +167,7 @@
}, },
{ {
"function": "LOG_LENGTH", "function": "LOG_LENGTH",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 250000, "default_value": 250000,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -28,7 +28,7 @@
"settings": [ "settings": [
{ {
"function": "ignored_MACs", "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": [], "default_value": [],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -47,7 +47,7 @@
}, },
{ {
"function": "ignored_IPs", "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": [], "default_value": [],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -66,7 +66,7 @@
}, },
{ {
"function": "dev_MAC", "function": "dev_MAC",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -86,7 +86,7 @@
}, },
{ {
"function": "dev_Name", "function": "dev_Name",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "(unknown)", "default_value": "(unknown)",
"options": [], "options": [],
@@ -106,7 +106,7 @@
}, },
{ {
"function": "dev_Owner", "function": "dev_Owner",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30, "maxLength": 30,
"default_value": "", "default_value": "",
"options": ["{value}"], "options": ["{value}"],
@@ -133,7 +133,7 @@
}, },
{ {
"function": "dev_DeviceType", "function": "dev_DeviceType",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30, "maxLength": 30,
"default_value": "", "default_value": "",
"options": ["{value}"], "options": ["{value}"],
@@ -165,7 +165,7 @@
}, },
{ {
"function": "dev_Vendor", "function": "dev_Vendor",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 250, "maxLength": 250,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -185,7 +185,7 @@
}, },
{ {
"function": "dev_Favorite", "function": "dev_Favorite",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -204,7 +204,7 @@
}, },
{ {
"function": "dev_Group", "function": "dev_Group",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 10, "maxLength": 10,
"default_value": "", "default_value": "",
"options": ["{value}"], "options": ["{value}"],
@@ -231,7 +231,7 @@
}, },
{ {
"function": "dev_Comments", "function": "dev_Comments",
"type": "string", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -250,7 +250,7 @@
}, },
{ {
"function": "dev_FirstConnection", "function": "dev_FirstConnection",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -270,7 +270,7 @@
}, },
{ {
"function": "dev_LastConnection", "function": "dev_LastConnection",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -290,7 +290,7 @@
}, },
{ {
"function": "dev_LastIP", "function": "dev_LastIP",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -310,7 +310,7 @@
}, },
{ {
"function": "dev_StaticIP", "function": "dev_StaticIP",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -329,7 +329,7 @@
}, },
{ {
"function": "dev_ScanCycle", "function": "dev_ScanCycle",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -348,7 +348,7 @@
}, },
{ {
"function": "dev_LogEvents", "function": "dev_LogEvents",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -367,7 +367,7 @@
}, },
{ {
"function": "dev_AlertEvents", "function": "dev_AlertEvents",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -386,7 +386,7 @@
}, },
{ {
"function": "dev_AlertDeviceDown", "function": "dev_AlertDeviceDown",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -405,7 +405,7 @@
}, },
{ {
"function": "dev_SkipRepeated", "function": "dev_SkipRepeated",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": ["{value}"], "options": ["{value}"],
"options_params": [ "options_params": [
@@ -431,7 +431,7 @@
}, },
{ {
"function": "dev_LastNotification", "function": "dev_LastNotification",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time", "format": "date-time",
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -451,7 +451,7 @@
}, },
{ {
"function": "dev_PresentLastScan", "function": "dev_PresentLastScan",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -470,7 +470,7 @@
}, },
{ {
"function": "dev_NewDevice", "function": "dev_NewDevice",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1, "default_value": 1,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -489,7 +489,7 @@
}, },
{ {
"function": "dev_Location", "function": "dev_Location",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 250, "maxLength": 250,
"default_value": "", "default_value": "",
"options": ["{value}"], "options": ["{value}"],
@@ -516,7 +516,7 @@
}, },
{ {
"function": "dev_Archived", "function": "dev_Archived",
"type": "integer.checkbox", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -535,7 +535,7 @@
}, },
{ {
"function": "dev_Network_Node_MAC_ADDR", "function": "dev_Network_Node_MAC_ADDR",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": ["{value}"], "options": ["{value}"],
"options_params": [ "options_params": [
@@ -566,7 +566,7 @@
}, },
{ {
"function": "dev_Network_Node_port", "function": "dev_Network_Node_port",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -585,7 +585,7 @@
}, },
{ {
"function": "dev_Icon", "function": "dev_Icon",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": ["{value}"], "options": ["{value}"],
"options_params": [ "options_params": [
@@ -611,7 +611,7 @@
}, },
{ {
"function": "LESS_NAME_CLEANUP", "function": "LESS_NAME_CLEANUP",
"type": "integer.checkbox", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0, "default_value": 0,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -630,7 +630,7 @@
}, },
{ {
"function": "NAME_CLEANUP_REGEX", "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" ], "default_value": ["XC5fYWlycGxheQ==", "XC5fdGNw", "XC5sb2NhbGRvbWFpbg==", "XC5sb2NhbA==", "XC5fZXNwaG9tZWxpYg==", "XC5fZ29vZ2xlY2FzdA==", "XC5sYW4=", "XC5ob21l", "LVthLWZBLUYwLTldezMyfQ==", "Iy4q" ],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -45,7 +45,7 @@
"settings": [ "settings": [
{ {
"function": "RUN", "function": "RUN",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -87,7 +87,7 @@
}, },
{ {
"function": "CMD", "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 ", "default_value": "python3 /app/front/plugins/nmap_dev_scan/nmap_dev.py ",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -122,7 +122,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 300, "default_value": 300,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -157,7 +157,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -192,7 +192,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": [], "default_value": [],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -232,7 +232,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new"], "default_value": ["new"],
"options": [ "options": [
"new", "new",
@@ -272,7 +272,7 @@
}, },
{ {
"function": "ARGS", "function": "ARGS",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "sudo nmap -sn -PR -oX - ", "default_value": "sudo nmap -sn -PR -oX - ",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -354,7 +354,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -387,7 +387,7 @@
}, },
{ {
"function": "CMD", "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}", "default_value": "python3 /app/front/plugins/nmap_scan/script.py ips={ips} macs={macs} timeout={timeout} args={args}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -414,7 +414,7 @@
}, },
{ {
"function": "ARGS", "function": "ARGS",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "-p -10000", "default_value": "-p -10000",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -441,7 +441,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * *", "default_value": "0 2 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -468,7 +468,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -495,7 +495,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"], "default_value": ["Watched_Value1"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -527,7 +527,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": ["new", "watched-changed", "watched-not-changed"], "options": ["new", "watched-changed", "watched-not-changed"],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -29,7 +29,7 @@
"settings": [ "settings": [
{ {
"function": "INCLUDED_SECTIONS", "function": "INCLUDED_SECTIONS",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new_devices", "down_devices", "events"], "default_value": ["new_devices", "down_devices", "events"],
"options": [ "options": [
"new_devices", "new_devices",
@@ -70,7 +70,7 @@
}, },
{ {
"function": "alert_down_time", "function": "alert_down_time",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 5, "default_value": 5,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -89,7 +89,7 @@
}, },
{ {
"function": "new_dev_condition", "function": "new_dev_condition",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -108,7 +108,7 @@
}, },
{ {
"function": "event_condition", "function": "event_condition",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "", "default_value": "",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -36,7 +36,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -70,7 +70,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/nslookup_scan/nslookup.py", "default_value": "python3 /app/front/plugins/nslookup_scan/nslookup.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -105,7 +105,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/30 * * * *", "default_value": "*/30 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -140,7 +140,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -1,6 +1,6 @@
## Overview ## 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] > [!TIP]
> Some tip. > Some tip.
@@ -21,3 +21,5 @@ To set up the plugin correctly, make sure...
### Notes ### Notes
- Additional notes, limitations, Author info. - Additional notes, limitations, Author info.
Made with ❤ by [@FlyingToto](https://github.com/FlyingToto) 🙏

View File

@@ -39,7 +39,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
@@ -72,7 +72,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
@@ -100,7 +100,7 @@
}, },
{ {
"function": "url", "function": "url",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -120,7 +120,7 @@
}, },
{ {
"function": "sites", "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": [], "default_value": [],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -139,7 +139,7 @@
}, },
{ {
"function": "username", "function": "username",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -159,7 +159,7 @@
}, },
{ {
"function": "password", "function": "password",
"type": "password", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -179,7 +179,7 @@
}, },
{ {
"function": "force_overwrite", "function": "force_overwrite",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -198,7 +198,7 @@
}, },
{ {
"function": "CMD", "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", "default_value": "python3 /app/front/plugins/omada_sdn_imp/omada_sdn.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -233,7 +233,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -292,7 +292,7 @@
"Watched_Value3", "Watched_Value3",
"Watched_Value4" "Watched_Value4"
], ],
"type": "text.multiselect" "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
}, },
{ {
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
@@ -316,7 +316,7 @@
"watched-not-changed", "watched-not-changed",
"missing-in-last-scan" "missing-in-last-scan"
], ],
"type": "text.multiselect" "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
} }
], ],
"database_column_definitions": [ "database_column_definitions": [

View File

@@ -62,7 +62,7 @@
"settings": [ "settings": [
{ {
"function": "RUN", "function": "RUN",
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -96,7 +96,7 @@
}, },
{ {
"function": "CMD", "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}", "default_value": "python3 /app/front/plugins/pholus_scan/script.py userSubnets={subnets} timeoutSec={timeout}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -123,7 +123,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 300, "default_value": 300,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -150,7 +150,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "30 3 * * *", "default_value": "30 3 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -177,7 +177,7 @@
}, },
{ {
"function": "DAYS_DATA", "function": "DAYS_DATA",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -204,7 +204,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1", "Watched_Value2"], "default_value": ["Watched_Value1", "Watched_Value2"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -236,7 +236,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new"], "default_value": ["new"],
"options": [ "options": [
"new", "new",

View File

@@ -60,7 +60,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -93,7 +93,7 @@
}, },
{ {
"function": "CMD", "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", "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": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -120,7 +120,7 @@
}, },
{ {
"function": "DB_PATH", "function": "DB_PATH",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "/etc/pihole/pihole-FTL.db", "default_value": "/etc/pihole/pihole-FTL.db",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -147,7 +147,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/30 * * * *", "default_value": "*/30 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -174,7 +174,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1", "Watched_Value2"], "default_value": ["Watched_Value1", "Watched_Value2"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -206,7 +206,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new"], "default_value": ["new"],
"options": [ "options": [
"new", "new",

View File

@@ -47,7 +47,7 @@
"settings": [ "settings": [
{ {
"function": "enable_password", "function": "enable_password",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -66,7 +66,7 @@
}, },
{ {
"function": "password", "function": "password",
"type": "password.SHA256", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": ["sha256"]}]},
"maxLength": 50, "maxLength": 50,
"default_value": "123456", "default_value": "123456",
"options": [], "options": [],

View File

@@ -339,7 +339,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -372,7 +372,7 @@
}, },
{ {
"function": "CMD", "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}", "default_value": "python3 /app/front/plugins/snmp_discovery/script.py routers={s-quote}{routers}{s-quote}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -399,7 +399,7 @@
}, },
{ {
"function": "routers", "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": [ "default_value": [
"snmpwalk -v 2c -c public -OXsq 192.168.1.1 .1.3.6.1.2.1.3.1.1.2" "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", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * *", "default_value": "0 2 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -455,7 +455,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 5, "default_value": 5,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -486,7 +486,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"], "default_value": ["Watched_Value1"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -518,7 +518,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": [ "options": [
"new", "new",

View File

@@ -39,7 +39,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
@@ -74,7 +74,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
@@ -102,7 +102,7 @@
}, },
{ {
"function": "api_token", "function": "api_token",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -122,7 +122,7 @@
}, },
{ {
"function": "encryption_key", "function": "encryption_key",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -142,7 +142,7 @@
}, },
{ {
"function": "hub_url", "function": "hub_url",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
@@ -163,7 +163,7 @@
}, },
{ {
"function": "node_name", "function": "node_name",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": "", "default_value": "",
"options": [], "options": [],
@@ -183,7 +183,7 @@
}, },
{ {
"function": "devices", "function": "devices",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -202,7 +202,7 @@
}, },
{ {
"function": "plugins", "function": "plugins",
"type": "list.select", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": [], "default_value": [],
"options": ["{value}"], "options": ["{value}"],
@@ -229,7 +229,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/sync/sync.py", "default_value": "python3 /app/front/plugins/sync/sync.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -264,7 +264,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30, "default_value": 30,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -28,7 +28,7 @@
"settings": [ "settings": [
{ {
"function": "shown_cards", "function": "shown_cards",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"maxLength": 50, "maxLength": 50,
"default_value": [ "default_value": [
"my_devices", "my_devices",
@@ -64,7 +64,7 @@
}, },
{ {
"function": "hide_empty", "function": "hide_empty",
"type": "boolean", "type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false, "default_value": false,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -25,3 +25,6 @@ Allowing Un-Discoverable devices like hubs, switches or APs to be added to the n
### Known Limitations ### Known Limitations
- Un-Discoverable Devices always show as offline. That is expected as they can not be discovered by NetAlertX. - 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. - 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) 🙏

View File

@@ -60,7 +60,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": ["disabled", "once", "schedule", "always_after_scan"], "options": ["disabled", "once", "schedule", "always_after_scan"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -95,7 +95,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/undiscoverables/script.py devices={devices}", "default_value": "python3 /app/front/plugins/undiscoverables/script.py devices={devices}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -130,7 +130,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10, "default_value": 10,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -165,7 +165,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": [], "default_value": [],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -200,7 +200,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": [], "default_value": [],
"options": [ "options": [
"new", "new",
@@ -240,7 +240,7 @@
}, },
{ {
"function": "devices_to_import", "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"], "default_value": ["dummy_router"],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -275,7 +275,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *", "default_value": "*/5 * * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -483,7 +483,7 @@
"always_after_scan", "always_after_scan",
"on_new_device" "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}", "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": [], "options": [],
"type": "text" "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
}, },
{ {
"default_value": "", "default_value": "",
@@ -545,7 +545,7 @@
} }
], ],
"options": [], "options": [],
"type": "text" "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
}, },
{ {
"default_value": "", "default_value": "",
@@ -572,7 +572,7 @@
} }
], ],
"options": [], "options": [],
"type": "password" "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]}
}, },
{ {
"default_value": "192.168.1.1", "default_value": "192.168.1.1",
@@ -599,7 +599,7 @@
} }
], ],
"options": [], "options": [],
"type": "text" "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
}, },
{ {
"default_value": "8443", "default_value": "8443",
@@ -626,7 +626,7 @@
} }
], ],
"options": [], "options": [],
"type": "text" "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
}, },
{ {
"default_value": "false", "default_value": "false",
@@ -653,11 +653,11 @@
} }
], ],
"options": ["true", "false"], "options": ["true", "false"],
"type": "text.select" "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}
}, },
{ {
"function": "version", "function": "version",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "v4", "default_value": "v4",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -707,7 +707,7 @@
} }
], ],
"options": [], "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 * * *", "default_value": "0 2 * * *",
@@ -734,7 +734,7 @@
} }
], ],
"options": [], "options": [],
"type": "text" "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
}, },
{ {
"default_value": 5, "default_value": 5,
@@ -769,7 +769,7 @@
} }
], ],
"options": [], "options": [],
"type": "integer" "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}
}, },
{ {
"default_value": ["Watched_Value1", "Watched_Value4"], "default_value": ["Watched_Value1", "Watched_Value4"],
@@ -801,7 +801,7 @@
"Watched_Value3", "Watched_Value3",
"Watched_Value4" "Watched_Value4"
], ],
"type": "text.multiselect" "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
}, },
{ {
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
@@ -833,7 +833,7 @@
"watched-not-changed", "watched-not-changed",
"missing-in-last-scan" "missing-in-last-scan"
], ],
"type": "text.multiselect" "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
}, },
{ {
"default_value": "disabled", "default_value": "disabled",
@@ -868,7 +868,7 @@
} }
], ],
"options": ["disabled", "once", "always"], "options": ["disabled", "once", "always"],
"type": "text.select" "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}
} }
] ]
} }

View File

@@ -41,7 +41,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "schedule", "default_value": "schedule",
"options": ["disabled", "once", "schedule", "always_after_scan"], "options": ["disabled", "once", "schedule", "always_after_scan"],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -72,7 +72,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "readonly", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/vendor_update/script.py", "default_value": "python3 /app/front/plugins/vendor_update/script.py",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -107,7 +107,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 4 * * 3", "default_value": "0 4 * * 3",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -142,7 +142,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 600, "default_value": 600,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -177,7 +177,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"], "default_value": ["Watched_Value1"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -213,7 +213,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": [ "options": [
"new", "new",

View File

@@ -344,7 +344,7 @@
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": ["run"],
"type": "text.select", "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled", "default_value": "disabled",
"options": [ "options": [
"disabled", "disabled",
@@ -377,7 +377,7 @@
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/website_monitor/script.py urls={urls}", "default_value": "python3 /app/front/plugins/website_monitor/script.py urls={urls}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -404,7 +404,7 @@
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * *", "default_value": "0 2 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -431,7 +431,7 @@
}, },
{ {
"function": "API_SQL", "function": "API_SQL",
"type": "text", "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "SELECT * FROM plugin_website_monitor", "default_value": "SELECT * FROM plugin_website_monitor",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -458,7 +458,7 @@
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 5, "default_value": 5,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -489,7 +489,7 @@
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"], "default_value": ["Watched_Value1"],
"options": [ "options": [
"Watched_Value1", "Watched_Value1",
@@ -521,7 +521,7 @@
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"], "default_value": ["new", "watched-changed"],
"options": [ "options": [
"new", "new",
@@ -553,7 +553,7 @@
}, },
{ {
"function": "urls_to_check", "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"], "default_value": ["https://google.com", "https://duck.com"],
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],
@@ -580,7 +580,7 @@
}, },
{ {
"function": "SQL_internet_ip", "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'", "default_value": "SELECT dev_LastIP FROM Devices WHERE dev_MAC = 'Internet'",
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -30,7 +30,7 @@
"settings": [ "settings": [
{ {
"function": "AppEvents_hist", "function": "AppEvents_hist",
"type": "integer", "type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 5000, "default_value": 5000,
"options": [], "options": [],
"localized": ["name", "description"], "localized": ["name", "description"],

View File

@@ -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 // go thru all settings and collect settings per settings prefix
settingsData.forEach((set) => { settingsData.forEach((set) => {
let val = set['Value']; const val = set['Value'];
const codeName = set['Code_Name']; const codeName = set['Code_Name'];
const setType = set['Type'].toLowerCase(); const setType = set['Type'];
const isMetadata = codeName.includes('__metadata'); const isMetadata = codeName.includes('__metadata');
// is this isn't a metadata entry, get corresponding metadata object from the dummy setting // is this isn't a metadata entry, get corresponding metadata object from the dummy setting
const setObj = isMetadata ? {} : JSON.parse(getSetting(`${codeName}__metadata`)); 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
<div class="table_cell setting_description"> <div class="table_cell setting_description">
${getString(codeName + '_description', set['Description'])} ${getString(codeName + '_description', set['Description'])}
</div> </div>
<div class="table_cell setting_input input-group"> <div class="table_cell setting_input input-group col-sm-12">
`; `;
// OVERRIDE // OVERRIDE
@@ -456,139 +456,84 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
} }
// INPUT // INPUT
// pre-processing done, render setting based on type
let inputHtml = ""; // Parse the setType JSON string into an object
if (setType.startsWith('text') || setType.startsWith('string') || setType.startsWith('date-time') ) { let inputHtml = '';
// --- process text --- const setTypeObject = JSON.parse(setType.replace(/'/g, '"'));
if(setType.includes(".select"))
{
inputHtml = generateOptions(pluginsData, set, inputHtml, isMultiSelect = false)
} else if(setType.includes(".multiselect")) const dataType = setTypeObject.dataType;
{ const elements = setTypeObject.elements || [];
inputHtml = generateOptions(pluginsData, set, inputHtml, isMultiSelect = true)
} else{
// if it's overridable set readonly accordingly // Iterate through each element in elements array
if(overridable) elements.forEach(elementObj => {
{ const { elementType, elementOptions = [], transformers = [] } = elementObj;
override ? readonly = "" : readonly = " readonly" ; const {
} inputType,
readOnly,
isMultiSelect,
cssClasses,
placeholder,
suffix,
sourceIds,
separator,
editable,
valRes,
getStringKey,
onClick
} = handleElementOptions(codeName, elementOptions, transformers, val);
inputHtml = `<input class="form-control" onChange="settingsChanged()" my-data-type="${setType}" id="${codeName}" value="${val}" ${readonly}/>`; // Generate HTML based on dataType and elementType
} switch (elementType) {
} else if (setType === 'integer') { case 'select':
// --- process integer --- inputHtml = generateOptions(pluginsData, set, inputHtml, dataType, isMultiSelect, editable, transformers);
inputHtml = `<input onChange="settingsChanged()" my-data-type="${setType}" class="form-control" id="${codeName}" type="number" value="${val}"/>`; break;
} else if (setType.startsWith('password')) {
// --- process password --- case 'input':
inputHtml = `<input onChange="settingsChanged()" my-data-type="${setType}" class="form-control input" id="${codeName}" type="password" value="${val}"/>`;
} else if (setType === 'readonly') {
// --- process readonly ---
inputHtml = `<input class="form-control input" my-data-type="${setType}" id="${codeName}" value="${val}" readonly/>`;
} else if (setType === 'boolean' || setType === 'integer.checkbox') {
// --- process boolean ---
let checked = val === 'True' || val === '1' ? 'checked' : ''; let checked = val === 'True' || val === '1' ? 'checked' : '';
inputType === 'checkbox' ? inputClass = 'checkbox' : inputClass = 'form-control';
// if it's overridable set readonly accordingly
if(overridable)
{
override ? disabled = "" : disabled = " disabled" ;
}
inputHtml = `<input onChange="settingsChanged()" my-data-type="${setType}" class="checkbox" id="${codeName}" type="checkbox" value="${val}" ${checked} ${disabled}/>`;
} else if (setType === 'integer.select') {
inputHtml = generateOptions(pluginsData, set, inputHtml)
} else if (setType === 'subnets') {
// --- process subnets ---
inputHtml = `
<div class="row form-group">
<div class="col-xs-5">
<input class="form-control" id="ipMask" type="text" placeholder="192.168.1.0/24"/>
</div>
<div class="col-xs-4">
<input class="form-control" id="ipInterface" type="text" placeholder="eth0" />
</div>
<div class="col-xs-3">
<button class="btn btn-primary" onclick="addInterface();initListInteractionOptions('${codeName}')">${getString("Gen_Add")}</button>
</div>
</div>
<div class="form-group">
<select class="form-control" my-data-type="${setType}" name="${codeName}" id="${codeName}" onchange="initListInteractionOptions(${codeName})" multiple readonly>`;
saved_values = createArray(val);
saved_values.forEach(saved_val => {
inputHtml += `<option value="${saved_val}" >${saved_val}</option>`;
});
inputHtml += `</select>
</div>
<div class="col-xs-12">
<button class="btn btn-primary" my-input="${codeName}" onclick="removeFromList(this)">
${getString("Gen_Remove_Last")}
</button>
<button class="btn btn-primary" my-input="${codeName}" onclick="removeAllOptions(this)">
${getString("Gen_Remove_All")}
</button>
</div>`;
} else if (setType.startsWith('list')) {
// --- process list ---
inputHtml += ` inputHtml += `
<div class="row form-group"> <input
<div class="col-xs-9">` class="${inputClass} ${cssClasses}"
onChange="settingsChanged()"
my-data-type="${dataType}"
id="${codeName}${suffix}"
type="${inputType}"
value="${valRes}"
${readOnly}
${checked}
placeholder="${placeholder}"
/>`;
break;
case 'button':
if(setType.includes(".select")) // not tested
{
inputHtml += generateOptions(pluginsData, set, inputHtml, isMultiSelect = false, isValueSource = false)
}
else if(setType.includes(".multiselect"))
{
inputHtml += generateOptions(pluginsData, set, inputHtml, isMultiSelect = true)
}
else
{
inputHtml += ` inputHtml += `
<input class="form-control" type="text" id="${codeName}_input" placeholder="Enter value"/> <button
`; class="btn btn-primary ${cssClasses}"
my-input-from="${sourceIds}"
my-input-to="${codeName}"
onclick="${onClick}">
${getString(getStringKey)}
</button>`;
break;
case 'textarea':
inputHtml += `
<textarea
class="form-control input"
my-data-type="${dataType}"
id="${codeName}"
${readOnly}>
${val}
</textarea>`;
break;
default:
console.warn(`Unknown element type: ${elementType}`);
} }
inputHtml += `</div>
<div class="col-xs-3">
<button class="btn btn-primary" my-input-from="${codeName}_input" my-input-to="${codeName}" onclick="addList(this, false);initListInteractionOptions('${codeName}')">${getString("Gen_Add")}</button>
</div>
</div>
<div class="form-group">
<select class="form-control" my-data-type="${setType}" name="${codeName}" id="${codeName}" multiple readonly>`;
let saved_values = createArray(val);
saved_values.forEach(saved_val => {
inputHtml += `<option value="${saved_val}" >${saved_val}</option>`;
}); });
inputHtml += '</select></div>' +
`<div>
<button class="btn btn-primary" my-input="${codeName}" onclick="removeFromList(this)">
${getString("Gen_Remove_Last")}
</button>
<button class="btn btn-primary" my-input="${codeName}" onclick="removeAllOptions(this)">
${getString("Gen_Remove_All")}
</button>
</div>`;
} else if (setType === 'json') {
// --- process json ---
inputHtml = `<textarea class="form-control input" my-data-type="${setType}" id="${codeName}" readonly>${JSON.stringify(val, null, 2)}</textarea>`;
}
// EVENTS // EVENTS
// process events (e.g. run ascan, or test a notification) if associated with the setting // process events (e.g. run ascan, or test a notification) if associated with the setting
let eventsHtml = ""; let eventsHtml = "";
@@ -618,20 +563,13 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
// generate settings in the correct prefix (group) section // generate settings in the correct prefix (group) section
$(`#${prefix} .panel-body`).append(setHtml); $(`#${prefix} .panel-body`).append(setHtml);
// init remove and edit listitem click gestures
if(['subnets'].includes(setType) || setType.startsWith('list'))
{
initListInteractionOptions(codeName)
}
} }
}); });
} }
// init finished // init finished
initListInteractionOptions() // init remove and edit listitem click gestures
setupSmoothScrolling() setupSmoothScrolling()
hideSpinner() hideSpinner()
@@ -666,8 +604,6 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
var settingsArray = []; var settingsArray = [];
// collect values for each of the different input form controls // 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 settings to determine setting type to store values appropriately
$.get('api/table_settings.json?nocache=' + Date.now(), function(res) { $.get('api/table_settings.json?nocache=' + Date.now(), function(res) {
// loop through the settings definitions from the json // loop through the settings definitions from the json
@@ -677,38 +613,69 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
setType = set["Type"] setType = set["Type"]
setCodeName = set["Code_Name"] 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;
const temp = $(`#${setCodeName}`).is(':checked') ? 1 : 0; if (setTypeObject.dataType === "string" ||
settingsArray.push([prefix, setCodeName, setType, temp]); (setTypeObject.dataType === "integer" && (inputType === "number" || inputType === "text"))) {
} 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 = []; const temps = [];
$(`#${setCodeName} option`).each(function (i, selected) { $(`#${setCodeName} option${additionalSelector}`).each(function() {
const vl = $(selected).val(); const vl = $(this).val();
if (vl !== '') { if (vl !== '') {
temps.push(vl); temps.push(vl);
} }
}); });
settingsArray.push([prefix, setCodeName, setType, JSON.stringify(temps)]); value = JSON.stringify(temps);
} else if (setType === 'json') { value = applyTransformers(value, transformers);
const temps = $('#'+setCodeName).val(); settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]);
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)) } else if (setTypeObject.dataType === "json") {
{
temps = CryptoJS.SHA256(temps).toString(CryptoJS.enc.Hex); value = $('#' + setCodeName).val();
} value = applyTransformers(value, transformers);
settingsArray.push([prefix, setCodeName, setType, temps]); 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)) 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 // trigger a save settings event in the backend
$.ajax({ $.ajax({
method: "POST", method: "POST",
@@ -734,7 +702,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
window.onbeforeunload = null; window.onbeforeunload = null;
// Reloads the current page // Reloads the current page
setTimeout("clearCache()", 5000); // setTimeout("clearCache()", 5000);
} else{ } else{
// something went wrong // something went wrong
// write_notification(data, 'interrupt') // write_notification(data, 'interrupt')

View File

@@ -2,6 +2,7 @@
import sqlite3 import sqlite3
import base64 import base64
import json
# Register NetAlertX modules # Register NetAlertX modules
from const import fullDbPath, sql_devices_stats, sql_devices_all, sql_generateGuid from const import fullDbPath, sql_devices_stats, sql_devices_all, sql_generateGuid
@@ -556,6 +557,7 @@ class DB():
result["data"].append(tmp) 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 ', len(rows), " rows with columns: ", columnNames])
# mylog('debug',[ '[Database] - get_table_as_json - returning json ', json.dumps(result) ])
return json_obj(result, columnNames) return json_obj(result, columnNames)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------

View File

@@ -312,59 +312,100 @@ def get_setting_value(key):
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Convert the setting value to the corresponding python type # 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----' value = '----not processed----'
# Handle different types of settings # "type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
if set_type in ['text', 'string', 'password', 'password.SHA256', 'readonly', 'text.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']: setTypJSN = json.loads(str(set_type).replace('"','\"').replace("'",'"'))
value = True
elif isinstance(set_value, int) and set_value == 1:
value = True
elif isinstance(set_value, bool):
value = set_value
elif set_type in ['integer.select', 'integer']: # Handle different types of settings based on set_type dictionary
value = int(set_value) dataType = setTypJSN.get('dataType', '')
# belwo covers 'text.multiselect', 'list', 'subnets', 'list.select', 'list' elements = setTypJSN.get('elements', [])
elif set_type in ['subnets', 'text.multiselect' ] or 'list' in set_type:
mylog('debug', [f'[SETTINGS] Handling set_type: "{set_type}", set_value: "{set_value}"']) # 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
# Handle string # 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): 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 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 = 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)
elif dataType == 'boolean' and elementType == 'input':
value = set_value.lower() in ['true', '1']
elif dataType == 'array' and elementType == 'select':
if isinstance(set_value, str):
try:
value = json.loads(set_value.replace("'", "\"")) value = json.loads(set_value.replace("'", "\""))
except json.JSONDecodeError as e:
# Assuming set_value is a list at this point print(f"Error decoding JSON array: {e}")
if isinstance(set_value, list): value = []
if 'base64' in set_type: elif isinstance(set_value, list):
tmp_value = []
for item in set_value:
tmp_value.append(base64.b64decode(item))
set_value = tmp_value
value = set_value value = set_value
elif set_type == '.template': elif dataType == 'object' and elementType == 'input':
# Assuming set_value is a JSON object in this case if isinstance(set_value, str):
try:
value = json.loads(set_value) 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()
# log debug info if not processed
if value == '----not processed----': if value == '----not processed----':
mylog('none', [f'[SETTINGS] ⚠ ERROR - set_type not handled:{set_type}']) mylog('none', [f'[HELPER] ⚠ ERROR not processed set_type: {set_type} '])
mylog('none', [f'[SETTINGS] ⚠ ERROR - setting json:{json.dumps(set_value)}']) mylog('none', [f'[HELPER] ⚠ ERROR not processed set_value: {set_value} '])
value = ''
return value return value
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Generate a WHERE condition for SQLite based on a list of values. # Generate a WHERE condition for SQLite based on a list of values.
def list_to_where(logical_operator, column_name, condition_operator, values_list): def list_to_where(logical_operator, column_name, condition_operator, values_list):
@@ -601,6 +642,10 @@ import dns.resolver
def cleanDeviceName(str, match_IP): def cleanDeviceName(str, match_IP):
# add matching info
if match_IP:
str = str + " (IP match)"
if get_setting_value('NEWDEV_LESS_NAME_CLEANUP'): if get_setting_value('NEWDEV_LESS_NAME_CLEANUP'):
mylog('debug', ["[Name cleanup] Using new cleanDeviceName(" + str + ")"]) mylog('debug', ["[Name cleanup] Using new cleanDeviceName(" + str + ")"])
@@ -628,9 +673,7 @@ def cleanDeviceName(str, match_IP):
if str.endswith('.'): if str.endswith('.'):
str = str[:-1] str = str[:-1]
# add matching info
if match_IP:
str = str + " (IP match)"
# done # done
mylog('debug', ["[Name cleanup] cleanDeviceName = " + str]) mylog('debug', ["[Name cleanup] cleanDeviceName = " + str])
@@ -656,9 +699,6 @@ def cleanDeviceName(str, match_IP):
if str.endswith('.'): if str.endswith('.'):
str = str[:-1] str = str[:-1]
if match_IP:
str = str + " (IP match)"
mylog('debug', ["cleanDeviceName = " + str]) mylog('debug', ["cleanDeviceName = " + str])
return str return str

View File

@@ -48,7 +48,7 @@ def ccd(key, default, config_dir, name, inputtype, options, group, events=None,
result = result.replace('\'', "{s-quote}") result = result.replace('\'', "{s-quote}")
# Create the tuples # 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)) settings_tuple = (key, name, desc, inputtype, options, regex, result, group, str(events))
# Update or append the tuples in the lists # 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 # Save metadata in dummy setting if not a metadata key
if '__metadata' not in 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.mySettingsSQLsafe = update_or_append(conf.mySettingsSQLsafe, metadata_tuple, f'{key}__metadata')
conf.mySettings = update_or_append(conf.mySettings, 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 = {}) # 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.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', 'subnets', '', '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', 'text.select', "['none', 'minimal', 'verbose', 'debug']", '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', 'text', '', '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', 'integer', '', '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', 'text', '', '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', 'integer', '', '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', 'integer', "0", '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', 'text', '', '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', 'list', '', '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 # 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_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', 'list', "", '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', 'list', "", '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', 'integer', "", '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', 'text.multiselect', "['Tile Cards', 'Device Presence']", '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', 'text.multiselect', "['online', 'offline', 'archived']", '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', 'text.multiselect', "['online', 'offline', 'archived', 'new', 'down']", '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 # Init timezone in case it changed
conf.tz = timezone(conf.TIMEZONE) conf.tz = timezone(conf.TIMEZONE)
@@ -288,7 +288,7 @@ def importConfigs (db, all_plugins):
# save the newly discovered plugins as options and default values # 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] Number of Plugins to load: ', len(loaded_plugins_prefixes)])
mylog('none', ['[Config] Plugins to load: ', loaded_plugins_prefixes]) mylog('none', ['[Config] Plugins to load: ', loaded_plugins_prefixes])

View File

@@ -306,7 +306,7 @@ def write_notification(content, level, timestamp):
if file_contents == '': if file_contents == '':
file_contents = '[]' # If file is empty, initialize as empty list 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 notifications = json.loads(file_contents) # Parse JSON data
else: else:
mylog('error', 'File is not of type _io.TextIOWrapper') mylog('error', 'File is not of type _io.TextIOWrapper')

View File

@@ -33,30 +33,35 @@ class plugin_param:
setVal = inputValue["Value"] # setting value setVal = inputValue["Value"] # setting value
setTyp = inputValue["Type"] # setting type setTyp = inputValue["Type"] # setting type
noConversion = ['text', 'string', 'integer', 'boolean', 'password', 'password.SHA256', 'readonly', 'integer.select', 'text.select', 'integer.checkbox' ] setTypJSN = json.loads(setTyp.replace('"','\"').replace("'",'"'))
arrayConversion = ['text.multiselect', 'list', 'list.select', 'subnets']
jsonConversion = ['.template']
mylog('debug', f'[Plugins] setTyp: {setTyp}') 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 # store number of returned values
paramValuesCount = len(setVal) paramValuesCount = len(setVal)
if setTyp in noConversion: if dataType in ['string','integer', 'boolean']:
resolved = setVal resolved = setVal
elif setTyp in arrayConversion: elif dataType == 'array':
# make them safely passable to a python or linux script # make them safely passable to a python or linux script
resolved = list_to_csv(setVal) resolved = list_to_csv(setVal)
else: else:
for item in jsonConversion: mylog('none', ['[Plugins] ⚠ ERROR: Parameter probably not converted.'])
if setTyp.endswith(item):
return json.dumps(setVal) return json.dumps(setVal)
else:
mylog('none', ['[Plugins] ⚠ ERROR: Parameter not converted.'])
# Get SQL result # Get SQL result
if param["type"] == "sql": if param["type"] == "sql":

View File

@@ -108,6 +108,8 @@ def get_notifications (db):
} }
json_down_devices = json_obj.json["data"] json_down_devices = json_obj.json["data"]
mylog('debug', ['[Notification] json_down_devices: ', json.dumps(json_down_devices) ])
if 'down_reconnected' in sections: if 'down_reconnected' in sections:
# Compose Reconnected Down Section # Compose Reconnected Down Section
# - select only Devices, that were previously down and now are Connected # - select only Devices, that were previously down and now are Connected
@@ -128,6 +130,8 @@ def get_notifications (db):
} }
json_down_reconnected = json_obj.json["data"] json_down_reconnected = json_obj.json["data"]
mylog('debug', ['[Notification] json_down_reconnected: ', json.dumps(json_down_reconnected) ])
if 'events' in sections: if 'events' in sections:
# Compose Events Section # 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 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