Improve txt report for ntfy, mainly for mobile

This commit is contained in:
Joshua
2022-07-21 17:00:46 +10:00
parent 7e6c53f7b8
commit 70b6ccc523
3 changed files with 27 additions and 35 deletions

View File

@@ -8,7 +8,7 @@ ENV USER=pi USER_ID=1000 USER_GID=1000 TZ=Europe/London PORT=20211
RUN apt-get update \ RUN apt-get update \
&& apt-get install --no-install-recommends ca-certificates curl libwww-perl arp-scan perl apt-utils cron sudo lighttpd php php-cgi php-fpm php-sqlite3 sqlite3 dnsutils net-tools python iproute2 nmap python-pip -y \ && apt-get install --no-install-recommends ca-certificates curl libwww-perl arp-scan perl apt-utils cron sudo lighttpd php php-cgi php-fpm php-sqlite3 sqlite3 dnsutils net-tools python iproute2 nmap python-pip -y \
&& pip install requests prettytable \ && pip install requests \
&& apt-get clean autoclean \ && apt-get clean autoclean \
&& apt-get autoremove \ && apt-get autoremove \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \

View File

@@ -28,7 +28,6 @@ import io
import smtplib import smtplib
import csv import csv
import requests import requests
from prettytable import PrettyTable
#=============================================================================== #===============================================================================
# CONFIG CONSTANTS # CONFIG CONSTANTS
@@ -1201,7 +1200,6 @@ def skip_repeated_notifications ():
def email_reporting (): def email_reporting ():
global mail_text global mail_text
global mail_html global mail_html
# Reporting section # Reporting section
print ('\nReporting...') print ('\nReporting...')
openDB() openDB()
@@ -1248,7 +1246,7 @@ def email_reporting ():
mail_section_Internet = False mail_section_Internet = False
mail_text_Internet = '' mail_text_Internet = ''
mail_html_Internet = '' mail_html_Internet = ''
text_line_template = ' {} \t{}\t{}\t{}\n' text_line_template = '{}\t{}\n{}\t{}\n{}\t{}\n{}\t{}\n\n'
html_line_template = '<tr>\n'+ \ html_line_template = '<tr>\n'+ \
' <td> <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+ \ ' <td> <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+ \
' <td style="font-size: 24px; color:#D02020"> {} </td>\n'+ \ ' <td style="font-size: 24px; color:#D02020"> {} </td>\n'+ \
@@ -1258,16 +1256,18 @@ def email_reporting ():
WHERE eve_PendingAlertEmail = 1 AND eve_MAC = 'Internet' WHERE eve_PendingAlertEmail = 1 AND eve_MAC = 'Internet'
ORDER BY eve_DateTime""") ORDER BY eve_DateTime""")
for eventAlert in sql : for eventAlert in sql :
mail_section_Internet = True mail_section_Internet = True
mail_text_Internet += text_line_template.format ( mail_text_Internet += text_line_template.format (
eventAlert['eve_EventType'], eventAlert['eve_DateTime'], 'Event:', eventAlert['eve_EventType'], 'Time:', eventAlert['eve_DateTime'],
eventAlert['eve_IP'], eventAlert['eve_AdditionalInfo']) 'IP:', eventAlert['eve_IP'], 'More Info:', eventAlert['eve_AdditionalInfo'])
mail_html_Internet += html_line_template.format ( mail_html_Internet += html_line_template.format (
REPORT_DEVICE_URL, eventAlert['eve_MAC'], REPORT_DEVICE_URL, eventAlert['eve_MAC'],
eventAlert['eve_EventType'], eventAlert['eve_DateTime'], eventAlert['eve_EventType'], eventAlert['eve_DateTime'],
eventAlert['eve_IP'], eventAlert['eve_AdditionalInfo']) eventAlert['eve_IP'], eventAlert['eve_AdditionalInfo'])
format_report_section (mail_section_Internet, 'SECTION_INTERNET', format_report_section (mail_section_Internet, 'SECTION_INTERNET',
'TABLE_INTERNET', mail_text_Internet, mail_html_Internet) 'TABLE_INTERNET', mail_text_Internet, mail_html_Internet)
@@ -1275,7 +1275,7 @@ def email_reporting ():
mail_section_new_devices = False mail_section_new_devices = False
mail_text_new_devices = '' mail_text_new_devices = ''
mail_html_new_devices = '' mail_html_new_devices = ''
text_line_template = ' {}\t{}\t{}\t{}\t{}\n' text_line_template = '{}\t{}\n\t{}\t{}\n\t{}\t{}\n\t{}\t{}\n\t{}\t{}\n\n'
html_line_template = '<tr>\n'+ \ html_line_template = '<tr>\n'+ \
' <td> <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+\ ' <td> <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+\
' <td> {} </td>\n <td> {} </td>\n <td> {} </td>\n</tr>\n' ' <td> {} </td>\n <td> {} </td>\n <td> {} </td>\n</tr>\n'
@@ -1284,21 +1284,17 @@ def email_reporting ():
WHERE eve_PendingAlertEmail = 1 WHERE eve_PendingAlertEmail = 1
AND eve_EventType = 'New Device' AND eve_EventType = 'New Device'
ORDER BY eve_DateTime""") ORDER BY eve_DateTime""")
mail_text_table = PrettyTable()
mail_text_table.field_names = ["MAC", "Time", "IP", "Name", "Additional Info"]
for eventAlert in sql : for eventAlert in sql :
mail_section_new_devices = True mail_section_new_devices = True
mail_text_new_devices += text_line_template.format ( mail_text_new_devices += text_line_template.format (
eventAlert['eve_MAC'], eventAlert['eve_DateTime'], 'Name:', eventAlert['dev_Name'], 'MAC:', eventAlert['eve_MAC'], 'IP:', eventAlert['eve_IP'],
eventAlert['eve_IP'], eventAlert['dev_Name'], 'Time:', eventAlert['eve_DateTime'], 'More Info:', eventAlert['eve_AdditionalInfo'])
eventAlert['eve_AdditionalInfo'])
mail_html_new_devices += html_line_template.format ( mail_html_new_devices += html_line_template.format (
REPORT_DEVICE_URL, eventAlert['eve_MAC'], eventAlert['eve_MAC'], REPORT_DEVICE_URL, eventAlert['eve_MAC'], eventAlert['eve_MAC'],
eventAlert['eve_DateTime'], eventAlert['eve_IP'], eventAlert['eve_DateTime'], eventAlert['eve_IP'],
eventAlert['dev_Name'], eventAlert['eve_AdditionalInfo']) eventAlert['dev_Name'], eventAlert['eve_AdditionalInfo'])
mail_text_table.add_row([eventAlert['eve_MAC'], eventAlert['eve_DateTime'], eventAlert['eve_IP'], eventAlert['dev_Name'],eventAlert['eve_AdditionalInfo']])
mail_text_new_devices = mail_text_table
format_report_section (mail_section_new_devices, 'SECTION_NEW_DEVICES', format_report_section (mail_section_new_devices, 'SECTION_NEW_DEVICES',
'TABLE_NEW_DEVICES', mail_text_new_devices, mail_html_new_devices) 'TABLE_NEW_DEVICES', mail_text_new_devices, mail_html_new_devices)
@@ -1306,7 +1302,7 @@ def email_reporting ():
mail_section_devices_down = False mail_section_devices_down = False
mail_text_devices_down = '' mail_text_devices_down = ''
mail_html_devices_down = '' mail_html_devices_down = ''
text_line_template = ' {}\t{}\t{}\t{}\n' text_line_template = '{}\t{}\n\t{}\t{}\n\t{}\t{}\n\t{}\t{}\n\n'
html_line_template = '<tr>\n'+ \ html_line_template = '<tr>\n'+ \
' <td> <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+ \ ' <td> <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+ \
' <td> {} </td>\n <td> {} </td>\n</tr>\n' ' <td> {} </td>\n <td> {} </td>\n</tr>\n'
@@ -1319,8 +1315,8 @@ def email_reporting ():
for eventAlert in sql : for eventAlert in sql :
mail_section_devices_down = True mail_section_devices_down = True
mail_text_devices_down += text_line_template.format ( mail_text_devices_down += text_line_template.format (
eventAlert['eve_MAC'], eventAlert['eve_DateTime'], 'Name:', eventAlert['dev_Name'], 'MAC:', eventAlert['eve_MAC'],
eventAlert['eve_IP'], eventAlert['dev_Name']) 'Time:', eventAlert['eve_DateTime'],'IP:', eventAlert['eve_IP'])
mail_html_devices_down += html_line_template.format ( mail_html_devices_down += html_line_template.format (
REPORT_DEVICE_URL, eventAlert['eve_MAC'], eventAlert['eve_MAC'], REPORT_DEVICE_URL, eventAlert['eve_MAC'], eventAlert['eve_MAC'],
eventAlert['eve_DateTime'], eventAlert['eve_IP'], eventAlert['eve_DateTime'], eventAlert['eve_IP'],
@@ -1333,7 +1329,7 @@ def email_reporting ():
mail_section_events = False mail_section_events = False
mail_text_events = '' mail_text_events = ''
mail_html_events = '' mail_html_events = ''
text_line_template = ' {}\t{}\t{}\t{}\t{}\t{}\n' text_line_template = '{}\t{}\n\t{}\t{}\n\t{}\t{}\n\t{}\t{}\n\t{}\t{}\n\t{}\t{}\n\n'
html_line_template = '<tr>\n <td>'+ \ html_line_template = '<tr>\n <td>'+ \
' <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+ \ ' <a href="{}{}"> {} </a> </td>\n <td> {} </td>\n'+ \
' <td> {} </td>\n <td> {} </td>\n <td> {} </td>\n'+ \ ' <td> {} </td>\n <td> {} </td>\n <td> {} </td>\n'+ \
@@ -1348,9 +1344,9 @@ def email_reporting ():
for eventAlert in sql : for eventAlert in sql :
mail_section_events = True mail_section_events = True
mail_text_events += text_line_template.format ( mail_text_events += text_line_template.format (
eventAlert['eve_MAC'], eventAlert['eve_DateTime'], 'Name:', eventAlert['dev_Name'], 'MAC:', eventAlert['eve_MAC'],
eventAlert['eve_IP'], eventAlert['eve_EventType'], 'IP:', eventAlert['eve_IP'],'Time:', eventAlert['eve_DateTime'],
eventAlert['dev_Name'], eventAlert['eve_AdditionalInfo']) 'Event:', eventAlert['eve_EventType'],'More Info:', eventAlert['eve_AdditionalInfo'])
mail_html_events += html_line_template.format ( mail_html_events += html_line_template.format (
REPORT_DEVICE_URL, eventAlert['eve_MAC'], eventAlert['eve_MAC'], REPORT_DEVICE_URL, eventAlert['eve_MAC'], eventAlert['eve_MAC'],
eventAlert['eve_DateTime'], eventAlert['eve_IP'], eventAlert['eve_DateTime'], eventAlert['eve_IP'],

View File

@@ -1,27 +1,23 @@
======================================== Report Date: <REPORT_DATE>
Pi.Alert Report Scan Cycle: <SCAN_CYCLE>
======================================== Server: <SERVER_NAME>
Report Date: <REPORT_DATE>
Scan Cycle: <SCAN_CYCLE>
Server: <SERVER_NAME>
<SECTION_INTERNET> <SECTION_INTERNET>
Internet Internet
---------------------------------------------------------------------- ---------------------
<TABLE_INTERNET> <TABLE_INTERNET>
</SECTION_INTERNET><SECTION_NEW_DEVICES> </SECTION_INTERNET><SECTION_NEW_DEVICES>
New Devices New Devices
---------------------------------------------------------------------- ---------------------
<TABLE_NEW_DEVICES> <TABLE_NEW_DEVICES>
</SECTION_NEW_DEVICES><SECTION_DEVICES_DOWN> </SECTION_NEW_DEVICES><SECTION_DEVICES_DOWN>
Devices Down Devices Down
---------------------------------------------------------------------- ---------------------
<TABLE_DEVICES_DOWN> <TABLE_DEVICES_DOWN>
</SECTION_DEVICES_DOWN><SECTION_EVENTS> </SECTION_DEVICES_DOWN><SECTION_EVENTS>
Events Events
---------------------------------------------------------------------- ---------------------
<TABLE_EVENTS> <TABLE_EVENTS>
</SECTION_EVENTS> </SECTION_EVENTS>
---------------------------------------------------------------------- ---------------------
(?) <PIALERT_YEAR> Puche Pi.Alert <PIALERT_VERSION> (<PIALERT_VERSION_DATE>) GNU GPLv3 <PIALERT_YEAR> Puche - Pi.Alert <PIALERT_VERSION> - GNU GPLv3