⚙ 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
> {
> "function": "CMD",
> "type": "text",
> "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
> "default_value":"SELECT dv.dev_Name as Object_PrimaryID, cast(dv.dev_LastIP as VARCHAR(100)) || ':' || cast( SUBSTR(ns.Port ,0, INSTR(ns.Port , '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, ns.Service as Watched_Value1, ns.State as Watched_Value2, 'null' as Watched_Value3, 'null' as Watched_Value4, ns.Extra as Extra FROM (SELECT * FROM Nmap_Scan) ns LEFT JOIN (SELECT dev_Name, dev_MAC, dev_LastIP FROM Devices) dv ON ns.MAC = dv.dev_MAC",
> "options": [],
> "localized": ["name", "description"],
@@ -222,7 +222,7 @@ For example for `PIHOLE` (`"unique_prefix": "PIHOLE"`) it is `EXTERNAL_PIHOLE.`.
> ...
>{
> "function": "DB_PATH",
> "type": "readonly",
> "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
> "default_value":"/etc/pihole/pihole-FTL.db",
> "options": [],
> "localized": ["name", "description"],
@@ -247,7 +247,7 @@ The actual SQL query you want to execute is then stored as a `CMD` setting, simi
>```json
>{
> "function": "CMD",
> "type": "text",
> "type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
> "default_value":"SELECT hwaddr as Object_PrimaryID, cast('http://' || (SELECT ip FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1) as VARCHAR(100)) || ':' || cast( SUBSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1), 0, INSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1), '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, macVendor as Watched_Value1, lastQuery as Watched_Value2, (SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC, ip LIMIT 1) as Watched_Value3, 'null' as Watched_Value4, '' as Extra, hwaddr as ForeignKey FROM EXTERNAL_PIHOLE.network WHERE hwaddr NOT LIKE 'ip-%' AND hwaddr <> '00:00:00:00:00:00'; ",
> "options": [],
> "localized": ["name", "description"],
@@ -425,7 +425,7 @@ The `params` array in the `config.json` is used to enable the user to change the
```json
{
"function": "CMD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value":"python3 /app/front/plugins/website_monitor/script.py urls={urls}",
"options": [],
"localized": ["name", "description"],
@@ -508,18 +508,7 @@ Required attributes are:
| -------- | ----------- |
| `"function"` | Specifies the function the setting drives or a simple unique code name. See Supported settings function values for options. |
| `"type"` | Specifies the form control used for the setting displayed in the Settings page and what values are accepted. Supported options include: |
| | - `text` |
| | - `integer` |
| | - `boolean` |
| | - `password` |
| | - `readonly` |
| | - `integer.select` |
| | - `text.select` |
| | - `text.multiselect` |
| | - `list` |
| | - `list.select` |
| | - `integer.checkbox` |
| | - `text.template` |
| | - `{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": ["sha256"]}]}` |
| `"localized"` | A list of properties on the current JSON level that need to be localized. |
| `"name"` | Displayed on the Settings page. An array of localized strings. See Localized strings below. |
| `"description"` | Displayed on the Settings page. An array of localized strings. See Localized strings below. |
@@ -562,7 +551,7 @@ You can have any `"function": "my_custom_name"` custom name, however, the ones l
> ```json
> {
> "function": "RUN",
> "type": "text.select",
> "type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
> "default_value":"disabled",
> "options": ["disabled", "once", "schedule", "always_after_scan", "on_new_device"],
> "localized": ["name", "description"],
@@ -627,7 +616,7 @@ The UI will adjust how columns are displayed in the UI based on the resolvers de
```json
"function": "dev_DeviceType",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30,
"default_value": "",
"options": ["{value}"],

View File

@@ -824,12 +824,12 @@ function initializeCombos () {
initializeCombo ( '#dropdownDevices', 'getDevices', 'txtFromDevice', false);
// Initiate dropdown
// function initSettingDropdown(settingKey, // Identifier for the setting
// valuesArray, // Array of values to be pre-selected in the dropdown
// targetLocation, // ID of the HTML element where dropdown should be rendered (will be replaced)
// callbackToGenerateEntries, // Callback function to generate entries based on options
// targetField, // Target field or element where selected value should be applied or updated
// nameTransformer) // callback to transform name
// initSettingDropdown(settingKey, // Identifier for the setting
// valuesArray, // Array of values to be pre-selected in the dropdown
// targetLocation, // ID of the HTML element where dropdown should be rendered (will be replaced)
// callbackToGenerateEntries, // Callback function to generate entries based on options
// targetField, // Target field or element where selected value should be applied or updated
// nameTransformer) // callback to transform name
initSettingDropdown("NEWDEV_dev_Icon", [], "dropdownIcon_tmp", genListWithInputSet, 'txtIcon', atob )

View File

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

View File

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

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
// -------------------------------------------------------------------
@@ -245,21 +252,19 @@ function settingsCollectedCorrectly(settingsArray, settingsJSON_DB) {
// -------------------------------------------------------------------
// ---------------------------------------------------------
// Add item to list
function addList(element, clearInput = true)
{
const fromId = $(element).attr('my-input-from');
const toId = $(element).attr('my-input-to');
const 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);
console.log(toId);
console.log($(`#${toId}`));
$(`#${toId}`).append($("<option ></option>").attr("value", input).text(input));
const el = $(`#${toId}`).append(newOption);
// clear input
if (clearInput)
@@ -267,13 +272,17 @@ function addList(element, clearInput = true)
$(`#${fromId}`).val("");
}
// Initialize interaction options only for the newly added option
initListInteractionOptions(newOption);
settingsChanged();
}
// ---------------------------------------------------------
function removeFromList(element)
{
settingsChanged();
$(`#${$(element).attr('my-input')}`).find("option:last").remove();
$(`#${$(element).attr('my-input-to')}`).find("option:last").remove();
}
// ---------------------------------------------------------
@@ -320,7 +329,7 @@ function removeOptionItem(option) {
function removeAllOptions(element)
{
settingsChanged();
$(`#${$(element).attr('my-input')}`).empty();
$(`#${$(element).attr('my-input-to')}`).empty();
}
@@ -331,12 +340,14 @@ function removeAllOptions(element)
let clickCounter = 0;
// Function to initialize list interaction options
function initListInteractionOptions(selectorId) {
// Select all options within the specified selector
const $options = $(`#${selectorId} option`);
// Add class to make options interactable
$options.addClass('interactable-option');
function initListInteractionOptions(element) {
if(element)
{
$options = $(element);
} else
{
$options = $(`.interactable-option`);
}
// Attach click event listener to options
$options.on('click', function() {
@@ -350,8 +361,6 @@ function initListInteractionOptions(selectorId) {
// Perform action based on click count
if (clickCounter === 1) {
// Single-click action
// btoa(iconHtml.replace(/"/g, "'") <-- encode
// atob() <--- decode
showModalFieldInput(
`<i class="fa-regular fa-pen-to-square"></i> ${getString('Gen_Update_Value')}`,
getString('settings_update_item_warning'),
@@ -371,6 +380,7 @@ function initListInteractionOptions(selectorId) {
clickCounter = 0;
}, 300); // Adjust delay as needed
});
}
@@ -490,39 +500,165 @@ function getParam(targetId, key, skipCache = false) {
}
// ---------------------------------------------------------
// generate a list of options for a input select
function generateOptions(pluginsData, set, input, isMultiSelect = false, isValueSource = true)
{
multi = isMultiSelect ? "multiple" : "";
// ---------------------------------------------------------
// generate a list of options for a input select
function generateOptions(pluginsData, set, input, dataType, isMultiSelect = false, editable = false, transformers = []) {
let multi = isMultiSelect ? "multiple" : "";
let valuesArray = createArray(set['Value']);
let settingKey = set['Code_Name'];
// editable ? classNames += " interactable-option" : classNames = ""
// optionsArray = getSettingOptions(set['Code_Name'] )
valuesArray = createArray(set['Value']);
// generate different ID depending on if it's the source for the value to be saved or only used as an input
// isValueSource ? id = settingKey : id = settingKey + '_input';
// main selection dropdown wrapper
input += `
<select onChange="settingsChanged()" my-data-type="${dataType}" my-editable="${editable}" class="form-control" name="${settingKey}" id="${settingKey}" ${multi}>
`;
// if available transformers are applied
valuesArray = valuesArray.map(value => applyTransformers(value, transformers));
// get all options
optionsArray = createArray(getSettingOptions(settingKey))
// loop over all options and select the ones selected in the valuesArray (saved by the user)
if(optionsArray.length > 0 )
{
// check if needs to be processed ASYNC
if(isSQLQuery(optionsArray[0]))
{
// create temporary placeholder
targetLocation = settingKey + "_temp_"
input += `<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;
}
// ------------------------------------------------------------
// 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;
}
// create unique ID
var targetLocation = set['Code_Name'] + "_initSettingDropdown";
// execute AJAX callabck + SQL query resolution
initSettingDropdown(set['Code_Name'] , valuesArray, targetLocation, generateDropdownOptions);
// ------------------------------------------------------------
// 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');";
// 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';
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;
}
});
// main selection dropdown wrapper
input += `
<select onChange="settingsChanged()"
my-data-type="${set['Type']}"
class="form-control"
name="${set['Code_Name']}"
id="${id}"
${multi}>
<option id="${targetLocation}" temporary="temporary"></option>
</select>`;
return input;
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
valuesArray, // Array of values to be pre-selected in the dropdown
targetLocation, // ID of the HTML element where dropdown should be rendered (will be replaced)
@@ -93,9 +93,15 @@ function initSettingDropdown(settingKey, // Identifier for the setting
// NOTE {value} options to replace with a setting or SQL value are handled in the cacheSettings() function
optionsArray = createArray(getSettingOptions(settingKey))
// check if the result is a SQL query
if(isSQLQuery(optionsArray[0]))
if(optionsArray.length > 0 && isSQLQuery(optionsArray[0]))
{
if (settingKey == "NEWDEV_dev_Network_Node_MAC_ADDR") {
console.log("isSQLQuery in initSettingDropdown");
}
readData(optionsArray[0], callbackToGenerateEntries, valuesArray, targetLocation, targetField, nameTransformer);
} else // this should be already an array, e.g. from a setting or pre-defined
@@ -111,8 +117,10 @@ function initSettingDropdown(settingKey, // Identifier for the setting
$("#" + targetLocation).replaceWith(optionsHtml);
}, 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">
@@ -102,22 +102,31 @@
// Append form groups to the column
for (let j = i * elementsPerColumn; j < Math.min((i + 1) * elementsPerColumn, columns.length); j++) {
let inputType;
const setTypeObject = JSON.parse(columns[j].Type.replace(/'/g, '"'));
// console.log(setTypeObject);
const lastElementObj = setTypeObject.elements[setTypeObject.elements.length - 1]
switch (columns[j].Type) {
case 'integer.checkbox':
case 'checkbox':
inputType = 'checkbox';
break;
case 'text.select':
inputType = 'text.select';
break;
default:
inputType = 'text';
break;
}
const { elementType, elementOptions = [], transformers = [] } = lastElementObj;
const {
inputType,
readOnly,
isMultiSelect,
cssClasses,
placeholder,
suffix,
sourceIds,
separator,
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"
@@ -147,15 +156,11 @@
}
} else {
} else if (lastElementObj.elementType === 'input'){
// Add classes specifically for checkboxes
if (inputType === 'checkbox') {
inputClass = 'checkbox';
inputType === 'checkbox' ? inputClass = 'checkbox' : inputClass = 'form-control';
} else {
inputClass = 'form-control';
}
input = `<input class="${inputClass}"
id="${columns[j].Code_Name}"

View File

@@ -306,7 +306,7 @@ function saveSettings()
$txt = $txt."# Generated: ".$timestamp." #\n";
$txt = $txt."# #\n";
$txt = $txt."# Config file for the LAN intruder detection app: #\n";
$txt = $txt."# https://github.com/jokob-sk/NetAlertX #\n";
$txt = $txt."# https://github.com/jokob-sk/NetAlertX #\n";
$txt = $txt."# #\n";
$txt = $txt."#-----------------AUTOGENERATED FILE-----------------#\n";
@@ -326,56 +326,68 @@ function saveSettings()
$txt .= "\n#---------------------------\n";
foreach ($decodedSettings as $setting) {
$settingGroup = $setting[0];
$settingKey = $setting[1];
$settingType = $setting[2];
$settingValue = $setting[3];
$settingGroup = $setting[0];
$settingKey = $setting[1];
$dataType = $setting[2];
$settingValue = $setting[3];
// sanity check
if($settingKey == "UI_LANG" && $settingValue == "")
{
// // Parse the settingType JSON
// $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.";
return;
}
}
if ($group == $settingGroup) {
if ($settingType == 'text' || $settingType == 'password' || $settingType == 'password.SHA256' || $settingType == 'readonly' || $settingType == 'text.select') {
$val = encode_single_quotes($settingValue);
$txt .= $settingKey . "='" . $val . "'\n";
} elseif ($settingType == 'integer' || $settingType == 'integer.select') {
$txt .= $settingKey . "=" . $settingValue . "\n";
} elseif ($settingType == 'boolean' || $settingType == 'integer.checkbox') {
if ($group == $settingGroup) {
if ($settingValue === true || $settingValue === 1 || strtolower($settingValue) === 'true') {
$val = "True";
} else {
$val = "False";
}
if ($dataType == 'string' ) {
$val = encode_single_quotes($settingValue);
$txt .= $settingKey . "='" . $val . "'\n";
} elseif ($dataType == 'integer') {
$txt .= $settingKey . "=" . $settingValue . "\n";
} elseif ($dataType == 'json') {
$txt .= $settingKey . "=" . $settingValue . "\n";
} elseif ($dataType == 'boolean') {
$val = ($settingValue === true || $settingValue === 1 || strtolower($settingValue) === 'true') ? "True" : "False";
$txt .= $settingKey . "=" . $val . "\n";
} elseif ($dataType == 'array' ) {
$temp = '';
$txt .= $settingKey . "=" . $val . "\n";
} elseif ($settingType == 'text.multiselect' || $settingType == 'subnets' || $settingType == 'list' || $settingType == 'list.select' || $settingType == 'list.base64') {
$temp = '';
if(is_array($settingValue) == FALSE)
{
$settingValue = json_decode($settingValue);
}
// skipping __metadata entries (?)
if (count($setting) > 3 && is_array($settingValue) == true) {
foreach ($settingValue as $val) {
$temp .= "'" . encode_single_quotes($val) . "',";
}
if(is_array($settingValue) == FALSE)
{
$settingValue = json_decode($settingValue);
}
$temp = substr_replace($temp, "", -1); // remove last comma ','
}
if (count($setting) > 3 && is_array($settingValue) == true) {
foreach ($settingValue as $val) {
$temp .= "'" . encode_single_quotes($val) . "',";
}
$temp = '['.$temp.']'; // wrap brackets
$txt .= $settingKey . "=" . $temp . "\n";
// $temp = '';
// if (is_array($settingValue) == FALSE) {
// $settingValue = json_decode($settingValue);
// }
// if (count($setting) > 3 && is_array($settingValue) == true) {
// foreach ($settingValue as $val) {
// $temp .= "'" . encode_single_quotes($val) . "',";
// }
// $temp = substr_replace($temp, "", -1); // remove last comma ','
// }
// $temp = '[' . $temp . ']'; // wrap brackets
// $txt .= $settingKey . "=" . $temp . "\n";
} else {
$txt .= $settingKey . "='⭕Not handled⭕'\n";
}
}
}
$temp = substr_replace($temp, "", -1); // remove last comma ','
}
$temp = '['.$temp.']'; // wrap brackets
$txt .= $settingKey . "=" . $temp . "\n";
} elseif ($settingType == 'json') {
$txt .= $settingKey . "=" . $settingValue . "\n";
}
}
}
}

View File

@@ -39,7 +39,7 @@
{
"function": "RUN",
"events": ["run"],
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled",
"options": [
@@ -66,7 +66,7 @@
},
{
"function": "RUN_SCHD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *",
"options": [],
"localized": ["name", "description"],
@@ -85,7 +85,7 @@
},
{
"function": "text_example",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50,
"default_value": "",
"options": [],
@@ -105,7 +105,7 @@
},
{
"function": "boolean_example",
"type": "boolean",
"type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false,
"options": [],
"localized": ["name", "description"],
@@ -124,7 +124,7 @@
},
{
"function": "list_example",
"type": "list",
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]},
"default_value": ["existing_entry_1", "existing_entry_2"],
"options": [],
"localized": ["name", "description"],
@@ -143,7 +143,7 @@
},
{
"function": "multiselect_example_from_setting",
"type": "text.multiselect",
"type": {"dataType":"array", "element": "select", "elementOptions" : ["multiple"] ,"transformers": []},
"maxLength": 50,
"default_value": [],
"options": ["{value}"],
@@ -170,7 +170,7 @@
},
{
"function": "CMD",
"type": "readonly",
"type": {"dataType":"string", "element": "input", "elementOptions" : ["readonly"] ,"transformers": []},
"default_value": "python3 /app/front/plugins/<plugin folder>/rename_me.py",
"options": [],
"localized": ["name", "description"],
@@ -189,7 +189,7 @@
},
{
"function": "RUN_TIMEOUT",
"type": "integer",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30,
"options": [],
"localized": ["name", "description"],

View File

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

View File

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

View File

@@ -56,6 +56,19 @@ def main():
# Retrieve new notifications
new_notifications = notifications.getNew()
# mylog('verbose', [f'[{pluginName}] new_notifications: ', new_notifications])
# mylog('verbose', [f'[{pluginName}] SMTP_SERVER: ', get_setting_value("SMTP_SERVER")])
# mylog('verbose', [f'[{pluginName}] SMTP_PORT: ', get_setting_value("SMTP_PORT")])
# mylog('verbose', [f'[{pluginName}] SMTP_SKIP_LOGIN: ', get_setting_value("SMTP_SKIP_LOGIN")])
# mylog('verbose', [f'[{pluginName}] SMTP_USER: ', get_setting_value("SMTP_USER")])
# mylog('verbose', [f'[{pluginName}] SMTP_PASS: ', get_setting_value("SMTP_PASS")])
# mylog('verbose', [f'[{pluginName}] SMTP_SKIP_TLS: ', get_setting_value("SMTP_SKIP_TLS")])
# mylog('verbose', [f'[{pluginName}] SMTP_FORCE_SSL: ', get_setting_value("SMTP_FORCE_SSL")])
# mylog('verbose', [f'[{pluginName}] SMTP_REPORT_TO: ', get_setting_value("SMTP_REPORT_TO")])
# mylog('verbose', [f'[{pluginName}] SMTP_REPORT_FROM: ', get_setting_value("SMTP_REPORT_FROM")])
# Process the new notifications (see the Notifications DB table for structure or check the /api/table_notifications.json endpoint)
for notification in new_notifications:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -414,7 +414,12 @@
{
"function": "RUN",
"events": ["run"],
"type": "text.select",
"type": {
"dataType": "string",
"elements": [
{ "elementType": "select", "elementOptions": [], "transformers": [] }
]
},
"default_value": "disabled",
"options": [
"disabled",
@@ -455,7 +460,12 @@
},
{
"function": "CMD",
"type": "text",
"type": {
"dataType": "string",
"elements": [
{ "elementType": "input", "elementOptions": [], "transformers": [] }
]
},
"default_value": "python3 /app/front/plugins/dhcp_leases/script.py paths={paths}",
"options": [],
"localized": ["name", "description"],
@@ -490,7 +500,63 @@
},
{
"function": "paths_to_check",
"type": "list",
"type": {
"dataType": "array",
"elements": [
{
"elementType": "input",
"elementOptions": [
{ "placeholder": "Enter value" },
{ "suffix": "_in" },
{ "cssClasses": "col-sm-10" },
{ "prefillValue": "null" }
],
"transformers": []
},
{
"elementType": "button",
"elementOptions": [
{ "sourceSuffixes": [] },
{ "separator": "" },
{ "cssClasses": "col-sm-3" },
{ "onClick": "removeAllOptions(this)" },
{ "getStringKey": "Gen_Remove_All" }
],
"transformers": []
},
{
"elementType": "button",
"elementOptions": [
{ "sourceSuffixes": [] },
{ "separator": "" },
{ "cssClasses": "col-sm-3" },
{ "onClick": "removeFromList(this)" },
{ "getStringKey": "Gen_Remove_Last" }
],
"transformers": []
},
{
"elementType": "button",
"elementOptions": [
{ "sourceSuffixes": ["_in"] },
{ "separator": "" },
{ "cssClasses": "col-sm-2" },
{ "onClick": "addList(this, false)" },
{ "getStringKey": "Gen_Add" }
],
"transformers": []
},
{
"elementType": "select",
"elementOptions": [
{ "multiple": "true" },
{ "readonly": "true" },
{ "editable": "true" }
],
"transformers": []
}
]
},
"default_value": ["/mnt/dhcp1.leases", "/mnt/dhcp2.leases"],
"options": [],
"localized": ["name", "description"],
@@ -525,7 +591,12 @@
},
{
"function": "RUN_SCHD",
"type": "text",
"type": {
"dataType": "string",
"elements": [
{ "elementType": "input", "elementOptions": [], "transformers": [] }
]
},
"default_value": "0 2 * * *",
"options": [],
"localized": ["name", "description"],
@@ -560,7 +631,16 @@
},
{
"function": "RUN_TIMEOUT",
"type": "integer",
"type": {
"dataType": "integer",
"elements": [
{
"elementType": "input",
"elementOptions": [{ "type": "number" }],
"transformers": []
}
]
},
"default_value": 5,
"options": [],
"localized": ["name", "description"],
@@ -595,7 +675,16 @@
},
{
"function": "WATCH",
"type": "text.multiselect",
"type": {
"dataType": "array",
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true" }],
"transformers": []
}
]
},
"default_value": ["Watched_Value1", "Watched_Value4"],
"options": [
"Watched_Value1",
@@ -635,7 +724,16 @@
},
{
"function": "REPORT_ON",
"type": "text.multiselect",
"type": {
"dataType": "array",
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true" }],
"transformers": []
}
]
},
"default_value": ["new", "watched-changed"],
"options": [
"new",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -28,7 +28,7 @@
"settings": [
{
"function": "ignored_MACs",
"type": "list",
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]},
"default_value": [],
"options": [],
"localized": ["name", "description"],
@@ -47,7 +47,7 @@
},
{
"function": "ignored_IPs",
"type": "list",
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]},
"default_value": [],
"options": [],
"localized": ["name", "description"],
@@ -66,7 +66,7 @@
},
{
"function": "dev_MAC",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50,
"default_value": "",
"options": [],
@@ -86,7 +86,7 @@
},
{
"function": "dev_Name",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50,
"default_value": "(unknown)",
"options": [],
@@ -106,7 +106,7 @@
},
{
"function": "dev_Owner",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30,
"default_value": "",
"options": ["{value}"],
@@ -133,7 +133,7 @@
},
{
"function": "dev_DeviceType",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 30,
"default_value": "",
"options": ["{value}"],
@@ -165,7 +165,7 @@
},
{
"function": "dev_Vendor",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 250,
"default_value": "",
"options": [],
@@ -185,7 +185,7 @@
},
{
"function": "dev_Favorite",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0,
"options": [],
"localized": ["name", "description"],
@@ -204,7 +204,7 @@
},
{
"function": "dev_Group",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 10,
"default_value": "",
"options": ["{value}"],
@@ -231,7 +231,7 @@
},
{
"function": "dev_Comments",
"type": "string",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "",
"options": [],
"localized": ["name", "description"],
@@ -250,7 +250,7 @@
},
{
"function": "dev_FirstConnection",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time",
"default_value": "",
"options": [],
@@ -270,7 +270,7 @@
},
{
"function": "dev_LastConnection",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time",
"default_value": "",
"options": [],
@@ -290,7 +290,7 @@
},
{
"function": "dev_LastIP",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"maxLength": 50,
"default_value": "",
"options": [],
@@ -310,7 +310,7 @@
},
{
"function": "dev_StaticIP",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0,
"options": [],
"localized": ["name", "description"],
@@ -329,7 +329,7 @@
},
{
"function": "dev_ScanCycle",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1,
"options": [],
"localized": ["name", "description"],
@@ -348,7 +348,7 @@
},
{
"function": "dev_LogEvents",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1,
"options": [],
"localized": ["name", "description"],
@@ -367,7 +367,7 @@
},
{
"function": "dev_AlertEvents",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1,
"options": [],
"localized": ["name", "description"],
@@ -386,7 +386,7 @@
},
{
"function": "dev_AlertDeviceDown",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0,
"options": [],
"localized": ["name", "description"],
@@ -405,7 +405,7 @@
},
{
"function": "dev_SkipRepeated",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": 0,
"options": ["{value}"],
"options_params": [
@@ -431,7 +431,7 @@
},
{
"function": "dev_LastNotification",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"format": "date-time",
"default_value": "",
"options": [],
@@ -451,7 +451,7 @@
},
{
"function": "dev_PresentLastScan",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1,
"options": [],
"localized": ["name", "description"],
@@ -470,7 +470,7 @@
},
{
"function": "dev_NewDevice",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 1,
"options": [],
"localized": ["name", "description"],
@@ -489,7 +489,7 @@
},
{
"function": "dev_Location",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 250,
"default_value": "",
"options": ["{value}"],
@@ -516,7 +516,7 @@
},
{
"function": "dev_Archived",
"type": "integer.checkbox",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0,
"options": [],
"localized": ["name", "description"],
@@ -535,7 +535,7 @@
},
{
"function": "dev_Network_Node_MAC_ADDR",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "",
"options": ["{value}"],
"options_params": [
@@ -566,7 +566,7 @@
},
{
"function": "dev_Network_Node_port",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": 0,
"options": [],
"localized": ["name", "description"],
@@ -585,7 +585,7 @@
},
{
"function": "dev_Icon",
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "",
"options": ["{value}"],
"options_params": [
@@ -611,7 +611,7 @@
},
{
"function": "LESS_NAME_CLEANUP",
"type": "integer.checkbox",
"type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": 0,
"options": [],
"localized": ["name", "description"],
@@ -630,7 +630,7 @@
},
{
"function": "NAME_CLEANUP_REGEX",
"type": "list.base64",
"type": {"dataType":"string", "elements": [{"elementType" : "textarea", "elementOptions" : [] ,"transformers": ["base64"]}]},
"default_value": ["XC5fYWlycGxheQ==", "XC5fdGNw", "XC5sb2NhbGRvbWFpbg==", "XC5sb2NhbA==", "XC5fZXNwaG9tZWxpYg==", "XC5fZ29vZ2xlY2FzdA==", "XC5sYW4=", "XC5ob21l", "LVthLWZBLUYwLTldezMyfQ==", "Iy4q" ],
"options": [],
"localized": ["name", "description"],

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
## Overview
PLugin functionality overview and links to external resources if relevant. Include use cases if available.
Plugin functionality overview and links to external resources if relevant. Include use cases if available.
> [!TIP]
> Some tip.
@@ -21,3 +21,5 @@ To set up the plugin correctly, make sure...
### Notes
- Additional notes, limitations, Author info.
Made with ❤ by [@FlyingToto](https://github.com/FlyingToto) 🙏

View File

@@ -39,7 +39,7 @@
{
"function": "RUN",
"events": ["run"],
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled",
"options": [
@@ -72,7 +72,7 @@
},
{
"function": "RUN_SCHD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *",
"options": [],
@@ -100,7 +100,7 @@
},
{
"function": "url",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50,
"default_value": "",
"options": [],
@@ -120,7 +120,7 @@
},
{
"function": "sites",
"type": "list",
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]},
"default_value": [],
"options": [],
"localized": ["name", "description"],
@@ -139,7 +139,7 @@
},
{
"function": "username",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"maxLength": 50,
"default_value": "",
"options": [],
@@ -159,7 +159,7 @@
},
{
"function": "password",
"type": "password",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]},
"maxLength": 50,
"default_value": "",
"options": [],
@@ -179,7 +179,7 @@
},
{
"function": "force_overwrite",
"type": "boolean",
"type": {"dataType":"boolean", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"checkbox"}] ,"transformers": []}]},
"default_value": false,
"options": [],
"localized": ["name", "description"],
@@ -198,7 +198,7 @@
},
{
"function": "CMD",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/omada_sdn_imp/omada_sdn.py",
"options": [],
"localized": ["name", "description"],
@@ -233,7 +233,7 @@
},
{
"function": "RUN_TIMEOUT",
"type": "integer",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 30,
"options": [],
"localized": ["name", "description"],
@@ -292,7 +292,7 @@
"Watched_Value3",
"Watched_Value4"
],
"type": "text.multiselect"
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
},
{
"default_value": ["new", "watched-changed"],
@@ -316,7 +316,7 @@
"watched-not-changed",
"missing-in-last-scan"
],
"type": "text.multiselect"
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
}
],
"database_column_definitions": [

View File

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

View File

@@ -60,7 +60,7 @@
{
"function": "RUN",
"events": ["run"],
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled",
"options": [
"disabled",
@@ -93,7 +93,7 @@
},
{
"function": "CMD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "SELECT n.hwaddr AS Object_PrimaryID, {s-quote}null{s-quote} AS Object_SecondaryID, datetime() AS DateTime, na.ip AS Watched_Value1, n.lastQuery AS Watched_Value2, na.name AS Watched_Value3, n.macVendor AS Watched_Value4, {s-quote}null{s-quote} AS Extra, n.hwaddr AS ForeignKey FROM EXTERNAL_PIHOLE.Network AS n LEFT JOIN EXTERNAL_PIHOLE.Network_Addresses AS na ON na.network_id = n.id WHERE n.hwaddr NOT LIKE {s-quote}ip-%{s-quote} AND n.hwaddr is not {s-quote}00:00:00:00:00:00{s-quote} AND na.ip is not null",
"options": [],
"localized": ["name", "description"],
@@ -120,7 +120,7 @@
},
{
"function": "DB_PATH",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "/etc/pihole/pihole-FTL.db",
"options": [],
"localized": ["name", "description"],
@@ -147,7 +147,7 @@
},
{
"function": "RUN_SCHD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/30 * * * *",
"options": [],
"localized": ["name", "description"],
@@ -174,7 +174,7 @@
},
{
"function": "WATCH",
"type": "text.multiselect",
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1", "Watched_Value2"],
"options": [
"Watched_Value1",
@@ -206,7 +206,7 @@
},
{
"function": "REPORT_ON",
"type": "text.multiselect",
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new"],
"options": [
"new",

View File

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

View File

@@ -339,7 +339,7 @@
{
"function": "RUN",
"events": ["run"],
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled",
"options": [
"disabled",
@@ -372,7 +372,7 @@
},
{
"function": "CMD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/snmp_discovery/script.py routers={s-quote}{routers}{s-quote}",
"options": [],
"localized": ["name", "description"],
@@ -399,7 +399,7 @@
},
{
"function": "routers",
"type": "list",
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]},
"default_value": [
"snmpwalk -v 2c -c public -OXsq 192.168.1.1 .1.3.6.1.2.1.3.1.1.2"
],
@@ -428,7 +428,7 @@
},
{
"function": "RUN_SCHD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * *",
"options": [],
"localized": ["name", "description"],
@@ -455,7 +455,7 @@
},
{
"function": "RUN_TIMEOUT",
"type": "integer",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 5,
"options": [],
"localized": ["name", "description"],
@@ -486,7 +486,7 @@
},
{
"function": "WATCH",
"type": "text.multiselect",
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"],
"options": [
"Watched_Value1",
@@ -518,7 +518,7 @@
},
{
"function": "REPORT_ON",
"type": "text.multiselect",
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"],
"options": [
"new",

View File

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

View File

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

View File

@@ -25,3 +25,6 @@ Allowing Un-Discoverable devices like hubs, switches or APs to be added to the n
### Known Limitations
- Un-Discoverable Devices always show as offline. That is expected as they can not be discovered by NetAlertX.
- All IPs are set to 0.0.0.0 therefore the "Random MAC" icon might show up.
Made with ❤ by [@Data-Monkey](https://github.com/Data-Monkey) 🙏

View File

@@ -60,7 +60,7 @@
{
"function": "RUN",
"events": ["run"],
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled",
"options": ["disabled", "once", "schedule", "always_after_scan"],
"localized": ["name", "description"],
@@ -95,7 +95,7 @@
},
{
"function": "CMD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/undiscoverables/script.py devices={devices}",
"options": [],
"localized": ["name", "description"],
@@ -130,7 +130,7 @@
},
{
"function": "RUN_TIMEOUT",
"type": "integer",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 10,
"options": [],
"localized": ["name", "description"],
@@ -165,7 +165,7 @@
},
{
"function": "WATCH",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": [],
"options": [],
"localized": ["name", "description"],
@@ -200,7 +200,7 @@
},
{
"function": "REPORT_ON",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": [],
"options": [
"new",
@@ -240,7 +240,7 @@
},
{
"function": "devices_to_import",
"type": "list",
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]},
"default_value": ["dummy_router"],
"options": [],
"localized": ["name", "description"],
@@ -275,7 +275,7 @@
},
{
"function": "RUN_SCHD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "*/5 * * * *",
"options": [],
"localized": ["name", "description"],

View File

@@ -483,7 +483,7 @@
"always_after_scan",
"on_new_device"
],
"type": "text.select"
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}
},
{
"default_value": "python3 /app/front/plugins/unifi_import/script.py username={username} password={password} host={host} sites={sites} port={port} verifyssl={verifyssl} version={version} fullimport={fullimport}",
@@ -518,7 +518,7 @@
}
],
"options": [],
"type": "text"
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
},
{
"default_value": "",
@@ -545,7 +545,7 @@
}
],
"options": [],
"type": "text"
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
},
{
"default_value": "",
@@ -572,7 +572,7 @@
}
],
"options": [],
"type": "password"
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"type":"password"}] ,"transformers": []}]}
},
{
"default_value": "192.168.1.1",
@@ -599,7 +599,7 @@
}
],
"options": [],
"type": "text"
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
},
{
"default_value": "8443",
@@ -626,7 +626,7 @@
}
],
"options": [],
"type": "text"
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
},
{
"default_value": "false",
@@ -653,11 +653,11 @@
}
],
"options": ["true", "false"],
"type": "text.select"
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}
},
{
"function": "version",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "v4",
"options": [],
"localized": ["name", "description"],
@@ -707,7 +707,7 @@
}
],
"options": [],
"type": "list"
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}
},
{
"default_value": "0 2 * * *",
@@ -734,7 +734,7 @@
}
],
"options": [],
"type": "text"
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}
},
{
"default_value": 5,
@@ -769,7 +769,7 @@
}
],
"options": [],
"type": "integer"
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}
},
{
"default_value": ["Watched_Value1", "Watched_Value4"],
@@ -801,7 +801,7 @@
"Watched_Value3",
"Watched_Value4"
],
"type": "text.multiselect"
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
},
{
"default_value": ["new", "watched-changed"],
@@ -833,7 +833,7 @@
"watched-not-changed",
"missing-in-last-scan"
],
"type": "text.multiselect"
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}
},
{
"default_value": "disabled",
@@ -868,7 +868,7 @@
}
],
"options": ["disabled", "once", "always"],
"type": "text.select"
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}
}
]
}

View File

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

View File

@@ -344,7 +344,7 @@
{
"function": "RUN",
"events": ["run"],
"type": "text.select",
"type": {"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]},
"default_value": "disabled",
"options": [
"disabled",
@@ -377,7 +377,7 @@
},
{
"function": "CMD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "python3 /app/front/plugins/website_monitor/script.py urls={urls}",
"options": [],
"localized": ["name", "description"],
@@ -404,7 +404,7 @@
},
{
"function": "RUN_SCHD",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "0 2 * * *",
"options": [],
"localized": ["name", "description"],
@@ -431,7 +431,7 @@
},
{
"function": "API_SQL",
"type": "text",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]},
"default_value": "SELECT * FROM plugin_website_monitor",
"options": [],
"localized": ["name", "description"],
@@ -458,7 +458,7 @@
},
{
"function": "RUN_TIMEOUT",
"type": "integer",
"type": {"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]},
"default_value": 5,
"options": [],
"localized": ["name", "description"],
@@ -489,7 +489,7 @@
},
{
"function": "WATCH",
"type": "text.multiselect",
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["Watched_Value1"],
"options": [
"Watched_Value1",
@@ -521,7 +521,7 @@
},
{
"function": "REPORT_ON",
"type": "text.multiselect",
"type": {"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]},
"default_value": ["new", "watched-changed"],
"options": [
"new",
@@ -553,7 +553,7 @@
},
{
"function": "urls_to_check",
"type": "list",
"type": {"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]},
"default_value": ["https://google.com", "https://duck.com"],
"options": [],
"localized": ["name", "description"],
@@ -580,7 +580,7 @@
},
{
"function": "SQL_internet_ip",
"type": "readonly",
"type": {"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]},
"default_value": "SELECT dev_LastIP FROM Devices WHERE dev_MAC = 'Internet'",
"options": [],
"localized": ["name", "description"],

View File

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

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
settingsData.forEach((set) => {
let val = set['Value'];
const val = set['Value'];
const codeName = set['Code_Name'];
const setType = set['Type'].toLowerCase();
const setType = set['Type'];
const isMetadata = codeName.includes('__metadata');
// is this isn't a metadata entry, get corresponding metadata object from the dummy setting
const setObj = isMetadata ? {} : JSON.parse(getSetting(`${codeName}__metadata`));
@@ -414,7 +414,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
<div class="table_cell setting_description">
${getString(codeName + '_description', set['Description'])}
</div>
<div class="table_cell setting_input input-group">
<div class="table_cell setting_input input-group col-sm-12">
`;
// OVERRIDE
@@ -456,138 +456,83 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
}
// INPUT
// pre-processing done, render setting based on type
let inputHtml = "";
if (setType.startsWith('text') || setType.startsWith('string') || setType.startsWith('date-time') ) {
// --- process text ---
if(setType.includes(".select"))
{
inputHtml = generateOptions(pluginsData, set, inputHtml, isMultiSelect = false)
// Parse the setType JSON string into an object
let inputHtml = '';
const setTypeObject = JSON.parse(setType.replace(/'/g, '"'));
} else if(setType.includes(".multiselect"))
{
inputHtml = generateOptions(pluginsData, set, inputHtml, isMultiSelect = true)
} else{
const dataType = setTypeObject.dataType;
const elements = setTypeObject.elements || [];
// if it's overridable set readonly accordingly
if(overridable)
{
override ? readonly = "" : readonly = " readonly" ;
}
// Iterate through each element in elements array
elements.forEach(elementObj => {
const { elementType, elementOptions = [], transformers = [] } = elementObj;
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) {
case 'select':
inputHtml = generateOptions(pluginsData, set, inputHtml, dataType, isMultiSelect, editable, transformers);
break;
case 'input':
let checked = val === 'True' || val === '1' ? 'checked' : '';
inputType === 'checkbox' ? inputClass = 'checkbox' : inputClass = 'form-control';
inputHtml += `
<input
class="${inputClass} ${cssClasses}"
onChange="settingsChanged()"
my-data-type="${dataType}"
id="${codeName}${suffix}"
type="${inputType}"
value="${valRes}"
${readOnly}
${checked}
placeholder="${placeholder}"
/>`;
break;
case 'button':
inputHtml += `
<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}`);
}
} else if (setType === 'integer') {
// --- process integer ---
inputHtml = `<input onChange="settingsChanged()" my-data-type="${setType}" class="form-control" id="${codeName}" type="number" value="${val}"/>`;
} else if (setType.startsWith('password')) {
// --- process password ---
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' : '';
// 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 += `
<div class="row form-group">
<div class="col-xs-9">`
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 += `
<input class="form-control" type="text" id="${codeName}_input" placeholder="Enter value"/>
`;
}
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
// process events (e.g. run ascan, or test a notification) if associated with the setting
@@ -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
$(`#${prefix} .panel-body`).append(setHtml);
// init remove and edit listitem click gestures
if(['subnets'].includes(setType) || setType.startsWith('list'))
{
initListInteractionOptions(codeName)
}
}
});
}
// init finished
initListInteractionOptions() // init remove and edit listitem click gestures
setupSmoothScrolling()
hideSpinner()
@@ -666,49 +604,78 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
var settingsArray = [];
// collect values for each of the different input form controls
const noConversion = ['text', 'integer', 'string', 'password', 'readonly', 'text.select', 'integer.select', 'text.multiselect'];
// get settings to determine setting type to store values appropriately
$.get('api/table_settings.json?nocache=' + Date.now(), function(res) {
// loop through the settings definitions from the json
res["data"].forEach(set => {
prefix = set["Group"]
setType = set["Type"]
prefix = set["Group"]
setType = set["Type"]
setCodeName = set["Code_Name"]
if (noConversion.includes(setType)) {
const setTypeObject = JSON.parse(setType.replace(/'/g, '"'));
// console.log(setTypeObject);
settingsArray.push([prefix, setCodeName, setType, $('#'+setCodeName).val()]);
const lastElementObj = setTypeObject.elements[setTypeObject.elements.length - 1];
const { elementType, elementOptions = [], transformers = [] } = lastElementObj;
const {
inputType,
readOnly,
isMultiSelect,
cssClasses,
placeholder,
suffix,
sourceIds,
separator,
editable,
valRes,
getStringKey,
onClick
} = handleElementOptions('none', elementOptions, transformers, val = "");
} else if (setType === 'boolean' || setType === 'integer.checkbox') {
let value;
const temp = $(`#${setCodeName}`).is(':checked') ? 1 : 0;
settingsArray.push([prefix, setCodeName, setType, temp]);
if (setTypeObject.dataType === "string" ||
(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 = [];
$(`#${setCodeName} option`).each(function (i, selected) {
const vl = $(selected).val();
$(`#${setCodeName} option${additionalSelector}`).each(function() {
const vl = $(this).val();
if (vl !== '') {
temps.push(vl);
}
});
settingsArray.push([prefix, setCodeName, setType, JSON.stringify(temps)]);
} else if (setType === 'json') {
const temps = $('#'+setCodeName).val();
settingsArray.push([prefix, setCodeName, setType, temps]);
} else if (setType === 'password.SHA256') {
// save value as SHA256 if value isn't SHA256 already
var temps = $('#'+setCodeName).val();
value = JSON.stringify(temps);
value = applyTransformers(value, transformers);
settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]);
if(temps != "" && !isSHA256(temps))
{
temps = CryptoJS.SHA256(temps).toString(CryptoJS.enc.Hex);
}
settingsArray.push([prefix, setCodeName, setType, temps]);
} else if (setTypeObject.dataType === "json") {
value = $('#' + setCodeName).val();
value = applyTransformers(value, transformers);
value = JSON.stringify(value, null, 2)
settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]);
} else {
value = $('#' + setCodeName).val();
value = applyTransformers(value, transformers);
settingsArray.push([prefix, setCodeName, setTypeObject.dataType, value]);
}
});
@@ -716,8 +683,9 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
if(settingsCollectedCorrectly(settingsArray, settingsJSON_DB))
{
// console.log(settingsArray);
console.log(settingsArray);
console.log( JSON.stringify(settingsArray));
// return;
// trigger a save settings event in the backend
$.ajax({
method: "POST",
@@ -734,7 +702,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
window.onbeforeunload = null;
// Reloads the current page
setTimeout("clearCache()", 5000);
// setTimeout("clearCache()", 5000);
} else{
// something went wrong
// write_notification(data, 'interrupt')

View File

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

View File

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

View File

@@ -48,7 +48,7 @@ def ccd(key, default, config_dir, name, inputtype, options, group, events=None,
result = result.replace('\'', "{s-quote}")
# Create the tuples
sql_safe_tuple = (key, name, desc, inputtype, options, regex, str(result), group, str(events))
sql_safe_tuple = (key, name, desc, str(inputtype), options, regex, str(result), group, str(events))
settings_tuple = (key, name, desc, inputtype, options, regex, result, group, str(events))
# Update or append the tuples in the lists
@@ -57,7 +57,7 @@ def ccd(key, default, config_dir, name, inputtype, options, group, events=None,
# Save metadata in dummy setting if not a metadata key
if '__metadata' not in key:
metadata_tuple = (f'{key}__metadata', "metadata name", "metadata desc", 'json', "", "", json.dumps(setJsonMetadata), group, '[]')
metadata_tuple = (f'{key}__metadata', "metadata name", "metadata desc", '{"dataType":"json", "elements": [{"elementType" : "textarea", "elementOptions" : [{"readonly": "true"}] ,"transformers": []}]}', '[]', "", json.dumps(setJsonMetadata), group, '[]')
conf.mySettingsSQLsafe = update_or_append(conf.mySettingsSQLsafe, metadata_tuple, f'{key}__metadata')
conf.mySettings = update_or_append(conf.mySettings, metadata_tuple, f'{key}__metadata')
@@ -131,25 +131,25 @@ def importConfigs (db, all_plugins):
# ----------------------------------------
# ccd(key, default, config_dir, name, inputtype, options, group, events=[], desc = "", regex = "", setJsonMetadata = {}, overrideTemplate = {})
conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', [] , c_d, 'Loaded plugins', 'list.select', '', 'General')
conf.SCAN_SUBNETS = ccd('SCAN_SUBNETS', ['192.168.1.0/24 --interface=eth1', '192.168.1.0/24 --interface=eth0'] , c_d, 'Subnets to scan', 'subnets', '', 'General')
conf.LOG_LEVEL = ccd('LOG_LEVEL', 'verbose' , c_d, 'Log verboseness', 'text.select', "['none', 'minimal', 'verbose', 'debug']", 'General')
conf.TIMEZONE = ccd('TIMEZONE', 'Europe/Berlin' , c_d, 'Time zone', 'text', '', 'General')
conf.PLUGINS_KEEP_HIST = ccd('PLUGINS_KEEP_HIST', 250 , c_d, 'Keep history entries', 'integer', '', 'General')
conf.REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://netalertx/' , c_d, 'NetAlertX URL', 'text', '', 'General')
conf.DAYS_TO_KEEP_EVENTS = ccd('DAYS_TO_KEEP_EVENTS', 90 , c_d, 'Delete events days', 'integer', '', 'General')
conf.HRS_TO_KEEP_NEWDEV = ccd('HRS_TO_KEEP_NEWDEV', 0 , c_d, 'Keep new devices for', 'integer', "0", 'General')
conf.API_CUSTOM_SQL = ccd('API_CUSTOM_SQL', 'SELECT * FROM Devices WHERE dev_PresentLastScan = 0' , c_d, 'Custom endpoint', 'text', '', 'General')
conf.NETWORK_DEVICE_TYPES = ccd('NETWORK_DEVICE_TYPES', ['AP', 'Gateway', 'Firewall', 'Hypervisor', 'Powerline', 'Switch', 'WLAN', 'PLC', 'Router','USB LAN Adapter', 'USB WIFI Adapter', 'Internet'] , c_d, 'Network device types', 'list', '', 'General')
conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', [] , c_d, 'Loaded plugins', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', '[]', 'General')
conf.SCAN_SUBNETS = ccd('SCAN_SUBNETS', ['192.168.1.0/24 --interface=eth1', '192.168.1.0/24 --interface=eth0'] , c_d, 'Subnets to scan', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "192.168.1.0/24 --interface=eth1" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', '[]', 'General')
conf.LOG_LEVEL = ccd('LOG_LEVEL', 'verbose' , c_d, 'Log verboseness', '{"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}', "['none', 'minimal', 'verbose', 'debug']", 'General')
conf.TIMEZONE = ccd('TIMEZONE', 'Europe/Berlin' , c_d, 'Time zone', '{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}', '[]', 'General')
conf.PLUGINS_KEEP_HIST = ccd('PLUGINS_KEEP_HIST', 250 , c_d, 'Keep history entries', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', '[]', 'General')
conf.REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://netalertx/' , c_d, 'NetAlertX URL', '{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}', '[]', 'General')
conf.DAYS_TO_KEEP_EVENTS = ccd('DAYS_TO_KEEP_EVENTS', 90 , c_d, 'Delete events days', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', '[]', 'General')
conf.HRS_TO_KEEP_NEWDEV = ccd('HRS_TO_KEEP_NEWDEV', 0 , c_d, 'Keep new devices for', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', "[]", 'General')
conf.API_CUSTOM_SQL = ccd('API_CUSTOM_SQL', 'SELECT * FROM Devices WHERE dev_PresentLastScan = 0' , c_d, 'Custom endpoint', '{"dataType":"string", "elements": [{"elementType" : "input", "elementOptions" : [] ,"transformers": []}]}', '[]', 'General')
conf.NETWORK_DEVICE_TYPES = ccd('NETWORK_DEVICE_TYPES', ['AP', 'Gateway', 'Firewall', 'Hypervisor', 'Powerline', 'Switch', 'WLAN', 'PLC', 'Router','USB LAN Adapter', 'USB WIFI Adapter', 'Internet'] , c_d, 'Network device types', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', '[]', 'General')
# UI
conf.UI_LANG = ccd('UI_LANG', 'English' , c_d, 'Language Interface', 'text.select', "['English', 'French', 'German', 'Norwegian', 'Russian', 'Spanish', 'Italian (it_it)', 'Portuguese (pt_br)', 'Polish (pl_pl)', 'Turkish (tr_tr)', 'Chinese (zh_cn)' ]", 'UI')
conf.UI_NOT_RANDOM_MAC = ccd('UI_NOT_RANDOM_MAC', [] , c_d, 'Exlude from Random Prefix', 'list', "", 'UI')
conf.UI_ICONS = ccd('UI_ICONS', ['PGkgY2xhc3M9ImZhIGZhLWNvbXB1dGVyIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWV0aGVybmV0Ij48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWdhbWVwYWQiPjwvaT4', 'PGkgY2xhc3M9ImZhIGZhLWdsb2JlIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWxhcHRvcCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLWxpZ2h0YnVsYiI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXNoaWVsZCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXdpZmkiPjwvaT4'] , c_d, 'Icons', 'list', "", 'UI')
conf.UI_REFRESH = ccd('UI_REFRESH', 0 , c_d, 'Refresh interval', 'integer', "", 'UI')
conf.UI_DEV_SECTIONS = ccd('UI_DEV_SECTIONS', [] , c_d, 'Show sections', 'text.multiselect', "['Tile Cards', 'Device Presence']", 'UI')
conf.UI_PRESENCE = ccd('UI_PRESENCE', ['online', 'offline', 'archived'] , c_d, 'Include in presence', 'text.multiselect', "['online', 'offline', 'archived']", 'UI')
conf.UI_MY_DEVICES = ccd('UI_MY_DEVICES', ['online', 'offline', 'archived', 'new', 'down'] , c_d, 'Include in My Devices', 'text.multiselect', "['online', 'offline', 'archived', 'new', 'down']", 'UI')
conf.UI_LANG = ccd('UI_LANG', 'English' , c_d, 'Language Interface', '{"dataType":"string", "elements": [{"elementType" : "select", "elementOptions" : [] ,"transformers": []}]}', "['English', 'French', 'German', 'Norwegian', 'Russian', 'Spanish', 'Italian (it_it)', 'Portuguese (pt_br)', 'Polish (pl_pl)', 'Turkish (tr_tr)', 'Chinese (zh_cn)' ]", 'UI')
conf.UI_NOT_RANDOM_MAC = ccd('UI_NOT_RANDOM_MAC', [] , c_d, 'Exlude from Random Prefix', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', "[]", 'UI')
conf.UI_ICONS = ccd('UI_ICONS', ['PGkgY2xhc3M9ImZhIGZhLWNvbXB1dGVyIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWV0aGVybmV0Ij48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWdhbWVwYWQiPjwvaT4', 'PGkgY2xhc3M9ImZhIGZhLWdsb2JlIj48L2k+', 'PGkgY2xhc3M9ImZhIGZhLWxhcHRvcCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLWxpZ2h0YnVsYiI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXNoaWVsZCI+PC9pPg==', 'PGkgY2xhc3M9ImZhIGZhLXdpZmkiPjwvaT4'] , c_d, 'Icons', '{"dataType": "array","elements": [ {"elementType": "input","elementOptions": [{ "placeholder": "Enter value" },{ "suffix": "_in" },{ "cssClasses": "col-sm-10" },{ "prefillValue": "null" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": ["_in"] },{ "separator": "" },{ "cssClasses": "col-sm-12" },{ "onClick": "addList(this, false)" },{ "getStringKey": "Gen_Add" }],"transformers": [] }, {"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeAllOptions(this)" },{ "getStringKey": "Gen_Remove_All" }],"transformers": []},{"elementType": "button","elementOptions": [{ "sourceSuffixes": [] },{ "separator": "" },{ "cssClasses": "col-sm-6" },{ "onClick": "removeFromList(this)" },{ "getStringKey": "Gen_Remove_Last" }],"transformers": []}, {"elementType": "select","elementOptions": [{ "multiple": "true" },{ "readonly": "true" },{ "editable": "true" }],"transformers": [] }]}', "[]", 'UI')
conf.UI_REFRESH = ccd('UI_REFRESH', 0 , c_d, 'Refresh interval', '{"dataType":"integer", "elements": [{"elementType" : "input", "elementOptions" : [{"type": "number"}] ,"transformers": []}]}', "[]", 'UI')
conf.UI_DEV_SECTIONS = ccd('UI_DEV_SECTIONS', [] , c_d, 'Show sections', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', "['Tile Cards', 'Device Presence']", 'UI')
conf.UI_PRESENCE = ccd('UI_PRESENCE', ['online', 'offline', 'archived'] , c_d, 'Include in presence', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', "['online', 'offline', 'archived']", 'UI')
conf.UI_MY_DEVICES = ccd('UI_MY_DEVICES', ['online', 'offline', 'archived', 'new', 'down'] , c_d, 'Include in My Devices', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', "['online', 'offline', 'archived', 'new', 'down']", 'UI')
# Init timezone in case it changed
conf.tz = timezone(conf.TIMEZONE)
@@ -288,7 +288,7 @@ def importConfigs (db, all_plugins):
# save the newly discovered plugins as options and default values
conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', loaded_plugins_prefixes , c_d, 'Loaded plugins', 'text.multiselect', str(sorted(all_plugins_prefixes)), 'General')
conf.LOADED_PLUGINS = ccd('LOADED_PLUGINS', loaded_plugins_prefixes , c_d, 'Loaded plugins', '{"dataType":"array", "elements": [{"elementType" : "select", "elementOptions" : [{"multiple":"true"}] ,"transformers": []}]}', str(sorted(all_plugins_prefixes)), 'General')
mylog('none', ['[Config] Number of Plugins to load: ', len(loaded_plugins_prefixes)])
mylog('none', ['[Config] Plugins to load: ', loaded_plugins_prefixes])

View File

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

View File

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

View File

@@ -108,6 +108,8 @@ def get_notifications (db):
}
json_down_devices = json_obj.json["data"]
mylog('debug', ['[Notification] json_down_devices: ', json.dumps(json_down_devices) ])
if 'down_reconnected' in sections:
# Compose Reconnected Down Section
# - 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"]
mylog('debug', ['[Notification] json_down_reconnected: ', json.dumps(json_down_reconnected) ])
if 'events' in sections:
# Compose Events Section
sqlQuery = f"""SELECT eve_MAC as MAC, eve_DateTime as Datetime, dev_LastIP as IP, eve_EventType as "Event Type", dev_Name as "Device name", dev_Comments as Comments FROM Events_Devices