Format: application/x-python-code
⬇ Download File (3.1 KB)
   1  o
   2  
   3  h��@s>ddlZddlZddlZddlZddlmZGdd�d�ZdS)�N)�MIMETextc@s:eZdZdefdd�Zdd�Zdd�Zdd	�Zd
   4  d�ZdS)
   5  �AlertingHandler�alerting_configcCs||pi|_i|_d|jvr|�|jd�|_dSd|jvr<|j�d�|j�d�|j�d�|j�d�|j�d�d�|_dSdS)NZsmtp_secret_name�smtp_server�	smtp_port�
   6  smtp_username�
   7  smtp_password�
   8  from_email�rrrrr	)r�smtp_credentials�!get_smtp_credentials_from_secrets�get)�selfr�r�EC:\Users\shubh\Videos\recall\recall_audit_sampler\alerting_handler.py�__init__s
   9  
  10  
  11  
  12  
  13  
  14  
  15  
  16  ��zAlertingHandler.__init__c
  17  Cs�z't�d�}|j|d�}t�|d�}|dt|d�|d|d|dd	�WStyD}ztd
  18  t|����iWYd}~Sd}~ww)NZsecretsmanager)ZSecretIdZSecretStringrrrrr	r
  19  z>[ERROR] Failed to fetch SMTP credentials from SecretsManager: )	�boto3�clientZget_secret_value�json�loads�int�	Exception�print�str)r�secret_namer�responseZsecret�errrrs
  20  
  21  ���z1AlertingHandler.get_smtp_credentials_from_secretsc
  22  Cs�d|jvr)z|�||�Wnty(}ztdt|����WYd}~nd}~wwd|jvrTz	|�||�WdStyS}ztdt|����WYd}~dSd}~wwdS)z/Send both Slack and Email alerts if configured.�slack_webhook_urlz&[WARNING] Failed to send Slack alert: N�
  23  email_listz&[WARNING] Failed to send Email alert: )r�send_slack_alertrrr�send_email_alert)r�subject�message_bodyrrrr�
  24  send_alert)s
  25  ��
  26   ���zAlertingHandler.send_alertcCsl|j�d�}dd|�d|��i}ddi}tj||t�|�d�}|jdkr0td	|j�d
  27  |j����t	d�dS)Nr�text�*z*
  28  zContent-Typezapplication/json)�headers�data��z!Slack webhook failed with status z: zUCCESS] Slack alert sent.)
  29  rr
  30  �requestsZpostr�dumpsZstatus_coderr$r)rr!r"rZ
  31  slack_messager&rrrrr7s�
  32  z AlertingHandler.send_slack_alertcCs�|js	td�dS|jd}|jd}|jd}|jd}|jd}|j�dg�}t|�}	||	d<||	d	<d
  33  �|�|	d<t�||��}
  34  |
  35  ��|
  36  �	||�|
  37  �
  38  |||	���Wd�n1s`wYtdd
  39  �|����dS)
  40  Nz=[INFO] SMTP credentials not configured; skipping email alert.rrrrr	rZSubjectZFromz, ZToz[SUCCESS] Email alert sent to: )rrrr
  41  r�join�smtplibZSMTPZstarttlsZloginZsendmailZ	as_string)rr!r"rrrrr	Z	to_emails�msgZserverrrrr Ds&
  42  
  43  
  44  
  45  
  46  �z AlertingHandler.send_email_alertN)	�__name__�
  47  __module__�__qualname__�dictrrr#rr rrrrrs
  48  r)rrr,r)Zemail.mime.textrrrrrr�<module>s