Add SSL support to email notification.

pull/169/head
Mark Jessop 2019-05-04 13:49:46 +09:30
rodzic 8547c724c6
commit 3f5e930fd4
5 zmienionych plików z 49 dodań i 8 usunięć

Wyświetl plik

@ -66,10 +66,6 @@ exporter_functions = [] # This list will hold references to the exporter add fun
temporary_block_list = {}
# Scan Result Queue
# Scan results are processed asynchronously from the main scanner object.
#scan_results = Queue()
def allocate_sdr(check_only = False, task_description = ""):
""" Allocate an un-used SDR for a task.
@ -559,6 +555,10 @@ def main():
_email_notification = EmailNotification(
smtp_server = config['email_smtp_server'],
smtp_port = config['email_smtp_port'],
smtp_ssl = config['email_smtp_ssl'],
smtp_login = config['email_smtp_login'],
smtp_password = config['email_smtp_password'],
mail_from = config['email_from'],
mail_to = config['email_to'],
mail_subject = config['email_subject']

Wyświetl plik

@ -43,6 +43,10 @@ def read_auto_rx_config(filename):
# Email Settings
'email_enabled': False,
'email_smtp_server': 'localhost',
'email_smtp_port': 25,
'email_smtp_ssl': False,
'email_smtp_login': 'None',
'email_smtp_password': 'None',
'email_from': 'sonde@localhost',
'email_to': None,
'email_subject': "<type> Sonde launch detected on <freq>: <id>",
@ -144,6 +148,10 @@ def read_auto_rx_config(filename):
try:
auto_rx_config['email_enabled'] = config.getboolean('email', 'email_enabled')
auto_rx_config['email_smtp_server'] = config.get('email', 'smtp_server')
auto_rx_config['email_smtp_port'] = config.get('email', 'smtp_port')
auto_rx_config['email_smtp_ssl'] = config.getboolean('email', 'smtp_ssl')
auto_rx_config['email_smtp_login'] = config.get('email', 'smtp_login')
auto_rx_config['email_smtp_password'] = config.get('email', 'smtp_password')
auto_rx_config['email_from'] = config.get('email', 'from')
auto_rx_config['email_to'] = config.get('email', 'to')
auto_rx_config['email_subject'] = config.get('email', 'subject')
@ -270,12 +278,14 @@ def read_auto_rx_config(filename):
auto_rx_config['experimental_decoders']['M10'] = config.getboolean('advanced', 'm10_experimental')
auto_rx_config['experimental_decoders']['DFM'] = config.getboolean('advanced', 'dfm_experimental')
# When LMS6 support is added, that will have to be added in here.
auto_rx_config['web_debug'] = config.getboolean('web', 'web_debug')
except:
logging.error("Config - Missing new advanced decoder settings, using defaults.")
auto_rx_config['rs41_drift_tweak'] = False
auto_rx_config['decoder_spacing_limit'] = 15000
auto_rx_config['decoder_stats'] = False
auto_rx_config['web_debug'] = False
@ -331,6 +341,12 @@ def read_auto_rx_config(filename):
else:
# Create a global copy of the configuration file at this point
global_config = copy.deepcopy(auto_rx_config)
# Excise some sensitive parameters from the global config.
global_config.pop('email_smtp_login')
global_config.pop('email_smtp_password')
global_config.pop('email_smtp_server')
return auto_rx_config

Wyświetl plik

@ -32,9 +32,13 @@ class EmailNotification(object):
# We require the following fields to be present in the input telemetry dict.
REQUIRED_FIELDS = [ 'id', 'lat', 'lon', 'alt', 'type', 'freq']
def __init__(self, smtp_server = 'localhost', mail_from = None, mail_to = None, mail_subject = None):
def __init__(self, smtp_server = 'localhost', smtp_port=25, smtp_ssl=False, smtp_login="None", smtp_password="None", mail_from = None, mail_to = None, mail_subject = None):
""" Init a new E-Mail Notification Thread """
self.smtp_server = smtp_server
self.smtp_port = smtp_port
self.smtp_ssl = smtp_ssl
self.smtp_login = smtp_login
self.smtp_password = smtp_password
self.mail_from = mail_from
self.mail_to = mail_to
self.mail_subject = mail_subject
@ -118,7 +122,14 @@ class EmailNotification(object):
msg['To'] = self.mail_to
msg["Date"] = formatdate()
s = smtplib.SMTP(self.smtp_server)
if self.smtp_ssl:
s = smtplib.SMTP_SSL(self.smtp_server, self.smtp_port)
else:
s = smtplib.SMTP(self.smtp_server, self.smtp_port)
if self.smtp_login != "None":
s.login(self.smtp_login, self.smtp_password)
s.sendmail(msg['From'], msg['To'], msg.as_string())
s.quit()

Wyświetl plik

@ -138,7 +138,10 @@ def shutdown_flask(shutdown_key):
@app.route('/start_decoder', methods=['POST'])
def flask_start_decoder():
""" Inject a scan result, which will cause a decoder to be started if there
are enough resources (SDRs) to do so. """
are enough resources (SDRs) to do so.
Example:
curl -d "type=DFM&freq=403240000" -X POST http://localhost:5000/start_decoder
"""
if request.method == 'POST' and autorx.config.global_config['web_debug']:
_type = str(request.form['type'])
_freq = float(request.form['freq'])
@ -154,7 +157,10 @@ def flask_start_decoder():
@app.route('/stop_decoder', methods=['POST'])
def flask_stop_decoder():
""" Request that a decoder process be halted. """
""" Request that a decoder process be halted.
Example:
curl -d "freq=403250000" -X POST http://localhost:5000/stop_decoder
"""
if request.method == 'POST' and autorx.config.global_config['web_debug']:
_freq = float(request.form['freq'])

Wyświetl plik

@ -228,6 +228,10 @@ payload_summary_port = 55672
[email]
email_enabled = False
smtp_server = localhost
smtp_port = 25
smtp_ssl = False
smtp_login = None
smtp_password = None
from = sonde@localhost
to = someone@example.com
# Custom subject field. The following fields can be included:
@ -288,6 +292,10 @@ web_port = 5000
# Note: The higher this number, the more data the client will need to load in on startup
archive_age = 120
# Enable some additional debug endpoints. These are currently only used for development testing purposes.
# Do not set this to True on an internet-facing auto_rx instance!!!
web_debug = False
##################
# DEBUG SETTINGS #