Skip to content
Snippets Groups Projects
Unverified Commit 2313d72a authored by Ravi Tripathi's avatar Ravi Tripathi Committed by GitHub
Browse files

Merge pull request #24 from diedpigs/feat-notify-user-agent

Add notify user agent
parents ecc4069e e63b229b
No related branches found
No related tags found
5 merge requests!147Merge previous default branch feat-cod-rmq into main,!85kill nginx process running under user from login node,!51Fix acct create wait,!39WIP:Feat cod rmq,!38WIP: Feat cod rmq
# Some variable for email
Server = 'localhost'
My_email = 'root@localhost'
Sender = 'ROOT@LOCALHOST'
Sender_alias = 'Services'
Subject = 'New User Account'
Info_url = 'https://www.google.com'
Head = f"""From: {Sender_alias} <{Sender}>
To: <{{{{ to }}}}>
Subject: {Subject}
"""
Body = f"""
Hi {{{{ username }}}}
Your account has been set up with:
============================
User ID: {{{{ username }}}}
============================
If you have any questions, please visit:
{Info_url}
or email at {My_email}
Cheers,
"""
Whole_mail = Head + Body
#!/usr/bin/env python
import sys
import json
import rc_util
import smtplib
import dataset
from rc_rmq import RCRMQ
from jinja2 import Template
from datetime import datetime
import mail_config as mail_cfg
task = 'notify_user'
args = rc_util.get_args()
logger = rc_util.get_logger(args)
db = dataset.connect(f'sqlite:///.agent_db/{task}.db')
table = db['notified_user']
# Instantiate rabbitmq object
rc_rmq = RCRMQ({'exchange': 'RegUsr', 'exchange_type': 'topic'})
# Email instruction to user
def notify_user(ch, method, properties, body):
msg = json.loads(body)
username = msg['username']
user_email = msg['email']
msg['task'] = task
msg['success'] = False
try:
# Search username in database
record = table.find_one(username=username)
if record:
# Update counter
count = record['count']
table.update({'username': username, 'count': count + 1}, ['username'])
logger.debug(f'User {username} counter updated to {count + 1}')
else:
# Send email to user
receivers = [user_email, mail_cfg.My_email]
message = Template(mail_cfg.Whole_mail).render(username=username, to=user_email)
if args.dry_run:
logger.info(f'smtp = smtplib.SMTP({mail_cfg.Server})')
logger.info(f'smtp.sendmail({mail_cfg.Sender}, {receivers}, message)')
logger.info(f"table.insert({{'username': {username}, 'count': 1, 'sent_at': datetime.now()}})")
else:
smtp = smtplib.SMTP(mail_cfg.Server)
smtp.sendmail(mail_cfg.Sender, receivers, message)
logger.debug(f'Email sent to: {user_email}')
table.insert({
'username': username,
'count': 1,
'sent_at': datetime.now()
})
logger.debug(f'User {username} inserted into database')
msg['success'] = True
except Exception as exception:
logger.error('', exc_info=True)
# Send confirm message
rc_rmq.publish_msg({
'routing_key': 'confirm.' + username,
'msg': msg
})
logger.debug(f'User {username} confirmation sent')
# Acknowledge the message
ch.basic_ack(delivery_tag=method.delivery_tag)
if __name__ == "__main__":
logger.info(f'Start listening to queue: {task}')
rc_rmq.start_consume({
'queue': task,
'routing_key': "notify.*",
'cb': notify_user
})
logger.info('Disconnected')
rc_rmq.disconnect()
pika==1.1.0 pika==1.1.0
sh==1.12.14 dataset==1.3.1
Jinja2==2.11.2
sh==1.12.14
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment