mirror of https://github.com/CIRCL/AIL-framework
add: new mail body and starttls
parent
8b245d17d9
commit
fa38434e04
10
bin/Curve.py
10
bin/Curve.py
|
@ -48,6 +48,9 @@ top_termFreq_setName_week = ["TopTermFreq_set_week", 7]
|
||||||
top_termFreq_setName_month = ["TopTermFreq_set_month", 31]
|
top_termFreq_setName_month = ["TopTermFreq_set_month", 31]
|
||||||
top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month]
|
top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month]
|
||||||
|
|
||||||
|
# create direct link in mail
|
||||||
|
full_paste_url = "http://localhost:7000/showsavedpaste/?paste="
|
||||||
|
|
||||||
def check_if_tracked_term(term, path):
|
def check_if_tracked_term(term, path):
|
||||||
if term in server_term.smembers(TrackedTermsSet_Name):
|
if term in server_term.smembers(TrackedTermsSet_Name):
|
||||||
#add_paste to tracked_word_set
|
#add_paste to tracked_word_set
|
||||||
|
@ -59,9 +62,14 @@ def check_if_tracked_term(term, path):
|
||||||
# Send a notification only when the member is in the set
|
# Send a notification only when the member is in the set
|
||||||
if term in server_term.smembers(TrackedTermsNotificationEnabled_Name):
|
if term in server_term.smembers(TrackedTermsNotificationEnabled_Name):
|
||||||
|
|
||||||
|
# create mail body
|
||||||
|
mail_body = ("AIL Framework,\n"
|
||||||
|
"New occurrence for term: " + term + "\n"
|
||||||
|
''+full_paste_url + path)
|
||||||
|
|
||||||
# Send to every associated email adress
|
# Send to every associated email adress
|
||||||
for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + term):
|
for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + term):
|
||||||
sendEmailNotification(email, term)
|
sendEmailNotification(email, 'Term', mail_body)
|
||||||
|
|
||||||
|
|
||||||
def getValueOverRange(word, startDate, num_day):
|
def getValueOverRange(word, startDate, num_day):
|
||||||
|
|
|
@ -21,7 +21,7 @@ TrackedTermsNotificationEnabled_Name = "TrackedNotifications"
|
||||||
# Keys will be e.g. TrackedNotificationEmails<TERMNAME>
|
# Keys will be e.g. TrackedNotificationEmails<TERMNAME>
|
||||||
TrackedTermsNotificationEmailsPrefix_Name = "TrackedNotificationEmails_"
|
TrackedTermsNotificationEmailsPrefix_Name = "TrackedNotificationEmails_"
|
||||||
|
|
||||||
def sendEmailNotification(recipient, term):
|
def sendEmailNotification(recipient, alert_name, content):
|
||||||
|
|
||||||
if not os.path.exists(configfile):
|
if not os.path.exists(configfile):
|
||||||
raise Exception('Unable to find the configuration file. \
|
raise Exception('Unable to find the configuration file. \
|
||||||
|
@ -57,7 +57,13 @@ def sendEmailNotification(recipient, term):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if sender_pw is not None:
|
if sender_pw is not None:
|
||||||
smtp_server = smtplib.SMTP_SSL(sender_host, sender_port)
|
try:
|
||||||
|
smtp_server = smtplib.SMTP(sender_host, sender_port)
|
||||||
|
smtp_server.starttls()
|
||||||
|
except smtplib.SMTPNotSupportedError:
|
||||||
|
print("The server does not support the STARTTLS extension.")
|
||||||
|
smtp_server = smtplib.SMTP_SSL(sender_host, sender_port)
|
||||||
|
|
||||||
smtp_server.ehlo()
|
smtp_server.ehlo()
|
||||||
smtp_server.login(sender, sender_pw)
|
smtp_server.login(sender, sender_pw)
|
||||||
else:
|
else:
|
||||||
|
@ -67,13 +73,14 @@ def sendEmailNotification(recipient, term):
|
||||||
mime_msg = MIMEMultipart()
|
mime_msg = MIMEMultipart()
|
||||||
mime_msg['From'] = sender
|
mime_msg['From'] = sender
|
||||||
mime_msg['To'] = recipient
|
mime_msg['To'] = recipient
|
||||||
mime_msg['Subject'] = "AIL Term Alert"
|
mime_msg['Subject'] = "AIL Framework "+ alert_name + " Alert"
|
||||||
|
|
||||||
body = "New occurrence for term: " + term
|
body = content
|
||||||
mime_msg.attach(MIMEText(body, 'plain'))
|
mime_msg.attach(MIMEText(body, 'plain'))
|
||||||
|
|
||||||
smtp_server.sendmail(sender, recipient, mime_msg.as_string())
|
smtp_server.sendmail(sender, recipient, mime_msg.as_string())
|
||||||
smtp_server.quit()
|
smtp_server.quit()
|
||||||
|
print('Send notification '+ alert_name + ' to '+recipient)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(str(e))
|
print(str(e))
|
||||||
|
|
|
@ -35,6 +35,8 @@ top_termFreq_setName_week = ["TopTermFreq_set_week", 7]
|
||||||
top_termFreq_setName_month = ["TopTermFreq_set_month", 31]
|
top_termFreq_setName_month = ["TopTermFreq_set_month", 31]
|
||||||
top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month]
|
top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month]
|
||||||
|
|
||||||
|
# create direct link in mail
|
||||||
|
full_paste_url = "http://localhost:7000/showsavedpaste/?paste="
|
||||||
|
|
||||||
def refresh_dicos():
|
def refresh_dicos():
|
||||||
dico_regex = {}
|
dico_regex = {}
|
||||||
|
@ -96,9 +98,15 @@ if __name__ == "__main__":
|
||||||
if regex_str_complete not in server_term.smembers(BlackListTermsSet_Name):
|
if regex_str_complete not in server_term.smembers(BlackListTermsSet_Name):
|
||||||
# Send a notification only when the member is in the set
|
# Send a notification only when the member is in the set
|
||||||
if regex_str_complete in server_term.smembers(TrackedTermsNotificationEnabled_Name):
|
if regex_str_complete in server_term.smembers(TrackedTermsNotificationEnabled_Name):
|
||||||
|
|
||||||
|
# create mail body
|
||||||
|
mail_body = ("AIL Framework,\n"
|
||||||
|
"New occurrence for regex: " + regex_str + "\n"
|
||||||
|
''+full_paste_url + filename)
|
||||||
|
|
||||||
# Send to every associated email adress
|
# Send to every associated email adress
|
||||||
for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + regex_str_complete):
|
for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + regex_str_complete):
|
||||||
sendEmailNotification(email, regex_str)
|
sendEmailNotification(email, 'Term', mail_body)
|
||||||
|
|
||||||
set_name = 'regex_' + dico_regexname_to_redis[regex_str]
|
set_name = 'regex_' + dico_regexname_to_redis[regex_str]
|
||||||
new_to_the_set = server_term.sadd(set_name, filename)
|
new_to_the_set = server_term.sadd(set_name, filename)
|
||||||
|
|
|
@ -34,6 +34,9 @@ top_termFreq_setName_week = ["TopTermFreq_set_week", 7]
|
||||||
top_termFreq_setName_month = ["TopTermFreq_set_month", 31]
|
top_termFreq_setName_month = ["TopTermFreq_set_month", 31]
|
||||||
top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month]
|
top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, top_termFreq_setName_month]
|
||||||
|
|
||||||
|
# create direct link in mail
|
||||||
|
full_paste_url = "http://localhost:7000/showsavedpaste/?paste="
|
||||||
|
|
||||||
def add_quote_inside_tab(tab):
|
def add_quote_inside_tab(tab):
|
||||||
quoted_tab = "["
|
quoted_tab = "["
|
||||||
for elem in tab[1:-1].split(','):
|
for elem in tab[1:-1].split(','):
|
||||||
|
@ -105,9 +108,15 @@ if __name__ == "__main__":
|
||||||
if eff_percent >= dico_percent[the_set]:
|
if eff_percent >= dico_percent[the_set]:
|
||||||
# Send a notification only when the member is in the set
|
# Send a notification only when the member is in the set
|
||||||
if dico_setname_to_redis[str(the_set)] in server_term.smembers(TrackedTermsNotificationEnabled_Name):
|
if dico_setname_to_redis[str(the_set)] in server_term.smembers(TrackedTermsNotificationEnabled_Name):
|
||||||
|
|
||||||
|
# create mail body
|
||||||
|
mail_body = ("AIL Framework,\n"
|
||||||
|
"New occurrence for term: " + dico_setname_to_redis[str(the_set)] + "\n"
|
||||||
|
''+full_paste_url + filename)
|
||||||
|
|
||||||
# Send to every associated email adress
|
# Send to every associated email adress
|
||||||
for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + dico_setname_to_redis[str(the_set)]):
|
for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + dico_setname_to_redis[str(the_set)]):
|
||||||
sendEmailNotification(email, dico_setname_to_redis[str(the_set)])
|
sendEmailNotification(email, 'Term', mail_body)
|
||||||
|
|
||||||
print(the_set, "matched in", filename)
|
print(the_set, "matched in", filename)
|
||||||
set_name = 'set_' + dico_setname_to_redis[the_set]
|
set_name = 'set_' + dico_setname_to_redis[the_set]
|
||||||
|
|
Loading…
Reference in New Issue