packages/tomcat/data_stream/log/agent/stream/tcp.yml.hbs (2,591 lines of code) (raw):

tcp: host: "{{tcp_host}}:{{tcp_port}}" tags: {{#if preserve_original_event}} - preserve_original_event {{/if}} {{#each tags as |tag i|}} - {{tag}} {{/each}} fields_under_root: true fields: observer: vendor: "Apache" product: "TomCat" type: "Web" {{#contains "forwarded" tags}} publisher_pipeline.disable_host: true {{/contains}} processors: {{#if processors}} {{processors}} {{/if}} - script: lang: javascript params: ecs: true rsa: {{rsa_fields}} tz_offset: {{tz_offset}} keep_raw: {{keep_raw_fields}} debug: {{debug}} source: | // Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License; // you may not use this file except in compliance with the Elastic License. /* jshint -W014,-W016,-W097,-W116 */ var processor = require("processor"); var console = require("console"); var FLAG_FIELD = "log.flags"; var FIELDS_OBJECT = "nwparser"; var FIELDS_PREFIX = FIELDS_OBJECT + "."; var defaults = { debug: false, ecs: true, rsa: false, keep_raw: false, tz_offset: "local", strip_priority: true }; var saved_flags = null; var debug; var map_ecs; var map_rsa; var keep_raw; var device; var tz_offset; var strip_priority; // Register params from configuration. function register(params) { debug = params.debug !== undefined ? params.debug : defaults.debug; map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; device = new DeviceProcessor(); } function parse_tz_offset(offset) { var date; var m; switch(offset) { // local uses the tz offset from the JS VM. case "local": date = new Date(); // Reversing the sign as we the offset from UTC, not to UTC. return parse_local_tz_offset(-date.getTimezoneOffset()); // event uses the tz offset from event.timezone (add_locale processor). case "event": return offset; // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. default: m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); if (m === null || m.length !== 4) { throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); } return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); } } function parse_local_tz_offset(minutes) { var neg = minutes < 0; minutes = Math.abs(minutes); var min = minutes % 60; var hours = Math.floor(minutes / 60); var pad2digit = function(n) { if (n < 10) { return "0" + n;} return "" + n; }; return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); } function process(evt) { // Function register is only called by the processor when `params` are set // in the processor config. if (device === undefined) { register(defaults); } return device.process(evt); } function processor_chain(subprocessors) { var builder = new processor.Chain(); subprocessors.forEach(builder.Add); return builder.Build().Run; } function linear_select(subprocessors) { return function (evt) { var flags = evt.Get(FLAG_FIELD); var i; for (i = 0; i < subprocessors.length; i++) { evt.Delete(FLAG_FIELD); if (debug) console.warn("linear_select trying entry " + i); subprocessors[i](evt); // Dissect processor succeeded? if (evt.Get(FLAG_FIELD) == null) break; if (debug) console.warn("linear_select failed entry " + i); } if (flags !== null) { evt.Put(FLAG_FIELD, flags); } if (debug) { if (i < subprocessors.length) { console.warn("linear_select matched entry " + i); } else { console.warn("linear_select didn't match"); } } }; } function conditional(opt) { return function(evt) { if (opt.if(evt)) { opt.then(evt); } else if (opt.else) { opt.else(evt); } }; } var strip_syslog_priority = (function() { var isEnabled = function() { return strip_priority === true; }; var fetchPRI = field("_pri"); var fetchPayload = field("payload"); var removePayload = remove(["payload"]); var cleanup = remove(["_pri", "payload"]); var onMatch = function(evt) { var pri, priStr = fetchPRI(evt); if (priStr != null && 0 < priStr.length && priStr.length < 4 && !isNaN((pri = Number(priStr))) && 0 <= pri && pri < 192) { var severity = pri & 7, facility = pri >> 3; setc("_severity", "" + severity)(evt); setc("_facility", "" + facility)(evt); // Replace message with priority stripped. evt.Put("message", fetchPayload(evt)); removePayload(evt); } else { // not a valid syslog PRI, cleanup. cleanup(evt); } }; return conditional({ if: isEnabled, then: cleanup_flags(match( "STRIP_PRI", "message", "<%{_pri}>%{payload}", onMatch )) }); })(); function match(id, src, pattern, on_success) { var dissect = new processor.Dissect({ field: src, tokenizer: pattern, target_prefix: FIELDS_OBJECT, ignore_failure: true, overwrite_keys: true, trim_values: "right" }); return function (evt) { var msg = evt.Get(src); dissect.Run(evt); var failed = evt.Get(FLAG_FIELD) != null; if (debug) { if (failed) { console.debug("dissect fail: " + id + " field:" + src); } else { console.debug("dissect OK: " + id + " field:" + src); } console.debug(" expr: <<" + pattern + ">>"); console.debug(" input: <<" + msg + ">>"); } if (on_success != null && !failed) { on_success(evt); } }; } function match_copy(id, src, dst, on_success) { dst = FIELDS_PREFIX + dst; if (dst === FIELDS_PREFIX || dst === src) { return function (evt) { if (debug) { console.debug("noop OK: " + id + " field:" + src); console.debug(" input: <<" + evt.Get(src) + ">>"); } if (on_success != null) on_success(evt); } } return function (evt) { var msg = evt.Get(src); evt.Put(dst, msg); if (debug) { console.debug("copy OK: " + id + " field:" + src); console.debug(" target: '" + dst + "'"); console.debug(" input: <<" + msg + ">>"); } if (on_success != null) on_success(evt); } } function cleanup_flags(processor) { return function(evt) { processor(evt); evt.Delete(FLAG_FIELD); }; } function all_match(opts) { return function (evt) { var i; for (i = 0; i < opts.processors.length; i++) { evt.Delete(FLAG_FIELD); opts.processors[i](evt); // Dissect processor succeeded? if (evt.Get(FLAG_FIELD) != null) { if (debug) console.warn("all_match failure at " + i); if (opts.on_failure != null) opts.on_failure(evt); return; } if (debug) console.warn("all_match success at " + i); } if (opts.on_success != null) opts.on_success(evt); }; } function msgid_select(mapping) { return function (evt) { var msgid = evt.Get(FIELDS_PREFIX + "messageid"); if (msgid == null) { if (debug) console.warn("msgid_select: no messageid captured!"); return; } var next = mapping[msgid]; if (next === undefined) { if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); return; } if (debug) console.info("msgid_select: matched key=" + msgid); return next(evt); }; } function msg(msg_id, match) { return function (evt) { match(evt); if (evt.Get(FLAG_FIELD) == null) { evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); } }; } var start; function save_flags(evt) { saved_flags = evt.Get(FLAG_FIELD); evt.Put("event.original", evt.Get("message")); } function restore_flags(evt) { if (saved_flags !== null) { evt.Put(FLAG_FIELD, saved_flags); } evt.Delete("message"); } function constant(value) { return function (evt) { return value; }; } function field(name) { var fullname = FIELDS_PREFIX + name; return function (evt) { return evt.Get(fullname); }; } function STRCAT(args) { var s = ""; var i; for (i = 0; i < args.length; i++) { s += args[i]; } return s; } // TODO: Implement function DIRCHK(args) { unimplemented("DIRCHK"); } function strictToInt(str) { return str * 1; } function CALC(args) { if (args.length !== 3) { console.warn("skipped call to CALC with " + args.length + " arguments."); return; } var a = strictToInt(args[0]); var b = strictToInt(args[2]); if (isNaN(a) || isNaN(b)) { console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); return; } var result; switch (args[1]) { case "+": result = a + b; break; case "-": result = a - b; break; case "*": result = a * b; break; default: // Only * and + seen in the parsers. console.warn("unknown CALC operation '" + args[1] + "'."); return; } // Always return a string return result !== undefined ? "" + result : result; } var quoteChars = "\"'`"; function RMQ(args) { if(args.length !== 1) { console.warn("RMQ: only one argument expected"); return; } var value = args[0].trim(); var n = value.length; var char; return n > 1 && (char=value.charAt(0)) === value.charAt(n-1) && quoteChars.indexOf(char) !== -1? value.substr(1, n-2) : value; } function call(opts) { var args = new Array(opts.args.length); return function (evt) { for (var i = 0; i < opts.args.length; i++) if ((args[i] = opts.args[i](evt)) == null) return; var result = opts.fn(args); if (result != null) { evt.Put(opts.dest, result); } }; } function nop(evt) { } function appendErrorMsg(evt, msg) { var value = evt.Get("error.message"); if (value == null) { value = [msg]; } else if (msg instanceof Array) { value.push(msg); } else { value = [value, msg]; } evt.Put("error.message", value); } function unimplemented(name) { appendErrorMsg("unimplemented feature: " + name); } function lookup(opts) { return function (evt) { var key = opts.key(evt); if (key == null) return; var value = opts.map.keyvaluepairs[key]; if (value === undefined) { value = opts.map.default; } if (value !== undefined) { evt.Put(opts.dest, value(evt)); } }; } function set(fields) { return new processor.AddFields({ target: FIELDS_OBJECT, fields: fields, }); } function setf(dst, src) { return function (evt) { var val = evt.Get(FIELDS_PREFIX + src); if (val != null) evt.Put(FIELDS_PREFIX + dst, val); }; } function setc(dst, value) { return function (evt) { evt.Put(FIELDS_PREFIX + dst, value); }; } function set_field(opts) { return function (evt) { var val = opts.value(evt); if (val != null) evt.Put(opts.dest, val); }; } function dump(label) { return function (evt) { console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); }; } function date_time_join_args(evt, arglist) { var str = ""; for (var i = 0; i < arglist.length; i++) { var fname = FIELDS_PREFIX + arglist[i]; var val = evt.Get(fname); if (val != null) { if (str !== "") str += " "; str += val; } else { if (debug) console.warn("in date_time: input arg " + fname + " is not set"); } } return str; } function to2Digit(num) { return num? (num < 10? "0" + num : num) : "00"; } // Make two-digit dates 00-69 interpreted as 2000-2069 // and dates 70-99 translated to 1970-1999. var twoDigitYearEpoch = 70; var twoDigitYearCentury = 2000; // This is to accept dates up to 2 days in the future, only used when // no year is specified in a date. 2 days should be enough to account for // time differences between systems and different tz offsets. var maxFutureDelta = 2*24*60*60*1000; // DateContainer stores date fields and then converts those fields into // a Date. Necessary because building a Date using its set() methods gives // different results depending on the order of components. function DateContainer(tzOffset) { this.offset = tzOffset === undefined? "Z" : tzOffset; } DateContainer.prototype = { setYear: function(v) {this.year = v;}, setMonth: function(v) {this.month = v;}, setDay: function(v) {this.day = v;}, setHours: function(v) {this.hours = v;}, setMinutes: function(v) {this.minutes = v;}, setSeconds: function(v) {this.seconds = v;}, setUNIX: function(v) {this.unix = v;}, set2DigitYear: function(v) { this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; }, toDate: function() { if (this.unix !== undefined) { return new Date(this.unix * 1000); } if (this.day === undefined || this.month === undefined) { // Can't make a date from this. return undefined; } if (this.year === undefined) { // A date without a year. Set current year, or previous year // if date would be in the future. var now = new Date(); this.year = now.getFullYear(); var date = this.toDate(); if (date.getTime() - now.getTime() > maxFutureDelta) { date.setFullYear(now.getFullYear() - 1); } return date; } var MM = to2Digit(this.month); var DD = to2Digit(this.day); var hh = to2Digit(this.hours); var mm = to2Digit(this.minutes); var ss = to2Digit(this.seconds); return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); } } function date_time_try_pattern(fmt, str, tzOffset) { var date = new DateContainer(tzOffset); var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); return pos !== undefined? date.toDate() : undefined; } function date_time_try_pattern_at_pos(fmt, str, pos, date) { var len = str.length; for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { pos = fmt[proc](str, pos, date); } return pos; } function date_time(opts) { return function (evt) { var tzOffset = opts.tz || tz_offset; if (tzOffset === "event") { tzOffset = evt.Get("event.timezone"); } var str = date_time_join_args(evt, opts.args); for (var i = 0; i < opts.fmts.length; i++) { var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); if (date !== undefined) { evt.Put(FIELDS_PREFIX + opts.dest, date); return; } } if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); }; } var uA = 60 * 60 * 24; var uD = 60 * 60 * 24; var uF = 60 * 60; var uG = 60 * 60 * 24 * 30; var uH = 60 * 60; var uI = 60 * 60; var uJ = 60 * 60 * 24; var uM = 60 * 60 * 24 * 30; var uN = 60 * 60; var uO = 1; var uS = 1; var uT = 60; var uU = 60; var uc = dc; function duration(opts) { return function(evt) { var str = date_time_join_args(evt, opts.args); for (var i = 0; i < opts.fmts.length; i++) { var seconds = duration_try_pattern(opts.fmts[i], str); if (seconds !== undefined) { evt.Put(FIELDS_PREFIX + opts.dest, seconds); return; } } if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); }; } function duration_try_pattern(fmt, str) { var secs = 0; var pos = 0; for (var i=0; i<fmt.length; i++) { if (fmt[i] instanceof Function) { if ((pos = fmt[i](str, pos)) === undefined) return; continue; } var start = skipws(str, pos); var end = skipdigits(str, start); if (end === start) return; var s = str.substr(start, end - start); var value = parseInt(s, 10); if (isNaN(value)) return; secs += value * fmt[i]; pos = end; } return secs; } function remove(fields) { return function (evt) { for (var i = 0; i < fields.length; i++) { evt.Delete(FIELDS_PREFIX + fields[i]); } }; } function dc(ct) { var match = function (ct, str, pos) { var n = str.length; if (n - pos < ct.length) return; var part = str.substr(pos, ct.length); if (part !== ct) { return; } return pos + ct.length; }; return function (str, pos, date) { var outPos = match(ct, str, pos); if (outPos === undefined) { // Try again, trimming leading space at str[pos:] and ct outPos = match(ct.substr(skipws(ct, 0)), str, skipws(str, pos)); } return outPos; }; } var shortMonths = { // mon => [ month_id , how many chars to skip if month in long form ] "Jan": [0, 4], "Feb": [1, 5], "Mar": [2, 2], "Apr": [3, 2], "May": [4, 0], "Jun": [5, 1], "Jul": [6, 1], "Aug": [7, 3], "Sep": [8, 6], "Oct": [9, 4], "Nov": [10, 5], "Dec": [11, 4], "jan": [0, 4], "feb": [1, 5], "mar": [2, 2], "apr": [3, 2], "may": [4, 0], "jun": [5, 1], "jul": [6, 1], "aug": [7, 3], "sep": [8, 6], "oct": [9, 4], "nov": [10, 5], "dec": [11, 4], }; // var dC = undefined; var dR = dateMonthName(true); var dB = dateMonthName(false); var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); var dP = parseAMPM; // AM|PM var dQ = parseAMPM; // A.M.|P.M var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); var dZ = parseHMS; var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); // parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. // Only works if this modifier appears after the hour has been read from logs // which is always the case in the 300 devices. function parseAMPM(str, pos, date) { var n = str.length; var start = skipws(str, pos); if (start + 2 > n) return; var head = str.substr(start, 2).toUpperCase(); var isPM = false; var skip = false; switch (head) { case "A.": skip = true; /* falls through */ case "AM": break; case "P.": skip = true; /* falls through */ case "PM": isPM = true; break; default: if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); return; } pos = start + 2; if (skip) { if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); return; } pos += 2; } var hh = date.hours; if (isPM) { // Accept existing hour in 24h format. if (hh < 12) hh += 12; } else { if (hh === 12) hh = 0; } date.setHours(hh); return pos; } function parseHMS(str, pos, date) { return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); } function skipws(str, pos) { for ( var n = str.length; pos < n && str.charAt(pos) === " "; pos++) ; return pos; } function skipdigits(str, pos) { var c; for (var n = str.length; pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; pos++) ; return pos; } function dSkip(str, pos, date) { var chr; for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} return pos < str.length? pos : undefined; } function dateVariableWidthNumber(fmtChar, min, max, setter) { return function (str, pos, date) { var start = skipws(str, pos); pos = skipdigits(str, start); var s = str.substr(start, pos - start); var value = parseInt(s, 10); if (value >= min && value <= max) { setter.call(date, value); return pos; } return; }; } function dateFixedWidthNumber(fmtChar, width, min, max, setter) { return function (str, pos, date) { pos = skipws(str, pos); var n = str.length; if (pos + width > n) return; var s = str.substr(pos, width); var value = parseInt(s, 10); if (value >= min && value <= max) { setter.call(date, value); return pos + width; } return; }; } // Short month name (Jan..Dec). function dateMonthName(long) { return function (str, pos, date) { pos = skipws(str, pos); var n = str.length; if (pos + 3 > n) return; var mon = str.substr(pos, 3); var idx = shortMonths[mon]; if (idx === undefined) { idx = shortMonths[mon.toLowerCase()]; } if (idx === undefined) { //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); return; } date.setMonth(idx[0]+1); return pos + 3 + (long ? idx[1] : 0); }; } function url_wrapper(dst, src, fn) { return function(evt) { var value = evt.Get(FIELDS_PREFIX + src), result; if (value != null && (result = fn(value))!== undefined) { evt.Put(FIELDS_PREFIX + dst, result); } else { console.debug(fn.name + " failed for '" + value + "'"); } }; } // The following regular expression for parsing URLs from: // https://github.com/wizard04wsu/URI_Parsing // // The MIT License (MIT) // // Copyright (c) 2014 Andrew Harrison // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of // the Software, and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; var uriScheme = 1; var uriDomain = 5; var uriPort = 6; var uriPath = 7; var uriPathAlt = 9; var uriQuery = 11; function domain(dst, src) { return url_wrapper(dst, src, extract_domain); } function split_url(value) { var m = value.match(uriRegExp); if (m && m[uriDomain]) return m; // Support input in the form "www.example.net/path", but not "/path". m = ("null://" + value).match(uriRegExp); if (m) return m; } function extract_domain(value) { var m = split_url(value); if (m && m[uriDomain]) return m[uriDomain]; } var extFromPage = /\.[^.]+$/; function extract_ext(value) { var page = extract_page(value); if (page) { var m = page.match(extFromPage); if (m) return m[0]; } } function ext(dst, src) { return url_wrapper(dst, src, extract_ext); } function fqdn(dst, src) { // TODO: fqdn and domain(eTLD+1) are currently the same. return domain(dst, src); } var pageFromPathRegExp = /\/([^\/]+)$/; var pageName = 1; function extract_page(value) { value = extract_path(value); if (!value) return undefined; var m = value.match(pageFromPathRegExp); if (m) return m[pageName]; } function page(dst, src) { return url_wrapper(dst, src, extract_page); } function extract_path(value) { var m = split_url(value); return m? m[uriPath] || m[uriPathAlt] : undefined; } function path(dst, src) { return url_wrapper(dst, src, extract_path); } // Map common schemes to their default port. // port has to be a string (will be converted at a later stage). var schemePort = { "ftp": "21", "ssh": "22", "http": "80", "https": "443", }; function extract_port(value) { var m = split_url(value); if (!m) return undefined; if (m[uriPort]) return m[uriPort]; if (m[uriScheme]) { return schemePort[m[uriScheme]]; } } function port(dst, src) { return url_wrapper(dst, src, extract_port); } function extract_query(value) { var m = split_url(value); if (m && m[uriQuery]) return m[uriQuery]; } function query(dst, src) { return url_wrapper(dst, src, extract_query); } function extract_root(value) { var m = split_url(value); if (m && m[uriDomain] && m[uriDomain]) { var scheme = m[uriScheme] && m[uriScheme] !== "null"? m[uriScheme] + "://" : ""; var port = m[uriPort]? ":" + m[uriPort] : ""; return scheme + m[uriDomain] + port; } } function root(dst, src) { return url_wrapper(dst, src, extract_root); } function tagval(id, src, cfg, keys, on_success) { var fail = function(evt) { evt.Put(FLAG_FIELD, "tagval_parsing_error"); } if (cfg.kv_separator.length !== 1) { throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); } var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? cfg.open_quote.length + cfg.close_quote.length : 0; var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); return function(evt) { var msg = evt.Get(src); if (msg === undefined) { console.warn("tagval: input field is missing"); return fail(evt); } var pairs = msg.split(cfg.pair_separator); var i; var success = false; var prev = ""; for (i=0; i<pairs.length; i++) { var m = pairs[i].match(kv_regex); var field; if (m === null || m.length !== 3 || m[1] === undefined || m[2] === undefined) { prev += pairs[i] + cfg.pair_separator; continue; } var key = prev + m[1]; prev = ""; if ( (field=keys[key]) === undefined && (field=keys[key.trim()])===undefined ) { continue; } var value = m[2].trim(); if (quotes_len > 0 && value.length >= cfg.open_quote.length + cfg.close_quote.length && value.substr(0, cfg.open_quote.length) === cfg.open_quote && value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { value = value.substr(cfg.open_quote.length, value.length - quotes_len); } evt.Put(FIELDS_PREFIX + field, value); success = true; } if (!success) { return fail(evt); } if (on_success != null) { on_success(evt); } } } var ecs_mappings = { "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, "application": {to:[{field: "network.application", setter: fld_set}]}, "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, "direction": {to:[{field: "network.direction", setter: fld_set}]}, "directory": {to:[{field: "file.directory", setter: fld_set}]}, "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, "filepath": {to:[{field: "file.path", setter: fld_set}]}, "filetype": {to:[{field: "file.type", setter: fld_set}]}, "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, "group": {to:[{field: "group.name", setter: fld_set}]}, "groupid": {to:[{field: "group.id", setter: fld_set}]}, "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, "method": {to:[{field: "http.request.method", setter: fld_set}]}, "msg": {to:[{field: "message", setter: fld_set}]}, "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, "product": {to:[{field: "observer.product", setter: fld_set}]}, "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, "rulename": {to:[{field: "rule.name", setter: fld_set}]}, "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, "severity": {to:[{field: "log.level", setter: fld_set}]}, "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, "version": {to:[{field: "observer.version", setter: fld_set}]}, "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, "web_root": {to:[{field: "url.path", setter: fld_set}]}, "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, }; var rsa_mappings = { "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, }; function to_date(value) { switch (typeof (value)) { case "object": // This is a Date. But as it was obtained from evt.Get(), the VM // doesn't see it as a JS Date anymore, thus value instanceof Date === false. // Have to trust that any object here is a valid Date for Go. return value; case "string": var asDate = new Date(value); if (!isNaN(asDate)) return asDate; } } // ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. var maxSafeInt = Math.pow(2, 53) - 1; var minSafeInt = -maxSafeInt; function to_long(value) { var num = parseInt(value); // Better not to index a number if it's not safe (above 53 bits). return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; } function to_ip(value) { if (value.indexOf(":") === -1) return to_ipv4(value); return to_ipv6(value); } var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; function to_ipv4(value) { var result = ipv4_regex.exec(value); if (result == null || result.length !== 5) return; for (var i = 1; i < 5; i++) { var num = strictToInt(result[i]); if (isNaN(num) || num < 0 || num > 255) return; } return value; } function to_ipv6(value) { var sqEnd = value.indexOf("]"); if (sqEnd > -1) { if (value.charAt(0) !== "[") return; value = value.substr(1, sqEnd - 1); } var zoneOffset = value.indexOf("%"); if (zoneOffset > -1) { value = value.substr(0, zoneOffset); } var parts = value.split(":"); if (parts == null || parts.length < 3 || parts.length > 8) return; var numEmpty = 0; var innerEmpty = 0; for (var i = 0; i < parts.length; i++) { if (parts[i].length === 0) { numEmpty++; if (i > 0 && i + 1 < parts.length) innerEmpty++; } else if (!parts[i].match(ipv6_hex_regex) && // Accept an IPv6 with a valid IPv4 at the end. ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { return; } } return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; } function to_double(value) { return parseFloat(value); } function to_mac(value) { // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. return value; } function to_lowercase(value) { // to_lowercase is used against keyword fields, which can accept // any other type (numbers, dates). return typeof(value) === "string"? value.toLowerCase() : value; } function fld_set(dst, value) { dst[this.field] = { v: value }; } function fld_append(dst, value) { if (dst[this.field] === undefined) { dst[this.field] = { v: [value] }; } else { var base = dst[this.field]; if (base.v.indexOf(value)===-1) base.v.push(value); } } function fld_prio(dst, value) { if (dst[this.field] === undefined) { dst[this.field] = { v: value, prio: this.prio}; } else if(this.prio < dst[this.field].prio) { dst[this.field].v = value; dst[this.field].prio = this.prio; } } var valid_ecs_outcome = { 'failure': true, 'success': true, 'unknown': true }; function fld_ecs_outcome(dst, value) { value = value.toLowerCase(); if (valid_ecs_outcome[value] === undefined) { value = 'unknown'; } if (dst[this.field] === undefined) { dst[this.field] = { v: value }; } else if (dst[this.field].v === 'unknown') { dst[this.field] = { v: value }; } } function map_all(evt, targets, value) { for (var i = 0; i < targets.length; i++) { evt.Put(targets[i], value); } } function populate_fields(evt) { var base = evt.Get(FIELDS_OBJECT); if (base === null) return; alternate_datetime(evt); if (map_ecs) { do_populate(evt, base, ecs_mappings); } if (map_rsa) { do_populate(evt, base, rsa_mappings); } if (keep_raw) { evt.Put("rsa.raw", base); } evt.Delete(FIELDS_OBJECT); } var datetime_alt_components = [ {field: "day", fmts: [[dF]]}, {field: "year", fmts: [[dW]]}, {field: "month", fmts: [[dB],[dG]]}, {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, {field: "hour", fmts: [[dN]]}, {field: "min", fmts: [[dU]]}, {field: "secs", fmts: [[dO]]}, {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, ]; function alternate_datetime(evt) { if (evt.Get(FIELDS_PREFIX + "event_time") != null) { return; } var tzOffset = tz_offset; if (tzOffset === "event") { tzOffset = evt.Get("event.timezone"); } var container = new DateContainer(tzOffset); for (var i=0; i<datetime_alt_components.length; i++) { var dtc = datetime_alt_components[i]; var value = evt.Get(FIELDS_PREFIX + dtc.field) || evt.Get(FIELDS_PREFIX + "h" + dtc.field); if (value == null) continue; for (var f=0; f<dtc.fmts.length; f++) { var pos = date_time_try_pattern_at_pos(dtc.fmts[f], value, 0, container); if (pos !== undefined) { break; } } } var date = container.toDate(); if (date !== undefined) { evt.Put(FIELDS_PREFIX + "event_time", date); } } function do_populate(evt, base, targets) { var result = {}; var key; for (key in base) { if (!base.hasOwnProperty(key)) continue; var mapping = targets[key]; if (mapping === undefined) continue; var value = base[key]; if (value === "") continue; if (mapping.convert !== undefined) { value = mapping.convert(value); if (value === undefined) { if (debug) { console.debug("Failed to convert field '" + key + "' = '" + base[key] + "' with " + mapping.convert.name); } continue; } } for (var i=0; i<mapping.to.length; i++) { var tgt = mapping.to[i]; tgt.setter(result, value); } } for (key in result) { if (!result.hasOwnProperty(key)) continue; evt.Put(key, result[key].v); } } function test() { // Silence console output during test. var saved = console; console = { debug: function() {}, warn: function() {}, error: function() {}, }; test_date_times(); test_tz(); test_conversions(); test_mappings(); test_url(); test_calls(); test_assumptions(); test_tvm(); console = saved; } function pass_test(input, output) { return {input: input, expected: output !== undefined ? output : input}; } function fail_test(input) { return {input: input}; } function test_date_times() { var date_time = function(input) { var res = date_time_try_pattern(input.fmt, input.str, input.tz); return res !== undefined? res.toISOString() : res; }; test_fn_call(date_time, [ pass_test( { fmt: [dW,dc("-"),dM,dc("-"),dD,dc("T"),dH,dc(":"),dT,dc(":"),dS], str: "2017-10-16T15:23:42" }, "2017-10-16T15:23:42.000Z"), pass_test( { fmt: [dW,dc("-"),dM,dc("-"),dD,dc("T"),dH,dc(":"),dT,dc(":"),dS], str: "2017-10-16T15:23:42", tz: "-02:00", }, "2017-10-16T17:23:42.000Z"), pass_test( { fmt: [dR, dF, dc("th"), dY, dc(","), dI, dQ, dU, dc("min"), dO, dc("secs")], str: "October 7th 22, 3 P.M. 5 min 12 secs" }, "2022-10-07T15:05:12.000Z"), pass_test( { fmt: [dF, dc("/"), dB, dY, dc(","), dI, dP], str: "31/OCT 70, 12am" }, "1970-10-31T00:00:00.000Z"), pass_test( { fmt: [dX], str: "1592241213", tz: "+00:00" }, "2020-06-15T17:13:33.000Z"), pass_test( { fmt: [dW, dG, dF, dZ], str: "20314 12 3:5:42", tz: "+02:00" }, "2031-04-12T01:05:42.000Z"), pass_test( { fmt: [dW, dG, dF, dZ], str: "20314 12 3:5:42", tz: "-07:30", }, "2031-04-12T10:35:42.000Z"), pass_test( { fmt: [dW, dG, dF, dZ], str: "20314 12 3:5:42", tz: "+0500", }, "2031-04-11T22:05:42.000Z") ]); } function test_tz() { test_fn_call(parse_local_tz_offset, [ pass_test(0, "+00:00"), pass_test(59, "+00:59"), pass_test(60, "+01:00"), pass_test(61, "+01:01"), pass_test(-1, "-00:01"), pass_test(-59, "-00:59"), pass_test(-60, "-01:00"), pass_test(705, "+11:45"), pass_test(-705, "-11:45"), ]); var date = new Date(); var localOff = parse_local_tz_offset(-date.getTimezoneOffset()); test_fn_call(parse_tz_offset, [ pass_test("local", localOff), pass_test("event", "event"), pass_test("-07:00", "-07:00"), pass_test("-1145", "-11:45"), pass_test("+02", "+02:00"), ]); } function test_conversions() { test_fn_call(to_ip, [ pass_test("127.0.0.1"), pass_test("255.255.255.255"), pass_test("008.189.239.199"), fail_test(""), fail_test("not an IP"), fail_test("42"), fail_test("127.0.0.1."), fail_test("127.0.0."), fail_test("10.100.1000.1"), pass_test("fd00:1111:2222:3333:4444:5555:6666:7777"), pass_test("fd00::7777%eth0", "fd00::7777"), pass_test("[fd00::7777]", "fd00::7777"), pass_test("[fd00::7777%enp0s3]", "fd00::7777"), pass_test("::1"), pass_test("::"), fail_test(":::"), fail_test("fff::1::3"), pass_test("ffff::ffff"), fail_test("::1ffff"), fail_test(":1234:"), fail_test("::1234z"), pass_test("1::3:4:5:6:7:8"), pass_test("::255.255.255.255"), pass_test("64:ff9b::192.0.2.33"), fail_test("::255.255.255.255:8"), ]); test_fn_call(to_long, [ pass_test("1234", 1234), pass_test("0x2a", 42), fail_test("9007199254740992"), fail_test("9223372036854775808"), fail_test("NaN"), pass_test("-0x1fffffffffffff", -9007199254740991), pass_test("+9007199254740991", 9007199254740991), fail_test("-0x20000000000000"), fail_test("+9007199254740992"), pass_test(42), ]); test_fn_call(to_date, [ { input: new Date("2017-10-16T08:30:42Z"), expected: "2017-10-16T08:30:42.000Z", convert: Date.prototype.toISOString, }, { input: "2017-10-16T08:30:42Z", expected: new Date("2017-10-16T08:30:42Z").toISOString(), convert: Date.prototype.toISOString, }, fail_test("Not really a date."), ]); test_fn_call(to_lowercase, [ pass_test("Hello", "hello"), pass_test(45), pass_test(Date.now()), ]); } function test_fn_call(fn, cases) { cases.forEach(function (test, idx) { var result = fn(test.input); if (test.convert !== undefined) { result = test.convert.call(result); } if (result !== test.expected) { throw "test " + fn.name + "#" + idx + " failed." + " Input:" + JSON.stringify(test.input) + " Expected:" + JSON.stringify(test.expected) + " Got:" + JSON.stringify(result); } }); if (debug) console.debug("test " + fn.name + " PASS."); } function test_mappings() { var test_mappings = { "a": {to: [{field: "raw.a", setter: fld_set}, {field: "list", setter: fld_append}]}, "b": {to: [{field: "list", setter: fld_append}]}, "c": {to: [{field: "raw.c", setter: fld_set}, {field: "list", setter: fld_append}]}, "d": {to: [{field: "unique", setter: fld_prio, prio: 2}]}, "e": {to: [{field: "unique", setter: fld_prio, prio: 1}]}, "f": {to: [{field: "unique", setter: fld_prio, prio: 3}]} }; var values = { "a": "value1", "b": "value2", "c": "value1", "d": "value3", "e": "value4", "f": "value5" }; var expected = { "raw.a": "value1", "raw.c": "value1", "list": ["value1", "value2"], "unique": "value4" }; var evt = new Event({}); do_populate(evt, values, test_mappings); var key; for (key in expected) { var got = JSON.stringify(evt.Get(key)); var exp = JSON.stringify(expected[key]); if (got !== exp) { throw "test test_mappings failed for key " + key + ". Expected:" + exp + " Got:" + got; } } } function copy_name(dst, src) { Object.defineProperty(dst, "name", { value: src.name }); return dst; } function test_url() { function test(fn) { return copy_name(function (input) { var evt = new Event({}); evt.Put(FIELDS_PREFIX + "src", input); fn("dst", "src")(evt); var result = evt.Get(FIELDS_PREFIX + "dst"); return result? result : undefined; }, fn); } test_fn_call(test(domain), [ pass_test("http://example.com", "example.com"), pass_test("http://example.com/", "example.com"), pass_test("ftp+ssh://example.com/path", "example.com"), pass_test("https://example.com:4443/path", "example.com"), pass_test("www.example.net/foo/bar", "www.example.net"), pass_test("http://127.0.0.1:8080", "127.0.0.1"), pass_test("http://[::1]", "[::1]"), pass_test("http://[::1]:8080", "[::1]"), pass_test("https://root:pass@example.org:80/foo/bar", "example.org"), pass_test("root:pass@example.org:80/foo/bar", "example.org"), fail_test("/my/path"), fail_test(""), ]); test_fn_call(test(path), [ pass_test("http://example.net/a/b/d?x=z", "/a/b/d"), pass_test("root:pass@www.example.net:80/a/b/d?x=z", "/a/b/d"), pass_test("/a/b/d?x=z#frag", "/a/b/d"), pass_test("localhost/", "/"), fail_test("domain"), fail_test(""), fail_test(" "), ]); test_fn_call(test(page), [ pass_test("http://example.net/index.html", "index.html"), pass_test("http://localhost/index.html", "index.html"), pass_test("example.com/a/b/c", "c"), fail_test("ftp://example.com/"), pass_test("ftp://example.com/main#fragment", "main"), pass_test("ftp://example.com/0#fragment", "0"), fail_test(""), ]); test_fn_call(test(port), [ pass_test("http://0.0.0.0:1234", "1234"), pass_test("https://0.0.0.0", "443"), pass_test("https://[::abcd:1234]:4443/a?b#c", "4443"), fail_test("www.example.net"), fail_test(""), ]); test_fn_call(test(query), [ pass_test("http://localhost/post?request=1234&user=root", "request=1234&user=root"), pass_test("http://localhost/post?request=1234&user=root#m1234", "request=1234&user=root"), fail_test("http://localhost/post"), fail_test("http://localhost/post?"), fail_test(""), ]); test_fn_call(test(root), [ pass_test("http://localhost/post?request=1234&user=root", "http://localhost"), pass_test("https://[::abcd:1234]:4443/a?b#c", "https://[::abcd:1234]:4443"), pass_test("localhost"), fail_test("/a/b/c"), fail_test(""), pass_test("http://user:pass@example.net", "http://example.net"), ]); test_fn_call(test(ext), [ pass_test("http://example.net/index.html", ".html"), pass_test("http://localhost/index.html?a=b#c", ".html"), fail_test("example.com/a/b/c"), fail_test("ftp://example.com/"), pass_test("ftp://example.com/main.txt#fragment", ".txt"), fail_test("ftp://example.com/0#fragment"), fail_test(""), ]); } function test_calls() { test_fn_call(RMQ, [ fail_test(["a", "b"]), fail_test([]), pass_test(["unquoted"], "unquoted"), pass_test([""], ""), pass_test(["''"], ""), pass_test(["'hello'"], "hello"), pass_test([" 'world' "], "world"), pass_test(['" "'], " "), pass_test(["``"], ""), pass_test(["`woot'"], "`woot'"), ]); test_fn_call(CALC, [ fail_test([]), fail_test(["1"]), fail_test(["01", "+"]), pass_test(["2","+","2"], "4"), pass_test(["012","*","2"], "24"), pass_test(["0x10","+","1"], "17"), pass_test(["0","-","1"], "-1"), fail_test(["15","/","3"]), ]); test_fn_call(STRCAT, [ pass_test([], ""), pass_test(["1"], "1"), pass_test(["01", "+"], "01+"), pass_test(["hell", "oW", "ORLD"], "helloWORLD"), ]); var evt = new Event({}); evt.Put(FIELDS_PREFIX + "a", "7"); evt.Put(FIELDS_PREFIX + "b", "'hello'"); evt.Put(FIELDS_PREFIX + "c", "11"); var call_test = function(fn) { return function(input) { call({ args: input, "fn": fn, dest: FIELDS_PREFIX+"z", })(evt); var result = evt.Get(FIELDS_PREFIX + "z"); evt.Delete(FIELDS_PREFIX + "z"); return result != null? result : undefined; } } test_fn_call(call_test(RMQ), [ pass_test([field("b")], "hello"), pass_test([constant("'world'")], "world"), ]); test_fn_call(call_test(CALC), [ pass_test([field("a"), constant("-"), field("c")], "-4"), pass_test([field("a"), constant("*"), constant("7")], "49"), fail_test([field("a"), constant("*"), constant("7a")]), ]); test_fn_call(call_test(STRCAT), [ pass_test([field("a"), constant("-"), field("c")], "7-11"), ]); } function test_assumptions() { var str = "011"; if (strictToInt(str) !== 11) { throw("string conversion interprets leading zeros as octal"); } if (parseInt(str) !== 11) { throw("parseInt interprets leading zeros as octal"); } if (Number(str) !== 11) { throw("Number conversion interprets leading zeros as octal"); } str = "17a"; if (!isNaN(strictToInt(str))) { throw("string conversion accepts extra chars"); } if (isNaN(parseInt(str))) { throw("parseInt doesn't accept extra chars"); } if (!isNaN(Number(str))) { throw("Number conversion accepts extra chars"); } } // Tests the TAGVALMAP feature. function test_tvm() { var tests = [ { config: { pair_separator: ',', kv_separator: '=', open_quote: '[', close_quote: ']' }, mappings: { "key a": "url", "key_b": "b", "Operation": "operation", }, on_success: processor_chain([ setf("d","b") ]), message: "key_b=value for=B, key a = [http://example.com/] ,Operation=[COPY],other stuff=null,,ignore", expected: { "nwparser.url": "http://example.com/", "nwparser.b": "value for=B", "nwparser.operation": "COPY", "nwparser.d": "value for=B", "log.flags": null, } }, { config: { pair_separator: ',', kv_separator: '=', open_quote: '[', close_quote: ']' }, mappings: { "key a": "url", "key_b": "b", "Operation": "operation" }, on_success: processor_chain([ setf("d","b") ]), message: "nothing to see here", expected: { "nwparser.url": null, "nwparser.d": null, "log.flags": "tagval_parsing_error", } }, { config: { pair_separator: ' ', kv_separator: ':', open_quote: '"', close_quote: '"' }, mappings: { "ICMP Type": "icmp_type", "ICMP Code": "icmp_code", "Operation": "operation", }, on_success: processor_chain([ setc("success","true") ]), message: "Operation:drop ICMP Type:5 ICMP Code:1 ", expected: { "nwparser.icmp_code": "1", "nwparser.icmp_type": "5", "nwparser.operation": "drop", "nwparser.success": "true", "log.flags": null, } }, ]; var assertEqual = function(evt, key, expected) { var value = evt.Get(key); if (value !== expected) throw("failed for " + key + ": expected:'" + expected + "' got:'" + value + "'"); }; tests.forEach(function (test, idx) { var processor = tagval("test", "message", test.config, test.mappings, test.on_success); var evt = new Event({ "message": test.message, }); processor(evt); for (var key in test.expected) { assertEqual(evt, key, test.expected[key]); } }); } // Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License; // you may not use this file except in compliance with the Elastic License. function DeviceProcessor() { var builder = new processor.Chain(); builder.Add(save_flags); builder.Add(strip_syslog_priority); builder.Add(chain1); builder.Add(restore_flags); builder.Add(populate_fields); var chain = builder.Build(); return { process: chain.Run, } } var dup1 = setc("eventcategory","1204000000"); var dup2 = date_time({ dest: "event_time", args: ["fld7"], fmts: [ [dD,dc("/"),dB,dc("/"),dW,dc(":"),dN,dc(":"),dU,dc(":"),dO], ], }); var dup3 = domain("web_ref_domain","web_referer"); var dup4 = domain("web_domain","web_host"); var dup5 = setf("fqdn","web_host"); var dup6 = setf("msg","$MSG"); var dup7 = match("MESSAGE#0:ABCD", "nwparser.payload", "%{saddr}||%{fld5}||%{username}||[%{fld7->} %{timezone}]||%{web_method}||%{web_host}||%{webpage}||%{web_query}||%{network_service}||%{resultcode}||%{sbytes}||%{web_referer}||%{user_agent}||%{web_cookie}", processor_chain([ dup1, dup2, dup3, dup4, dup5, dup6, ])); var hdr1 = match("HEADER#0:0001", "message", "%APACHETOMCAT-%{level}-%{messageid}: %{payload}", processor_chain([ setc("header_id","0001"), ])); var hdr2 = match("HEADER#1:0002", "message", "%{hmonth->} %{hday->} %{htime->} %{hostname->} %APACHETOMCAT- %{messageid}: %{payload}", processor_chain([ setc("header_id","0002"), ])); var select1 = linear_select([ hdr1, hdr2, ]); var msg1 = msg("ABCD", dup7); var msg2 = msg("BADMETHOD", dup7); var msg3 = msg("BADMTHD", dup7); var msg4 = msg("BDMTHD", dup7); var msg5 = msg("INDEX", dup7); var msg6 = msg("CFYZ", dup7); var msg7 = msg("CONNECT", dup7); var msg8 = msg("DELETE", dup7); var msg9 = msg("DETECT_METHOD_TYPE", dup7); var msg10 = msg("FGET", dup7); var msg11 = msg("GET", dup7); var msg12 = msg("get", dup7); var msg13 = msg("HEAD", dup7); var msg14 = msg("id", dup7); var msg15 = msg("LOCK", dup7); var msg16 = msg("MKCOL", dup7); var msg17 = msg("NCIRCLE", dup7); var msg18 = msg("OPTIONS", dup7); var msg19 = msg("POST", dup7); var msg20 = msg("PRONECT", dup7); var msg21 = msg("PROPFIND", dup7); var msg22 = msg("PUT", dup7); var msg23 = msg("QUALYS", dup7); var msg24 = msg("SEARCH", dup7); var msg25 = msg("TRACK", dup7); var msg26 = msg("TRACE", dup7); var msg27 = msg("uGET", dup7); var msg28 = msg("null", dup7); var msg29 = msg("rndmmtd", dup7); var msg30 = msg("RNDMMTD", dup7); var msg31 = msg("asdf", dup7); var msg32 = msg("DEBUG", dup7); var msg33 = msg("COOK", dup7); var msg34 = msg("nGET", dup7); var chain1 = processor_chain([ select1, msgid_select({ "ABCD": msg1, "BADMETHOD": msg2, "BADMTHD": msg3, "BDMTHD": msg4, "CFYZ": msg6, "CONNECT": msg7, "COOK": msg33, "DEBUG": msg32, "DELETE": msg8, "DETECT_METHOD_TYPE": msg9, "FGET": msg10, "GET": msg11, "HEAD": msg13, "INDEX": msg5, "LOCK": msg15, "MKCOL": msg16, "NCIRCLE": msg17, "OPTIONS": msg18, "POST": msg19, "PRONECT": msg20, "PROPFIND": msg21, "PUT": msg22, "QUALYS": msg23, "RNDMMTD": msg30, "SEARCH": msg24, "TRACE": msg26, "TRACK": msg25, "asdf": msg31, "get": msg12, "id": msg14, "nGET": msg34, "null": msg28, "rndmmtd": msg29, "uGET": msg27, }), ]); var part1 = match("MESSAGE#0:ABCD", "nwparser.payload", "%{saddr}||%{fld5}||%{username}||[%{fld7->} %{timezone}]||%{web_method}||%{web_host}||%{webpage}||%{web_query}||%{network_service}||%{resultcode}||%{sbytes}||%{web_referer}||%{user_agent}||%{web_cookie}", processor_chain([ dup1, dup2, dup3, dup4, dup5, dup6, ])); - community_id: - registered_domain: ignore_missing: true ignore_failure: true field: dns.question.name target_field: dns.question.registered_domain target_subdomain_field: dns.question.subdomain target_etld_field: dns.question.top_level_domain - registered_domain: ignore_missing: true ignore_failure: true field: client.domain target_field: client.registered_domain target_subdomain_field: client.subdomain target_etld_field: client.top_level_domain - registered_domain: ignore_missing: true ignore_failure: true field: server.domain target_field: server.registered_domain target_subdomain_field: server.subdomain target_etld_field: server.top_level_domain - registered_domain: ignore_missing: true ignore_failure: true field: destination.domain target_field: destination.registered_domain target_subdomain_field: destination.subdomain target_etld_field: destination.top_level_domain - registered_domain: ignore_missing: true ignore_failure: true field: source.domain target_field: source.registered_domain target_subdomain_field: source.subdomain target_etld_field: source.top_level_domain - registered_domain: ignore_missing: true ignore_failure: true field: url.domain target_field: url.registered_domain target_subdomain_field: url.subdomain target_etld_field: url.top_level_domain - add_locale: ~