def sendEmail(results, settings): keywords, argvals = splunk.Intersplunk.getKeywordsAndOptions() if not ("graceful" in argvals): argvals["graceful"] = 0 if getarg(argvals, "to") == None: return dcu.getErrorResults( results, argvals["graceful"], 'missing required argument: to. Please specify at least on email recipient as: "[email protected]"', ) if "subject" in argvals and "_ScheduledView__" in argvals["subject"]: argvals["subject"] = argvals["subject"].replace("_ScheduledView__", "") if len(results) == 0: msgText = "No results." else: format = getarg(argvals, "format", "html").lower() # always attach in CSV format if not toBool(getarg(argvals, "inline", "true")): format = "csv" else: # if inlining results render _time to something user readable renderTime(results) # see if we need to sort fields by widht (in text mode only) width_sort_columns = toBool(argvals.get("width_sort_columns", "true")) if format == "raw": msgText = generateRawResults(results) elif format == "html": msgText = generateHTMLResults(results) elif format == "csv": msgText = generateCSVResults(results) else: msgText = generateTextResults(results, width_sort_columns) try: # if not toBool(getarg(argvals, "sendresults", "false") ): # msgText='' mail(argvals, settings, msgText) except Exception, e: # import traceback # stack = traceback.format_exc() results = dcu.getErrorResults( results, argvals["graceful"], str(e) + " while sending mail to: " + getarg(argvals, "to") )
def sendEmail(results, settings): keywords, argvals = splunk.Intersplunk.getKeywordsAndOptions() if not ('graceful' in argvals): argvals['graceful'] = 0 if getarg(argvals, "to") == None: return dcu.getErrorResults(results, argvals['graceful'], "missing required argument: to. Please specify at least on email recipient as: \"[email protected]\"") if 'subject' in argvals and '_ScheduledView__' in argvals['subject']: argvals['subject'] = argvals['subject'].replace('_ScheduledView__', '') if len(results) == 0: msgText = "No results." else: format = getarg(argvals, "format", "html").lower() # always attach in CSV format if not toBool(getarg(argvals, "inline", "true") ): format = "csv" else: # if inlining results render _time to something user readable renderTime(results) # see if we need to sort fields by widht (in text mode only) width_sort_columns = toBool(argvals.get("width_sort_columns", "true")) if format == "raw": msgText = generateRawResults(results) elif format == "html": msgText = generateHTMLResults(results) elif format =="csv": msgText = generateCSVResults(results) else: msgText = generateTextResults(results, width_sort_columns) try: # if not toBool(getarg(argvals, "sendresults", "false") ): # msgText='' mail(argvals, settings, msgText) except Exception, e: #import traceback #stack = traceback.format_exc() results = dcu.getErrorResults(results, argvals['graceful'], str(e) + ' while sending mail to: ' + getarg(argvals, "to"))
if len(str) == 0: return str if str.startswith("'") and str.endswith("'"): str = str[1:-1] if str.startswith('"') and str.endswith('"'): str = str[1:-1] return str results, dummyresults, settings = splunk.Intersplunk.getOrganizedResults() keywords, args = splunk.Intersplunk.getKeywordsAndOptions( ) # args = dcu.getArgValues() if (len(sys.argv) < 5): results = dcu.getErrorResults( results, graceful, 'Usage: createrss <path = rss path> <name = name/title of the rss item> <link = rss item link> <descr = rss item description> <count = maximum number of items> [graceful = (1|0)]' ) splunk.Intersplunk.outputResults(results) sys.exit() path = trimQuotes(args["path"]) if "path" in args else "" name = trimQuotes(args["name"]) if "name" in args else "" link = trimQuotes(args["link"]) if "link" in args else "" desc = trimQuotes(args["descr"]) if "descr" in args else "" thresh = int(args["count"]) if "count" in args else 100 graceful = 0 if ("graceful" in args): graceful = int(args["graceful"]) # ensure nothing dangerous
#attachments must be added before body so body can inlclude errors cause by attachments buildAttachments(settings, ssContent, resultsWithRenderedTime, emailMix, jobCount) buildPlainTextBody(ssContent, resultsWithRenderedTime, settings, emailAlt, jobCount) buildHTMLBody(ssContent, resultsWithRenderedTime, settings, emailAlt, jobCount) buildHeaders(argvals, ssContent, emailMix, sid, serverInfoContent) try: mail(emailMix, argvals, ssContent) except Exception, e: errorMessage = str(e) + ' while sending mail to: ' + ssContent.get( "action.email.to") logger.error(errorMessage) results = dcu.getErrorResults(results, ssContent['graceful'], errorMessage) return results def buildSafeMergedValues(ssContent, results, serverInfoContent, jobContent, results_file): mergedObject = {} #namespace the keys for key, value in jobContent.iteritems(): mergedObject['token.job.' + key] = value mergedObject['token.search_id'] = jobContent.get('sid') for key, value in ssContent.iteritems(): mergedObject['token.' + key] = value mergedObject['token.name'] = ssContent.get('name')
def trimQuotes(str): if len(str) == 0: return str if str.startswith("'") and str.endswith("'"): str = str[1:-1] if str.startswith('"') and str.endswith('"'): str = str[1:-1] return str results,dummyresults,settings = splunk.Intersplunk.getOrganizedResults() keywords, args = splunk.Intersplunk.getKeywordsAndOptions() # args = dcu.getArgValues() if(len(sys.argv) < 5): results = dcu.getErrorResults(results, graceful, 'Usage: createrss <path = rss path> <name = name/title of the rss item> <link = rss item link> <descr = rss item description> <count = maximum number of items> [graceful = (1|0)]') splunk.Intersplunk.outputResults( results ) sys.exit() path = trimQuotes(args["path"] ) if "path" in args else "" name = trimQuotes(args["name"] ) if "name" in args else "" link = trimQuotes(args["link"] ) if "link" in args else "" desc = trimQuotes(args["descr"]) if "descr" in args else "" thresh = int(args["count"]) if "count" in args else 100 graceful = 0 if("graceful" in args): graceful = int(args["graceful"]) # ensure nothing dangerous if ".." in path or "/" in path or "\\" in path:
setUserCrendentials(argvals, settings) #build all the different email components jobCount = getJobCount(jobContent) #attachments must be added before body so body can inlclude errors cause by attachments buildAttachments(settings, ssContent, resultsWithRenderedTime, emailMix, jobCount) buildPlainTextBody(ssContent, resultsWithRenderedTime, settings, emailAlt, jobCount) buildHTMLBody(ssContent, resultsWithRenderedTime, settings, emailAlt, jobCount) buildHeaders(argvals, ssContent, emailMix, sid, serverInfoContent) try: mail(emailMix, argvals, ssContent) except Exception, e: errorMessage = str(e) + ' while sending mail to: ' + ssContent.get("action.email.to") logger.error(errorMessage) results = dcu.getErrorResults(results, ssContent['graceful'], errorMessage) return results def buildSafeMergedValues(ssContent, results, serverInfoContent, jobContent, results_file): mergedObject = {} #namespace the keys for key, value in jobContent.iteritems(): mergedObject['token.job.'+key] = value mergedObject['token.search_id'] = jobContent.get('sid') for key, value in ssContent.iteritems(): mergedObject['token.'+key] = value mergedObject['token.name'] = ssContent.get('name') mergedObject['token.app'] = ssContent.get('app') mergedObject['token.owner'] = ssContent.get('owner')