SSLVerifierV2_GenerateEmailBody
Generates the HTML needed for a formatted email to be sent using the outputs of !SSLVerifierV2, as part of the SSLVerifierV2 content pack.
python · SSL Certificates
Details
| ID | SSLVerifierV2_GenerateEmailBody |
|---|---|
| Language | python |
| From Version | 6.0.0 |
| Docker Image | demisto/ansible-runner:1.0.0.10189215 |
README
Generates the HTML needed for a formatted email to be sent using the outputs of !SSLVerifierV2, as part of the SSLVerifierV2 content pack.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
Inputs
There are no inputs for this script.
Outputs
| Path | Description | Type |
|---|---|---|
| SSLReport.HTML | Email body formatted in HTML | string |
from datetime import datetime import demistomock as demisto from CommonServerPython import * def create_html_table(headers, certList, listType): tableBody = "" tableBody += "\t\t<p>\n\t\t\t<span" # Table header setup if listType == "expired": tableBody += ">\n\t\t\t\t<h1>EXPIRED CERTIFICATES</h1>\n\t\t\t</span>\n\t\t</p>\n" elif listType == "expiring": tableBody += ">\n\t\t\t\t<h2>Certificates expiring in 90 days or less</h2>\n\t\t\t</span>\n\t\t</p>\n" elif listType == "warning": tableBody += ( ' style="color: #ff9900;">\n\t\t\t\t<strong>Certificates expiring between 91 and 180 days' + " from today</strong>\n\t\t\t</span>\n\t\t</p>\n" ) elif listType == "good": tableBody += ( ' style="color: #339966;">\n\t\t\t\t<strong>Certificates expiring more than 180 days from today</strong>' + "\n\t\t\t</span>\n\t\t</p>\n" ) # Setup table tableBody += '\t\t<table style="border-collapse: collapse; width: 100%;" border="1">\n\t\t\t<tbody>' # Setup table row headers tableBody += '\n\t\t\t\t<tr><td style="width: 33.3333%; text-align: center;"><strong>Site/Domain/IP</strong></td>' tableBody += '<td style="width: 33.3333%; text-align: center;"><strong>Expiration Date</strong></td>' if listType != "expired": tableBody += '<td style="width: 33.3333%; text-align: center;"><strong>Days to Expiration</strong></td></tr>\n' else: tableBody += '<td style="width: 33.3333%; text-align: center;"><strong>Days Expired</strong></td></tr>\n' # Parse table rows from certList for cert in certList: tableBody += '\t\t\t\t<tr>\n\t\t\t\t\t<td style="text-align: center;">' + cert["Domain"] tableBody += '</td>\n\t\t\t\t\t<td style="text-align: center;">' + cert["ExpirationDate"] tableBody += ( '</td>\n\t\t\t\t\t<td style="text-align: center;">' + str(cert["TimeToExpiration"]) + " days</td>" + "\n\t\t\t\t</tr>\n" ) tableBody += "\t\t\t</tbody>\n\t\t</table>\n" return tableBody def main(): try: emailHTMLBody = "" headers = ("Site", "Expiration Date", "Days to Expiration") good = demisto.get(demisto.context(), "SSLReport.Good") warning = demisto.get(demisto.context(), "SSLReport.Warning") expiring = demisto.get(demisto.context(), "SSLReport.Expiring") expired = demisto.get(demisto.context(), "SSLReport.Expired") # Setup email header emailHTMLBody += ( "<html>\n\t<head>\n\t\t<style>\n\t\t\tp {\n\t\t\t\ttext-align: center;\n\t\t\t}" + "\n\t\t\th1 {\n\t\t\t\ttext-align: center;\n\t\t\t\tcolor: #ff0000;\n\t\t\t}" + "\n\t\t\th2 {\n\t\t\t\ttext-align: center;\n\t\t\t\tcolor: #ff0000;\n\t\t\t}" + "\n\t\t\th3 {\n\t\t\t\ttext-align: center;\n\t\t\t\tcolor: #000000;\n\t\t\t\tfont-weight:" " bold;\n\t\t\t\t" + "font-size: 1.5em;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}" "</style></head>\n\t<body>\n\t\t<h3>\n" + "\t\t\tSSL Certificate Report for " + datetime.today().strftime("%Y/%m/%d") + "\n\t\t</h3>\n" ) # Setup tables if expired: emailHTMLBody += create_html_table(headers, expired, "expired") if expiring: emailHTMLBody += create_html_table(headers, expiring, "expiring") if warning: emailHTMLBody += create_html_table(headers, warning, "warning") if good: emailHTMLBody += create_html_table(headers, good, "good") emailHTMLBody += "\t</body>\n</html>" demisto.setContext("SSLReport.HTML", emailHTMLBody) except Exception as ex: return_error(f"An Error occured: {ex}", error=ex) if __name__ in ("__main__", "__builtin__", "builtins"): main()