PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /opt/sharedrads/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //opt/sharedrads/send_pp_email |
#!/opt/imh-python/bin/python3 """This will allow you to send common PP emails from the command line""" __author__ = 'chases' import sys import logging import argparse from platform import node import pp_api import rads from rads.color import red sys.path.insert(0, '/opt/sharedrads/python') import picker # pylint: disable=wrong-import-position,wrong-import-order def get_inputs(): """Will take input in the form of -u username or $1""" parser = argparse.ArgumentParser() parser.add_argument('-u', dest='user', help='Set user to send mail to') args, other = parser.parse_known_args() if args.user: if rads.is_cpuser(args.user): user = args.user else: sys.exit("Not a valid cPanel user") elif other: if rads.is_cpuser(other[0]): user = other[0] else: sys.exit("Not a valid cPanel user") else: parser.print_usage() sys.exit("No user provided") if rads.IMH_CLASS == 'reseller' and rads.is_child(user): try: user = rads.get_owner(user) except rads.CpuserError as exc: sys.exit(exc) return user def set_available_emails(): """Dictionary with values for subject, eid, and vars from PP emails""" if 'inmotionhosting' in node() or 'servconfig' in node(): email_template_info = [ { 'subject': "wp-cron.php Disabled Due to High Resource Usage", 'eid': 446, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "WordPress Performance and Caching", 'eid': 117, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Account Resource Overage", 'eid': 445, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Hacked Account Notification", 'eid': 45, 'var1': 'List of hacked files: ', 'var2': None, 'var3': None, }, { 'subject': "XMLRPC Abuse", 'eid': 669, 'var1': 'Location of updated .htaccess file: ', }, { 'subject': "Phishing/Spamming due to Hacked Account", 'eid': 127, 'var1': 'Organization Targeted: ', 'var2': 'List of files that were found: ', 'var3': None, }, { 'subject': "Unapproved Bulk Email", 'eid': 96, 'var1': 'From email address', 'var2': None, }, { 'subject': "Spamvertisement Complaint Received", 'eid': 146, 'var1': 'Email address sending the spamvertisement', 'var2': 'Domain name sending the spamvertisement', 'var3': None, }, { 'subject': "Long-Running MySQL Queries", 'eid': 22, 'var1': 'MySQL Query Info', 'var2': None, 'var3': None, }, { 'subject': "Storage of Backups", 'eid': 104, 'var1': 'List location(s) where backups are being stored', 'var2': None, 'var3': None, }, { 'subject': "Email Password Reset", 'eid': 617, 'var1': 'Reason: ', 'var2': None, 'var3': None, }, { 'subject': "cPanel Password Reset", 'eid': 615, 'var1': 'Reason: ', 'var2': None, 'var3': None, }, { 'subject': "Unauthenticated Email Script", 'eid': 318, 'var1': 'Spam Subject: ', 'var2': 'URL or Sending Path: ', 'var3': None, }, { 'subject': "Terms of Service Violation", 'eid': 647, 'var1': 'Type of Violation (not legal): ', 'var2': 'Location: ', 'var3': None, }, { 'subject': "Caching Recommended (CMS-agnostic)", 'eid': 304, 'var1': 'Reason: ', 'var2': None, 'var3': None, }, { 'subject': "Child cPanel Password Reset", 'eid': 620, 'var1': 'CMS Name: ', 'var2': None, 'var3': None, }, { 'subject': "Web Spiders and Robots.txt", 'eid': 121, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Bulk Mailing Information Request", 'eid': 39, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Unattended Forum", 'eid': 310, 'var1': 'Location of forum: ', 'var2': None, 'var3': None, }, { 'subject': "Forwarders Disabled", 'eid': 447, 'var1': 'Forwarders that were disabled: ', 'var2': None, 'var3': None, }, { 'subject': "Scripting Issue - Core Dumping", 'eid': 109, 'var1': 'Location of core dumps: ', 'var2': 'Process causing core dumps: ', 'var3': None, }, ] elif 'webhostinghub' in node(): email_template_info = [ { 'subject': "Caching Recommended (CMS-agnostic)", 'eid': 372, 'var1': 'CMS Name: ', 'var2': None, 'var3': None, }, { 'subject': "Spamvertisement Complaint Received", 'eid': 365, 'var1': 'Website sending spam', 'var2': 'Address sending spam', 'var3': None, }, { 'subject': "XMLRPC Abuse", 'eid': 670, 'var1': 'Location of updated .htaccess file: ', }, { 'subject': "Bulk Mailing Information Request", 'eid': 185, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Hacked Account Notification", 'eid': 334, 'var1': 'List of hacked files', 'var2': None, 'var3': None, }, { 'subject': "Unattended Forum", 'eid': 439, 'var1': 'Location of forum: ', 'var2': None, 'var3': None, }, { 'subject': "WordPress Performance and Caching", 'eid': 374, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Web Spiders and Robots.txt", 'eid': 343, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Storage of Backups", 'eid': 379, 'var1': 'List location(s) where backups are being stored', 'var2': None, 'var3': None, }, { 'subject': "Scripting Issue - Core Dumping", 'eid': 363, 'var1': 'Location of core dumps', 'var2': 'Script causing core dump', 'var3': None, }, { 'subject': "Long-Running MySQL Queries", 'eid': 332, 'var1': 'MySQL Query Info: ', 'var2': None, 'var3': None, }, { 'subject': "wp-cron.php Disabled Due to High Resource Usage", 'eid': 837, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Account Resource Overage", 'eid': 336, 'var1': None, 'var2': None, 'var3': None, }, { 'subject': "Phishing/Spamming due to Hacked Account", 'eid': 388, 'var1': 'Organization Targeted: ', 'var2': 'List of files that were found: ', 'var3': None, }, { 'subject': "Unapproved Bulk Email", 'eid': 381, 'var1': 'From email address: ', 'var2': None, 'var3': None, }, { 'subject': "Email Password Reset", 'eid': 618, 'var1': 'Reason: ', 'var2': 'List of users: ', 'var3': None, }, { 'subject': "Unauthenticated Email Script", 'eid': 734, 'var1': 'Spam Subject: ', 'var2': 'URL or Sending Path: ', 'var3': None, }, { 'subject': "cPanel Password Reset", 'eid': 616, 'var1': 'Reason: ', 'var2': None, 'var3': None, }, { 'subject': "Terms of Service Violation", 'eid': 648, 'var1': 'Type of Violation (not legal): ', 'var2': 'Location: ', 'var3': None, }, { 'subject': "Forwarders Disabled", 'eid': 448, 'var1': 'Forwarders that were disabled: ', 'var2': None, 'var3': None, }, ] else: sys.exit('Error: Unable to find brand from hostname') return email_template_info def generate_menu(email_template_info, user): """Uses picker located in: /opt/imh-python/lib/python3/site-packages/ As a wrapper for curses to create a menu""" email_subjects = [] for email_type in email_template_info: email_subjects.append(email_type['subject']) opts = picker.Picker( title='Select PP email to send to %s' % user, options=sorted(email_subjects), ).get_selected() if opts: return opts sys.exit("No email selected") def mail_users(message_id, cpuser): """This part sends the message to the user. Reference for pp_api emails""" try: if rads.IMH_CLASS == 'RESELLER' and rads.is_child(cpuser): cpuser = rads.get_owner(cpuser) except rads.CpuserError as exc: sys.exit(exc) pp_connect = pp_api.PowerPanel() template_id = message_id['eid'] data = { 'template': template_id, 'cpanelUser': cpuser, 'variable_1': message_id['var1'], 'variable_2': message_id['var2'], 'variable_3': message_id['var3'], } results = pp_connect.call("notification.send", **data) if results.status != 0: log_error = f"Failed to send notification to {cpuser}" logging.error(log_error) print(red('Failed')) if hasattr(results, 'message'): print(results.message) sys.exit(1) else: whoami = rads.get_login() log_success = "Success: {} sent to {} by {}".format( message_id['subject'], cpuser, whoami ) logging.info(log_success) print("Message Sent Successfully") def parse_opts_and_get_variables(opts, email_template_info, user): """Takes the messages, finds the coresponding eid, collects required variables, and sends to mail_users().""" for value in opts: for message in email_template_info: if value == message['subject']: if message['var1'] is not None: print( "Gathering Variables for email %s" % message['subject'] ) var = input("%s : " % message['var1']) message['var1'] = var if message['var2'] is not None: var2 = input("%s : " % message['var2']) message['var2'] = var2 if message['var3'] is not None: var3 = input("%s : " % message['var3']) message['var3'] = var3 print("Connecting to AMP to send Message") mail_users(message, user) def main(): """Main function: collect args, post email""" rads.setup_logging( path='/var/log/ppnotifications.log', loglevel=logging.INFO, print_out=False, ) user = get_inputs() email_template_info = set_available_emails() opts = generate_menu(email_template_info, user) parse_opts_and_get_variables(opts, email_template_info, user) if __name__ == "__main__": main()