diff --git a/back/pialert.py b/back/pialert.py index 76dc2db2..fcbe2933 100644 --- a/back/pialert.py +++ b/back/pialert.py @@ -356,9 +356,6 @@ def scan_network (): # ScanCycle data cycle_interval = scanCycle_data['cic_EveryXmin'] - # arpscan_retries = scanCycle_data['cic_arpscanCycles'] no longer needed - # TESTING - Fast scan - # arpscan_retries = 1 # arp-scan command print ('\nScanning...') @@ -451,33 +448,12 @@ def query_ScanCycle_Data (pOpenCloseDB = False): #------------------------------------------------------------------------------- def execute_arpscan (): - # #101 - arp-scan subnet configuration # Prepare command arguments subnets = SCAN_SUBNETS.strip().split() - - # ---------------START----------------Rollback-----------------START--------------- - # rolled-back to previous code - arp-scan wouldn't discover all devices - # arp-scan for larger Networks like /16 - # otherwise the system starts multiple processes. the 15min cronjob isn't necessary. - # the scan is about 4min on a /16 network - - # Rolled back line(FROM) : - #arpscan_args = ['sudo', 'arp-scan', '--ignoredups', '--bandwidth=512k', '--retry=3', SCAN_SUBNETS] - # Rolled back line(TO) : + # Retry is 6 to avoid false offline devices arpscan_args = ['sudo', 'arp-scan', '--ignoredups', '--retry=6'] + subnets - # ---------------END------------------Rollback-----------------END--------------- - - # Default arp-scan - # arpscan_args = ['sudo', 'arp-scan', SCAN_SUBNETS, '--ignoredups', '--retry=' + str(pRetries)] - # print (arpscan_args) - - # TESTING - Fast Scan - # arpscan_args = ['sudo', 'arp-scan', '--localnet', '--ignoredups', '--retry=1'] - - # DEBUG - arp-scan command - # print (" ".join (arpscan_args)) - + # Execute command arpscan_output = subprocess.check_output (arpscan_args, universal_newlines=True) @@ -491,9 +467,6 @@ def execute_arpscan (): devices_list = [device.groupdict() for device in re.finditer (re_pattern, arpscan_output)] - # Bugfix #5 - Delete duplicated MAC's with different IP's - # TEST - Force duplicated device - # devices_list.append(devices_list[0]) # Delete duplicate MAC unique_mac = [] unique_devices = [] @@ -738,6 +711,16 @@ def create_new_devices (): WHERE dev_MAC = cur_MAC) """, (startTime, cycle) ) + print_log ('New devices - Insert Connection into session table') + sql.execute ("""INSERT INTO Sessions (ses_MAC, ses_IP, ses_EventTypeConnection, ses_DateTimeConnection, + ses_EventTypeDisconnection, ses_DateTimeDisconnection, ses_StillConnected, ses_AdditionalInfo) + SELECT cur_MAC, cur_IP,'Connected',?, NULL , NULL ,1, cur_Vendor + FROM CurrentScan + WHERE cur_ScanCycle = ? + AND NOT EXISTS (SELECT 1 FROM Sessions + WHERE ses_MAC = cur_MAC) """, + (startTime, cycle) ) + # arpscan - Create new devices print_log ('New devices - 2 Create devices') sql.execute ("""INSERT INTO Devices (dev_MAC, dev_name, dev_Vendor, @@ -965,17 +948,10 @@ def update_devices_data_from_scan (): sql.executemany ("UPDATE Devices SET dev_Vendor = ? WHERE dev_MAC = ? ", recordsToUpdate ) - # New Apple devices -> Cycle 15 - # print_log ('Update devices - 6 Cycle for Apple devices') - # sql.execute ("""UPDATE Devices SET dev_ScanCycle = 1 - # WHERE dev_FirstConnection = ? - # AND UPPER(dev_Vendor) LIKE '%APPLE%' """, - # (startTime,) ) - print_log ('Update devices end') #------------------------------------------------------------------------------- -# Feature #43 - Resoltion name for unknown devices +# Feature #43 - Resolve name for unknown devices def update_devices_names (): # Initialize variables recordsToUpdate = [] @@ -1204,9 +1180,9 @@ def email_reporting (): # Disable reporting on events for devices where reporting is disabled based on the MAC address sql.execute ("""UPDATE Events SET eve_PendingAlertEmail = 0 - WHERE eve_PendingAlertEmail = 1 AND eve_MAC IN + WHERE eve_PendingAlertEmail = 1 AND eve_EventType != 'Device Down' AND eve_MAC IN ( - SELECT dev_MAC FROM Devices WHERE dev_AlertEvents = 0 + SELECT dev_MAC FROM Devices WHERE dev_AlertEvents = 0 )""") # Open text Template @@ -1402,7 +1378,7 @@ def send_ntfy (_Text): data=_Text, headers={ "Title": "Pi.Alert Notification", - "Click": REPORT_DASHBOARD_URL, + "Actions": "view, Open Dashboard, "+ REPORT_DASHBOARD_URL, "Priority": "urgent", "Tags": "warning" }) @@ -1423,19 +1399,6 @@ def send_pushsafer (_Text): } requests.post(url, data=post_fields) - -#------------------------------------------------------------------------------- - -def send_ntfy (_Text): - requests.post("https://ntfy.sh/{}".format(NTFY_TOPIC), - data=_Text, - headers={ - "Title": "Pi.Alert Notification", - "Click": REPORT_DASHBOARD_URL, - "Priority": "urgent", - "Tags": "warning" - }) - #------------------------------------------------------------------------------- def format_report_section (pActive, pSection, pTable, pText, pHTML): global mail_text diff --git a/config/reset_password.sh b/config/reset_password.sh index a7f933ee..6f79e7a4 100644 --- a/config/reset_password.sh +++ b/config/reset_password.sh @@ -1,7 +1,32 @@ -cp pialert.conf pialert.conf.bak +#!/bin/sh +PIA_CONF_FILE='pialert.conf' PIA_PASS=$1 -echo "The password '$1' is hashed" -PIA_PASS_HASH=$(echo -n $PIA_PASS | sha256sum | awk '{print $1}') -echo "The hashed password is: $PIA_PASS_HASH" -sed -i "/PIALERT_WEB_PASSWORD/c\PIALERT_WEB_PASSWORD = '$PIA_PASS_HASH'" pialert.conf -echo "The hash was saved in the configuration file" \ No newline at end of file +echo "Check of key PIALERT_WEB_PROTECTION exists:" +CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l) +if [ $CHECK_PROT -eq 0 ] +then + cp $PIA_CONF_FILE $PIA_CONF_FILE.bak1 + echo " Key not found. Key 'PIALERT_WEB_PROTECTION' will be created." + echo " Check Config after the script is finished." + sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = False" $PIA_CONF_FILE > pialert.tmp +else + echo " Key exists. Nothing to do." +fi +echo "" +echo "Check of key PIALERT_WEB_PASSWORD exists:" +CHECK_PWD=$(grep "PIALERT_WEB_PASSWORD" $PIA_CONF_FILE | wc -l) +if [ $CHECK_PWD -eq 0 ] +then + cp $PIA_CONF_FILE $PIA_CONF_FILE.bak2 + echo " Key not found. Key 'PIALERT_WEB_PASSWORD' will be created." + echo " Check Config after the script is finished." + echo " If the key is just created, please run the script again to set a new password". + sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'" $PIA_CONF_FILE +else + echo " The password '$1' is hashed" + PIA_PASS_HASH=$(echo -n $PIA_PASS | sha256sum | awk '{print $1}') + echo " The hashed password is:" + echo " $PIA_PASS_HASH" + sed -i "/PIALERT_WEB_PASSWORD/c\PIALERT_WEB_PASSWORD = '$PIA_PASS_HASH'" $PIA_CONF_FILE + echo " The hash was saved in the configuration file" +fi diff --git a/front/css/dark-patch.css b/front/css/dark-patch.css index 97738f34..0c9ed484 100644 --- a/front/css/dark-patch.css +++ b/front/css/dark-patch.css @@ -664,6 +664,27 @@ input[type="password"]::-webkit-caps-lock-indicator { margin: auto; } +.nav-tabs-custom > .nav-tabs > li:hover > a, .nav-tabs-custom > .nav-tabs > li.active:hover > a { + background-color: #272c30; + color: #bec5cb; +} + +.nav-tabs-custom > .nav-tabs > li.active > a, .nav-tabs-custom > .nav-tabs > li.active:hover > a { + border-left-color: #30383f; + border-right-color: #30383f; + background-color: #272c30; + color: #bec5cb; +} +.nav-tabs-custom > .nav-tabs { + background-color: #353c42; +} +.nav-tabs-custom .tab-content { + background-color: #272c30; +} +.top_small_box_gray_text { + color: white !important; +} + /* remove white border that appears on mobile screen sizes */ .box-body { border: 0px; diff --git a/front/deviceDetails.php b/front/deviceDetails.php index 70c3c804..640182a2 100644 --- a/front/deviceDetails.php +++ b/front/deviceDetails.php @@ -1387,7 +1387,7 @@ function getSessionsPresenceEvents () { // Define Presence datasource and query data $('#calendar').fullCalendar('removeEventSources'); $('#calendar').fullCalendar('addEventSource', - { url: 'php/server/events.php?action=getDevicePresence&mac=' + mac +'&period='+ period }); + { url: 'php/server/events.php?action=getDevicePresence&mac=' + mac}); // Query events getDeviceEvents(); diff --git a/front/index.php b/front/index.php index 55005e41..4aae0831 100644 --- a/front/index.php +++ b/front/index.php @@ -19,7 +19,7 @@ $config_file_lines_bypass = array_values(preg_grep('/^PIALERT_WEB_PROTECTION\s.* $protection_line = explode("=", $config_file_lines_bypass[0]); $Pia_WebProtection = strtolower(trim($protection_line[1])); -if ($Pia_WebProtection == 'false') +if ($Pia_WebProtection != 'true') { header('Location: /pialert/devices.php'); $_SESSION["login"] = 1; @@ -156,4 +156,4 @@ if ($ENABLED_DARKMODE === True) { \ No newline at end of file +?> diff --git a/front/maintenance.php b/front/maintenance.php index 0057584f..a753e805 100644 --- a/front/maintenance.php +++ b/front/maintenance.php @@ -214,7 +214,6 @@ if (submit && isset($_POST['langselector_set'])) { -
+ + +