Get internet IP setting + session cache fix

This commit is contained in:
Jokob-sk
2023-01-14 10:03:56 +11:00
parent 121b5cdf32
commit 3c13f82d61
6 changed files with 51 additions and 43 deletions

View File

@@ -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

View File

@@ -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 () {

View File

@@ -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) );
} ); } );
}; };

View File

@@ -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);
} }
} }
function setCache(key, data) return "";
}
// -----------------------------------------------------------------------------
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

View File

@@ -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',

View File

@@ -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)