mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 09:36:05 -08:00
Get internet IP setting + session cache fix
This commit is contained in:
@@ -253,7 +253,7 @@ def importConfig ():
|
|||||||
# Specify globals so they can be overwritten with the new config
|
# Specify globals so they can be overwritten with the new config
|
||||||
global lastTimeImported, mySettings
|
global lastTimeImported, mySettings
|
||||||
# General
|
# General
|
||||||
global ENABLE_ARPSCAN, SCAN_SUBNETS, PRINT_LOG, TIMEZONE, PIALERT_WEB_PROTECTION, PIALERT_WEB_PASSWORD, INCLUDED_SECTIONS, SCAN_CYCLE_MINUTES, DAYS_TO_KEEP_EVENTS, REPORT_DASHBOARD_URL
|
global ENABLE_ARPSCAN, SCAN_SUBNETS, PRINT_LOG, TIMEZONE, PIALERT_WEB_PROTECTION, PIALERT_WEB_PASSWORD, INCLUDED_SECTIONS, SCAN_CYCLE_MINUTES, DAYS_TO_KEEP_EVENTS, REPORT_DASHBOARD_URL, DIG_GET_IP_ARG
|
||||||
# Email
|
# Email
|
||||||
global REPORT_MAIL, SMTP_SERVER, SMTP_PORT, REPORT_TO, REPORT_FROM, SMTP_SKIP_LOGIN, SMTP_USER, SMTP_PASS, SMTP_SKIP_TLS
|
global REPORT_MAIL, SMTP_SERVER, SMTP_PORT, REPORT_TO, REPORT_FROM, SMTP_SKIP_LOGIN, SMTP_USER, SMTP_PASS, SMTP_SKIP_TLS
|
||||||
# Webhooks
|
# Webhooks
|
||||||
@@ -300,6 +300,7 @@ def importConfig ():
|
|||||||
SCAN_CYCLE_MINUTES = ccd('SCAN_CYCLE_MINUTES', 5 , c_d, 'Scan cycle delay (m)', 'integer', '', 'General')
|
SCAN_CYCLE_MINUTES = ccd('SCAN_CYCLE_MINUTES', 5 , c_d, 'Scan cycle delay (m)', 'integer', '', 'General')
|
||||||
DAYS_TO_KEEP_EVENTS = ccd('DAYS_TO_KEEP_EVENTS', 90 , c_d, 'Delete events days', 'integer', '', 'General')
|
DAYS_TO_KEEP_EVENTS = ccd('DAYS_TO_KEEP_EVENTS', 90 , c_d, 'Delete events days', 'integer', '', 'General')
|
||||||
REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://pi.alert/' , c_d, 'PiAlert URL', 'text', '', 'General')
|
REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://pi.alert/' , c_d, 'PiAlert URL', 'text', '', 'General')
|
||||||
|
DIG_GET_IP_ARG = ccd('DIG_GET_IP_ARG', '-4 myip.opendns.com @resolver1.opendns.com' , c_d, 'DIG arguments', 'text', '', 'General')
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
REPORT_MAIL = ccd('REPORT_MAIL', False , c_d, 'Enable email', 'boolean', '', 'Email', ['test'])
|
REPORT_MAIL = ccd('REPORT_MAIL', False , c_d, 'Enable email', 'boolean', '', 'Email', ['test'])
|
||||||
@@ -629,20 +630,13 @@ def check_internet_IP ():
|
|||||||
def get_internet_IP ():
|
def get_internet_IP ():
|
||||||
# BUGFIX #46 - curl http://ipv4.icanhazip.com repeatedly is very slow
|
# BUGFIX #46 - curl http://ipv4.icanhazip.com repeatedly is very slow
|
||||||
# Using 'dig'
|
# Using 'dig'
|
||||||
dig_args = ['dig', '+short', '-4', 'myip.opendns.com', '@resolver1.opendns.com']
|
dig_args = ['dig', '+short'] + DIG_GET_IP_ARG.strip().split()
|
||||||
try:
|
try:
|
||||||
cmd_output = subprocess.check_output (dig_args, universal_newlines=True)
|
cmd_output = subprocess.check_output (dig_args, universal_newlines=True)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
file_print(e.output)
|
file_print(e.output)
|
||||||
cmd_output = '' # no internet
|
cmd_output = '' # no internet
|
||||||
|
|
||||||
|
|
||||||
## BUGFIX #12 - Query IPv4 address (not IPv6)
|
|
||||||
## Using 'curl' instead of 'dig'
|
|
||||||
## curl_args = ['curl', '-s', 'https://diagnostic.opendns.com/myip']
|
|
||||||
#curl_args = ['curl', '-s', QUERY_MYIP_SERVER]
|
|
||||||
#cmd_output = subprocess.check_output (curl_args, universal_newlines=True)
|
|
||||||
|
|
||||||
# Check result is an IP
|
# Check result is an IP
|
||||||
IP = check_IP_format (cmd_output)
|
IP = check_IP_format (cmd_output)
|
||||||
return IP
|
return IP
|
||||||
|
|||||||
@@ -766,7 +766,7 @@ function main () {
|
|||||||
initializeCalendar();
|
initializeCalendar();
|
||||||
|
|
||||||
// Read Cookies
|
// Read Cookies
|
||||||
devicesList = getCookie('devicesList');
|
devicesList = getCache('devicesList');
|
||||||
if (devicesList != '') {
|
if (devicesList != '') {
|
||||||
devicesList = JSON.parse (devicesList);
|
devicesList = JSON.parse (devicesList);
|
||||||
} else {
|
} else {
|
||||||
@@ -923,22 +923,22 @@ function writeDropdownHtml(dropdownId, dropdownHtmlContent)
|
|||||||
HTMLelement.innerHTML += dropdownHtmlContent;
|
HTMLelement.innerHTML += dropdownHtmlContent;
|
||||||
}
|
}
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
function getCache(key)
|
// function getCache(key)
|
||||||
{
|
// {
|
||||||
// check cache
|
// // check cache
|
||||||
if(sessionStorage.getItem(key))
|
// if(sessionStorage.getItem(key))
|
||||||
{
|
// {
|
||||||
return sessionStorage.getItem(key);
|
// return sessionStorage.getItem(key);
|
||||||
} else
|
// } else
|
||||||
{
|
// {
|
||||||
return "";
|
// return "";
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
// -----------------------------------------------------------------------------
|
// // -----------------------------------------------------------------------------
|
||||||
function setCache(key, data)
|
// function setCache(key, data)
|
||||||
{
|
// {
|
||||||
sessionStorage.setItem(key, data);
|
// sessionStorage.setItem(key, data);
|
||||||
}
|
// }
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
function initializeComboSkipRepeated () {
|
function initializeComboSkipRepeated () {
|
||||||
|
|||||||
@@ -341,11 +341,11 @@ function initializeDatatable () {
|
|||||||
|
|
||||||
$('#tableDevices').on( 'order.dt', function () {
|
$('#tableDevices').on( 'order.dt', function () {
|
||||||
setParameter (parTableOrder, JSON.stringify (table.order()) );
|
setParameter (parTableOrder, JSON.stringify (table.order()) );
|
||||||
setCookie ('devicesList', getDevicesFromTable(table) );
|
setCache ('devicesList', getDevicesFromTable(table) );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
$('#tableDevices').on( 'search.dt', function () {
|
$('#tableDevices').on( 'search.dt', function () {
|
||||||
setCookie ('devicesList', getDevicesFromTable(table) );
|
setCache ('devicesList', getDevicesFromTable(table) );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,21 +16,30 @@ var emptyArr = ['undefined', "", undefined, null];
|
|||||||
// get: (searchParams, prop) => searchParams.get(prop.toString()),
|
// get: (searchParams, prop) => searchParams.get(prop.toString()),
|
||||||
// });
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// Simple session cache withe expiration managed via cookies
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
function getCache(key)
|
function getCache(key)
|
||||||
{
|
{
|
||||||
// check cache
|
// check cache
|
||||||
if(sessionStorage.getItem(key))
|
if(sessionStorage.getItem(key))
|
||||||
{
|
{
|
||||||
return sessionStorage.getItem(key);
|
// check if not expired
|
||||||
} else
|
if(getCookie(key + '_session_expiry') != "")
|
||||||
{
|
{
|
||||||
return "";
|
return sessionStorage.getItem(key);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
function setCache(key, data)
|
// -----------------------------------------------------------------------------
|
||||||
|
function setCache(key, data, expirationMinutes='')
|
||||||
{
|
{
|
||||||
sessionStorage.setItem(key, data);
|
sessionStorage.setItem(key, data);
|
||||||
|
setCookie (key + '_session_expiry', 'OK', expirationMinutes='')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -87,7 +96,8 @@ function deleteAllCookies() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// Modal dialog handling
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
function showModalOk (title, message, callbackFunction = null) {
|
function showModalOk (title, message, callbackFunction = null) {
|
||||||
// set captions
|
// set captions
|
||||||
@@ -170,13 +180,6 @@ function modalWarningOK () {
|
|||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
// remove unnecessary lines from the result
|
|
||||||
function sanitize(data)
|
|
||||||
{
|
|
||||||
return data.replace(/(\r\n|\n|\r)/gm,"").replace(/[^\x00-\x7F]/g, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
function showMessage (textMessage="") {
|
function showMessage (textMessage="") {
|
||||||
if (textMessage.toLowerCase().includes("error") ) {
|
if (textMessage.toLowerCase().includes("error") ) {
|
||||||
@@ -194,6 +197,15 @@ function showMessage (textMessage="") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// General utilities
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// remove unnecessary lines from the result
|
||||||
|
function sanitize(data)
|
||||||
|
{
|
||||||
|
return data.replace(/(\r\n|\n|\r)/gm,"").replace(/[^\x00-\x7F]/g, "")
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
function setParameter (parameter, value) {
|
function setParameter (parameter, value) {
|
||||||
// Retry
|
// Retry
|
||||||
|
|||||||
@@ -485,6 +485,8 @@ the arp-scan will take hours to complete instead of seconds.
|
|||||||
'DAYS_TO_KEEP_EVENTS_description' => 'This is a maintenance setting. This specifies the number of days worth of event entries that will be kept. All older events will be deleted periodically.',
|
'DAYS_TO_KEEP_EVENTS_description' => 'This is a maintenance setting. This specifies the number of days worth of event entries that will be kept. All older events will be deleted periodically.',
|
||||||
'REPORT_DASHBOARD_URL_name' => 'Pi.Alert URL',
|
'REPORT_DASHBOARD_URL_name' => 'Pi.Alert URL',
|
||||||
'REPORT_DASHBOARD_URL_description' => 'This URL is used as the base for generating links in the emails. Enter full URL starting with <code>http://</code> including the port number (no trailig slash <code>/</code>).',
|
'REPORT_DASHBOARD_URL_description' => 'This URL is used as the base for generating links in the emails. Enter full URL starting with <code>http://</code> including the port number (no trailig slash <code>/</code>).',
|
||||||
|
'DIG_GET_IP_ARG_name' => 'Internet IP discovery',
|
||||||
|
'DIG_GET_IP_ARG_description' => 'Change the <a href="https://linux.die.net/man/1/dig" target="_blank">dig utility</a> arguments if you have issues resolving your Internet IP. Arguments are added at the end of the following command: <code>dig +short </code>.',
|
||||||
|
|
||||||
//Email
|
//Email
|
||||||
'REPORT_MAIL_name' => 'Enable email',
|
'REPORT_MAIL_name' => 'Enable email',
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ CommitDB();
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
// number of settings has to be equal to
|
// number of settings has to be equal to
|
||||||
var settingsNumber = 59;
|
var settingsNumber = 60;
|
||||||
|
|
||||||
// Wrong number of settings processing
|
// Wrong number of settings processing
|
||||||
if(<?php echo count($settings)?> != settingsNumber)
|
if(<?php echo count($settings)?> != settingsNumber)
|
||||||
|
|||||||
Reference in New Issue
Block a user