Add in parameter to supress txt file creation
This commit is contained in:
parent
9db68b263d
commit
9c6aae8ea7
@ -11,16 +11,24 @@
|
|||||||
# -d DATE, --date DATE Specify a valid date (yyyy-mm-dd) for the analysis
|
# -d DATE, --date DATE Specify a valid date (yyyy-mm-dd) for the analysis
|
||||||
# -ef EMAILFILE, --emailfile EMAILFILE
|
# -ef EMAILFILE, --emailfile EMAILFILE
|
||||||
# Save an html file of the email sent (y/N)
|
# Save an html file of the email sent (y/N)
|
||||||
|
# -tf TEXTFILE, --textfile TEXTFILE
|
||||||
|
# Save a txt file of the html page (y/N)
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# Re-written in python from Mailstats.pl (Perl) to conform to SME11 / Postfix / qpsmtpd log formats
|
# Re-written in python from Mailstats.pl (Perl) to conform to SME11 / Postfix / qpsmtpd log formats
|
||||||
# and html output added
|
# and html output added
|
||||||
#
|
#
|
||||||
# Todo
|
# Todo:
|
||||||
# 2 Other stats
|
# 2 Other stats
|
||||||
# 3. Extra bits for sub tables
|
# 3. Extra bits for sub tables
|
||||||
# 4. Percent char causes sort to fail - look at adding it in the template
|
# 4. Percent char causes sort to fail - look at adding it in the template
|
||||||
# 5. Chase disparity in counts betweeen old mailstats and this
|
# 5. Chase disparity in counts betweeen old mailstats and this
|
||||||
# 6. Count emails delivered over 25/587/465
|
# 6. Count emails delivered over ports 25/587/465 (SMTPS?)
|
||||||
|
# 7. use tmp for txt file and copy to html dir if required.
|
||||||
|
#
|
||||||
|
# Future:
|
||||||
|
# 1. Write summary line for each transaction to DB and link to it through cell in main table
|
||||||
|
# 2. Link each summary line through DB to actual transaction lines
|
||||||
#
|
#
|
||||||
# Centos7:
|
# Centos7:
|
||||||
# yum install python3-chameleon --enablerepo=epel
|
# yum install python3-chameleon --enablerepo=epel
|
||||||
@ -43,6 +51,7 @@ from email.mime.multipart import MIMEMultipart
|
|||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
import codecs
|
import codecs
|
||||||
import argparse
|
import argparse
|
||||||
|
import tempfile
|
||||||
|
|
||||||
Mailstats_version = '1.2'
|
Mailstats_version = '1.2'
|
||||||
|
|
||||||
@ -414,8 +423,6 @@ def split_timestamp_and_data(log_entry: str) -> list:
|
|||||||
|
|
||||||
timestamp = ' '.join(parts[:2])
|
timestamp = ' '.join(parts[:2])
|
||||||
rest_of_data = parts[2]
|
rest_of_data = parts[2]
|
||||||
#print(f"{timestamp} {rest_of_data}")
|
|
||||||
|
|
||||||
return [timestamp, rest_of_data]
|
return [timestamp, rest_of_data]
|
||||||
|
|
||||||
def render_sub_table(table_title,table_headers,found_values):
|
def render_sub_table(table_title,table_headers,found_values):
|
||||||
@ -638,6 +645,7 @@ if __name__ == "__main__":
|
|||||||
parser = argparse.ArgumentParser(description="Mailstats")
|
parser = argparse.ArgumentParser(description="Mailstats")
|
||||||
parser.add_argument('-d', '--date', help='Specify a valid date (yyyy-mm-dd) for the analysis', default=formatted_yesterday)
|
parser.add_argument('-d', '--date', help='Specify a valid date (yyyy-mm-dd) for the analysis', default=formatted_yesterday)
|
||||||
parser.add_argument('-ef', '--emailfile', help='Save an html file of the email sent (y/N)', default='n')
|
parser.add_argument('-ef', '--emailfile', help='Save an html file of the email sent (y/N)', default='n')
|
||||||
|
parser.add_argument('-tf', '--textfile', help='Save a txt file of the html page (y/N)', default='n')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
analysis_date = args.date
|
analysis_date = args.date
|
||||||
# and check its format is valid
|
# and check its format is valid
|
||||||
@ -651,6 +659,7 @@ if __name__ == "__main__":
|
|||||||
#quit()
|
#quit()
|
||||||
anaysis_date_obj = datetime.strptime(analysis_date, '%Y-%m-%d')
|
anaysis_date_obj = datetime.strptime(analysis_date, '%Y-%m-%d')
|
||||||
noemailfile = args.emailfile.lower() == 'n'
|
noemailfile = args.emailfile.lower() == 'n'
|
||||||
|
notextfile = args.textfile.lower() == 'n'
|
||||||
|
|
||||||
isThonny = is_running_under_thonny()
|
isThonny = is_running_under_thonny()
|
||||||
#E-Smith Config DBs
|
#E-Smith Config DBs
|
||||||
@ -1051,9 +1060,19 @@ if __name__ == "__main__":
|
|||||||
output_file.write(total_html)
|
output_file.write(total_html)
|
||||||
#and create a text version if the local version of html2text is suffiicent
|
#and create a text version if the local version of html2text is suffiicent
|
||||||
if get_html2text_version() == '2019.9.26':
|
if get_html2text_version() == '2019.9.26':
|
||||||
html_to_text(output_path+'.html',output_path+'.txt')
|
# Get a temporary file name
|
||||||
print(f"Rendered HTML saved to {output_path}.html/txt")
|
temp_file_name = tempfile.mktemp()
|
||||||
|
html_to_text(output_path+'.html',temp_file_name)
|
||||||
|
print(f"Rendered HTML saved to {temp_file_name}")
|
||||||
|
# and save it if required
|
||||||
|
if not notextfile:
|
||||||
|
text_file_path = output_path+'.txt'
|
||||||
|
# and rename it
|
||||||
|
os.rename(temp_file_name, text_file_path)
|
||||||
|
else:
|
||||||
|
text_file_path = temp_file_name
|
||||||
|
else:
|
||||||
|
text_file_path = ""
|
||||||
html_content = None
|
html_content = None
|
||||||
text_content = None
|
text_content = None
|
||||||
#Now see if Email required
|
#Now see if Email required
|
||||||
@ -1062,20 +1081,20 @@ if __name__ == "__main__":
|
|||||||
# Send html email (default))
|
# Send html email (default))
|
||||||
filepath = html_page_dir+"mailstats_for_"+analysis_date+".html"
|
filepath = html_page_dir+"mailstats_for_"+analysis_date+".html"
|
||||||
html_content = read_html_from_file(filepath)
|
html_content = read_html_from_file(filepath)
|
||||||
#print(len(html_content))
|
|
||||||
# Replace the Navigation by a "See in browser" prompt
|
# Replace the Navigation by a "See in browser" prompt
|
||||||
replace_str = f"<div class='divseeinbrowser' style='text-align:center;'><a class='seeinbrowser' href='http://{DomainName}/mailstats/mailstats_for_{analysis_date}.html'>See in browser</a></div>"
|
replace_str = f"<div class='divseeinbrowser' style='text-align:center;'><a class='seeinbrowser' href='http://{DomainName}/mailstats/mailstats_for_{analysis_date}.html'>See in browser</a></div>"
|
||||||
#print(len(replace_str))
|
|
||||||
#print(len(html_content))
|
|
||||||
html_content = replace_between(html_content, "<div class='linksattop'>", ">Next</a></div>", replace_str)
|
html_content = replace_between(html_content, "<div class='linksattop'>", ">Next</a></div>", replace_str)
|
||||||
if not noemailfile:
|
if not noemailfile:
|
||||||
# Write out te email html to a web page
|
# Write out the email html to a web page
|
||||||
email_file = html_page_dir + "Email_mailstats_for_"+analysis_date
|
email_file = html_page_dir + "Email_mailstats_for_"+analysis_date
|
||||||
with open(email_file+'.html', 'w') as output_file:
|
with open(email_file+'.html', 'w') as output_file:
|
||||||
output_file.write(html_content)
|
output_file.write(html_content)
|
||||||
if EmailTextOrHTML == "Text" or EmailTextOrHTML == "Both":
|
if EmailTextOrHTML == "Text" or EmailTextOrHTML == "Both":
|
||||||
filepath = html_page_dir+"mailstats_for_"+analysis_date+".txt"
|
#filepath = html_page_dir+"mailstats_for_"+analysis_date+".txt"
|
||||||
text_content = read_text_from_file(filepath)
|
if not text_file_path == "":
|
||||||
|
text_content = read_text_from_file(text_file_path)
|
||||||
|
else:
|
||||||
|
text_content = "No text avaiable as html2text (was not "
|
||||||
if EMailSMTPUser:
|
if EMailSMTPUser:
|
||||||
# Send authenticated
|
# Send authenticated
|
||||||
print("Sending authenticated")
|
print("Sending authenticated")
|
||||||
|
Loading…
Reference in New Issue
Block a user