From 24e8cdbbf6ba077b25c5b30d4d4546610520df52 Mon Sep 17 00:00:00 2001 From: Alex Iribarren Date: May 18 2020 11:30:11 +0000 Subject: [PATCH 1/3] Add CC/BCC for email notifications --- diff --git a/util/koji-gc b/util/koji-gc index c24fabe..71303a2 100755 --- a/util/koji-gc +++ b/util/koji-gc @@ -76,6 +76,8 @@ def get_options(): help=_("Email domain appended to Koji username for notifications")) parser.add_option("--from-addr", default="Koji Build System ", help=_("From address for notifications")) + parser.add_option("--cc-addr", help=_("CC address for notifications")) + parser.add_option("--bcc-addr", help=_("BCC address for notifications")) parser.add_option("--email-template", default="/etc/koji-gc/email.tpl", help=_("notification template")) parser.add_option("--action", help=_("action(s) to take")) @@ -135,6 +137,8 @@ def get_options(): ['smtp_user', None, 'string'], ['smtp_pass', None, 'string'], ['from_addr', None, 'string'], + ['cc_addr', None, 'string'], + ['bcc_addr', None, 'string'], ['email_template', None, 'string'], ['email_domain', None, 'string'], ['mail', None, 'boolean'], @@ -400,23 +404,30 @@ Build: %%(name)s-%%(version)s-%%(release)s msg['Subject'] = "%i builds marked for deletion" % len(builds) msg['From'] = options.from_addr msg['To'] = "%s@%s" % (owner_name, options.email_domain) # XXX! + emails = [msg['To']] + if options.cc_addr: + msg['Cc'] = options.cc_addr + emails.append(msg['Cc']) + if options.bcc_addr: + msg['Bcc'] = options.bcc_addr + emails.append(msg['Bcc']) msg['X-Koji-Builder'] = owner_name if options.test: if options.debug: print(str(msg)) else: - print("Would have sent warning notice to %s" % msg['To']) + print("Would have sent warning notice to %s" % emails) else: if options.debug: - print("Sending warning notice to %s" % msg['To']) + print("Sending warning notice to %s" % emails) try: s = smtplib.SMTP(options.smtp_host) if options.smtp_user is not None and options.smtp_pass is not None: s.login(options.smtp_user, options.smtp_pass) - s.sendmail(msg['From'], msg['To'], msg.as_string()) + s.sendmail(msg['From'], emails, msg.as_string()) s.quit() except Exception: - print("FAILED: Sending warning notice to %s" % msg['To']) + print("FAILED: Sending warning notice to %s" % emails) def main(args): From 624229784ca9e91632789ec0914104b12166e666 Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: May 18 2020 11:30:11 +0000 Subject: [PATCH 2/3] hide bcc addresses Fixes: https://pagure.io/koji/issue/2169 --- diff --git a/util/koji-gc b/util/koji-gc index 71303a2..6648b7f 100755 --- a/util/koji-gc +++ b/util/koji-gc @@ -76,8 +76,10 @@ def get_options(): help=_("Email domain appended to Koji username for notifications")) parser.add_option("--from-addr", default="Koji Build System ", help=_("From address for notifications")) - parser.add_option("--cc-addr", help=_("CC address for notifications")) - parser.add_option("--bcc-addr", help=_("BCC address for notifications")) + parser.add_option("--cc-addr", help=_("CC address for notifications (multiple)"), + action="append", metavar="EMAIL_ADDRESS") + parser.add_option("--bcc-addr", help=_("BCC address for notifications (multiple)"), + action="append", metavar="EMAIL_ADDRESS") parser.add_option("--email-template", default="/etc/koji-gc/email.tpl", help=_("notification template")) parser.add_option("--action", help=_("action(s) to take")) @@ -163,6 +165,10 @@ def get_options(): setattr(defaults, name, config.getboolean(*alias)) else: setattr(defaults, name, config.get(*alias)) + if config.has_option('main', 'cc_addr'): + setattr(defaults, 'cc_addr', config.get('main', 'cc_addr').split(',')) + if config.has_option('main', 'bcc_addr'): + setattr(defaults, 'bcc_addr', config.get('main', 'bcc_addr').split(',')) # parse again with defaults (options, args) = parser.parse_args(values=defaults) options.config = config @@ -404,13 +410,9 @@ Build: %%(name)s-%%(version)s-%%(release)s msg['Subject'] = "%i builds marked for deletion" % len(builds) msg['From'] = options.from_addr msg['To'] = "%s@%s" % (owner_name, options.email_domain) # XXX! - emails = [msg['To']] + emails = [msg['To']] + options.cc_addr + options.bcc_addr if options.cc_addr: - msg['Cc'] = options.cc_addr - emails.append(msg['Cc']) - if options.bcc_addr: - msg['Bcc'] = options.bcc_addr - emails.append(msg['Bcc']) + msg['Cc'] = ','.join(options.cc_addr) msg['X-Koji-Builder'] = owner_name if options.test: if options.debug: From 058b8d83c61ed34a3b8d42898ab4b30a5df2b0eb Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: May 18 2020 11:30:11 +0000 Subject: [PATCH 3/3] fix indentation --- diff --git a/util/koji-gc b/util/koji-gc index 6648b7f..e107a94 100755 --- a/util/koji-gc +++ b/util/koji-gc @@ -426,7 +426,7 @@ Build: %%(name)s-%%(version)s-%%(release)s s = smtplib.SMTP(options.smtp_host) if options.smtp_user is not None and options.smtp_pass is not None: s.login(options.smtp_user, options.smtp_pass) - s.sendmail(msg['From'], emails, msg.as_string()) + s.sendmail(msg['From'], emails, msg.as_string()) s.quit() except Exception: print("FAILED: Sending warning notice to %s" % emails)