@contrast/agent 4.4.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/bin/VERSION +1 -1
  2. package/bin/linux/contrast-service +0 -0
  3. package/bin/mac/contrast-service +0 -0
  4. package/bin/windows/contrast-service.exe +0 -0
  5. package/lib/assess/hapi/route-coverage.js +3 -3
  6. package/lib/assess/membrane/index.js +2 -8
  7. package/lib/assess/membrane/source-membrane.js +3 -4
  8. package/lib/assess/models/base-event.js +2 -2
  9. package/lib/assess/models/call-context.js +0 -3
  10. package/lib/assess/policy/propagators.json +20 -0
  11. package/lib/assess/policy/signatures.json +103 -0
  12. package/lib/assess/propagators/path/common.js +165 -36
  13. package/lib/assess/propagators/path/join.js +5 -1
  14. package/lib/assess/propagators/path/normalize.js +5 -1
  15. package/lib/assess/propagators/path/resolve.js +11 -2
  16. package/lib/assess/response-scanning/autocomplete-missing.js +0 -2
  17. package/lib/assess/response-scanning/parameter-pollution.js +0 -2
  18. package/lib/core/arch-components/dynamodb.js +1 -2
  19. package/lib/core/arch-components/dynamodbv3.js +44 -0
  20. package/lib/core/arch-components/index.js +1 -0
  21. package/lib/core/async-storage/hooks/bluebird.js +20 -0
  22. package/lib/core/config/options.js +3 -2
  23. package/lib/core/express/utils.js +1 -1
  24. package/lib/core/logger/debug-logger.js +15 -17
  25. package/lib/core/stacktrace.js +3 -4
  26. package/lib/feature-set.js +2 -1
  27. package/lib/hooks/encoding.js +1 -1
  28. package/lib/hooks/frameworks/base.js +8 -2
  29. package/lib/hooks/frameworks/http.js +23 -16
  30. package/lib/hooks/frameworks/http2.js +73 -0
  31. package/lib/hooks/frameworks/index.js +8 -3
  32. package/lib/hooks/http.js +112 -128
  33. package/lib/hooks/patcher.js +10 -12
  34. package/lib/hooks/require.js +16 -22
  35. package/lib/instrumentation.js +0 -3
  36. package/lib/protect/analysis/aho-corasick.js +13 -30
  37. package/lib/protect/rules/cmd-injection-command-backdoors/backdoor-detector.js +3 -3
  38. package/lib/protect/rules/signatures/reflected-xss/helpers/function-call.js +1 -1
  39. package/lib/protect/rules/xss/helpers/function-call.js +1 -1
  40. package/lib/util/clean-stack.js +1 -1
  41. package/lib/util/clean-string/brackets.js +3 -3
  42. package/lib/util/clean-string/concatenations.js +1 -1
  43. package/lib/util/clean-string/util.js +1 -2
  44. package/lib/util/ip-analyzer.js +1 -1
  45. package/lib/util/some.js +27 -0
  46. package/lib/util/xml-analyzer/external-entity-finder.js +1 -1
  47. package/package.json +14 -15
  48. package/lib/hooks/frameworks/https.js +0 -42
  49. package/node_modules/bindings/LICENSE.md +0 -22
  50. package/node_modules/bindings/README.md +0 -98
  51. package/node_modules/bindings/bindings.js +0 -221
  52. package/node_modules/bindings/package.json +0 -32
  53. package/node_modules/file-uri-to-path/.npmignore +0 -1
  54. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  55. package/node_modules/file-uri-to-path/History.md +0 -21
  56. package/node_modules/file-uri-to-path/LICENSE +0 -20
  57. package/node_modules/file-uri-to-path/README.md +0 -74
  58. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  59. package/node_modules/file-uri-to-path/index.js +0 -66
  60. package/node_modules/file-uri-to-path/package.json +0 -36
  61. package/node_modules/file-uri-to-path/test/test.js +0 -24
  62. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  63. package/node_modules/glossy/LICENSE +0 -19
  64. package/node_modules/glossy/README.md +0 -129
  65. package/node_modules/glossy/index.js +0 -12
  66. package/node_modules/glossy/lib/glossy/parse.js +0 -520
  67. package/node_modules/glossy/lib/glossy/produce.js +0 -459
  68. package/node_modules/glossy/package.json +0 -47
  69. package/node_modules/glossy/test/decide.js +0 -7
  70. package/node_modules/glossy/test/decode_pri.js +0 -24
  71. package/node_modules/glossy/test/parse_3164.js +0 -104
  72. package/node_modules/glossy/test/parse_5424.js +0 -106
  73. package/node_modules/glossy/test/parse_5848.js +0 -40
  74. package/node_modules/glossy/test/parse_8601.js +0 -14
  75. package/node_modules/glossy/test/parse_rfc3339.js +0 -9
  76. package/node_modules/glossy/test/produce.js +0 -162
  77. package/node_modules/glossy/test/runner.js +0 -40
  78. package/node_modules/glossy/test/structure_data.js +0 -24
  79. package/node_modules/nan/CHANGELOG.md +0 -537
  80. package/node_modules/nan/LICENSE.md +0 -13
  81. package/node_modules/nan/README.md +0 -455
  82. package/node_modules/nan/doc/asyncworker.md +0 -146
  83. package/node_modules/nan/doc/buffers.md +0 -54
  84. package/node_modules/nan/doc/callback.md +0 -76
  85. package/node_modules/nan/doc/converters.md +0 -41
  86. package/node_modules/nan/doc/errors.md +0 -226
  87. package/node_modules/nan/doc/json.md +0 -62
  88. package/node_modules/nan/doc/maybe_types.md +0 -583
  89. package/node_modules/nan/doc/methods.md +0 -664
  90. package/node_modules/nan/doc/new.md +0 -147
  91. package/node_modules/nan/doc/node_misc.md +0 -123
  92. package/node_modules/nan/doc/object_wrappers.md +0 -263
  93. package/node_modules/nan/doc/persistent.md +0 -296
  94. package/node_modules/nan/doc/scopes.md +0 -73
  95. package/node_modules/nan/doc/script.md +0 -38
  96. package/node_modules/nan/doc/string_bytes.md +0 -62
  97. package/node_modules/nan/doc/v8_internals.md +0 -199
  98. package/node_modules/nan/doc/v8_misc.md +0 -85
  99. package/node_modules/nan/include_dirs.js +0 -1
  100. package/node_modules/nan/nan.h +0 -2898
  101. package/node_modules/nan/nan_callbacks.h +0 -88
  102. package/node_modules/nan/nan_callbacks_12_inl.h +0 -514
  103. package/node_modules/nan/nan_callbacks_pre_12_inl.h +0 -520
  104. package/node_modules/nan/nan_converters.h +0 -72
  105. package/node_modules/nan/nan_converters_43_inl.h +0 -68
  106. package/node_modules/nan/nan_converters_pre_43_inl.h +0 -42
  107. package/node_modules/nan/nan_define_own_property_helper.h +0 -29
  108. package/node_modules/nan/nan_implementation_12_inl.h +0 -430
  109. package/node_modules/nan/nan_implementation_pre_12_inl.h +0 -263
  110. package/node_modules/nan/nan_json.h +0 -166
  111. package/node_modules/nan/nan_maybe_43_inl.h +0 -356
  112. package/node_modules/nan/nan_maybe_pre_43_inl.h +0 -268
  113. package/node_modules/nan/nan_new.h +0 -340
  114. package/node_modules/nan/nan_object_wrap.h +0 -156
  115. package/node_modules/nan/nan_persistent_12_inl.h +0 -132
  116. package/node_modules/nan/nan_persistent_pre_12_inl.h +0 -242
  117. package/node_modules/nan/nan_private.h +0 -73
  118. package/node_modules/nan/nan_string_bytes.h +0 -305
  119. package/node_modules/nan/nan_typedarray_contents.h +0 -96
  120. package/node_modules/nan/nan_weak.h +0 -437
  121. package/node_modules/nan/package.json +0 -41
  122. package/node_modules/nan/tools/1to2.js +0 -412
  123. package/node_modules/nan/tools/README.md +0 -14
  124. package/node_modules/nan/tools/package.json +0 -19
  125. package/node_modules/unix-dgram/LICENSE +0 -13
  126. package/node_modules/unix-dgram/README.md +0 -107
  127. package/node_modules/unix-dgram/binding.gyp +0 -20
  128. package/node_modules/unix-dgram/build/Makefile +0 -324
  129. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram/src/unix_dgram.o.d +0 -58
  130. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram.node.d +0 -1
  131. package/node_modules/unix-dgram/build/Release/.deps/Release/unix_dgram.node.d +0 -1
  132. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram/src/unix_dgram.o +0 -0
  133. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram.node +0 -0
  134. package/node_modules/unix-dgram/build/Release/unix_dgram.node +0 -0
  135. package/node_modules/unix-dgram/build/binding.Makefile +0 -6
  136. package/node_modules/unix-dgram/build/config.gypi +0 -213
  137. package/node_modules/unix-dgram/build/unix_dgram.target.mk +0 -159
  138. package/node_modules/unix-dgram/lib/unix_dgram.js +0 -168
  139. package/node_modules/unix-dgram/package.json +0 -36
  140. package/node_modules/unix-dgram/src/unix_dgram.cc +0 -404
  141. package/node_modules/unix-dgram/src/win_dummy.cc +0 -7
  142. package/node_modules/unix-dgram/test/test-connect-callback.js +0 -68
  143. package/node_modules/unix-dgram/test/test-connect.js +0 -53
  144. package/node_modules/unix-dgram/test/test-dgram-unix.js +0 -58
  145. package/node_modules/unix-dgram/test/test-send-error.js +0 -26
  146. package/node_modules/winston-syslog/.eslintrc +0 -7
  147. package/node_modules/winston-syslog/.travis.yml +0 -14
  148. package/node_modules/winston-syslog/CHANGELOG.md +0 -9
  149. package/node_modules/winston-syslog/LICENSE +0 -20
  150. package/node_modules/winston-syslog/README.md +0 -135
  151. package/node_modules/winston-syslog/lib/utils.js +0 -26
  152. package/node_modules/winston-syslog/lib/winston-syslog.js +0 -385
  153. package/node_modules/winston-syslog/package.json +0 -56
  154. package/node_modules/winston-syslog/test/format-test.js +0 -122
  155. package/node_modules/winston-syslog/test/syslog-test.js +0 -95
  156. package/node_modules/winston-syslog/test/unix-connect-test.js +0 -133
@@ -1,459 +0,0 @@
1
- /*
2
- * Glossy Producer - Generate valid syslog messages
3
- *
4
- * Copyright Squeeks <privacymyass@gmail.com>.
5
- * This is free software licensed under the MIT License -
6
- * see the LICENSE file that should be included with this package.
7
- */
8
-
9
- /*
10
- * These values replace the integers in message that define the facility.
11
- */
12
- var FacilityIndex = {
13
- 'kern': 0, // kernel messages
14
- 'user': 1, // user-level messages
15
- 'mail': 2, // mail system
16
- 'daemon': 3, // system daemons
17
- 'auth': 4, // security/authorization messages
18
- 'syslog': 5, // messages generated internally by syslogd
19
- 'lpr': 6, // line printer subsystem
20
- 'news': 7, // network news subsystem
21
- 'uucp': 8, // UUCP subsystem
22
- 'clock': 9, // clock daemon
23
- 'sec': 10, // security/authorization messages
24
- 'ftp': 11, // FTP daemon
25
- 'ntp': 12, // NTP subsystem
26
- 'audit': 13, // log audit
27
- 'alert': 14, // log alert
28
- // 'clock': 15, // clock daemon (note 2)
29
- 'local0': 16, // local use 0 (local0)
30
- 'local1': 17, // local use 1 (local1)
31
- 'local2': 18, // local use 2 (local2)
32
- 'local3': 19, // local use 3 (local3)
33
- 'local4': 20, // local use 4 (local4)
34
- 'local5': 21, // local use 5 (local5)
35
- 'local6': 22, // local use 6 (local6)
36
- 'local7': 23 // local use 7 (local7)
37
- };
38
-
39
- // Note 1 - Various operating systems have been found to utilize
40
- // Facilities 4, 10, 13 and 14 for security/authorization,
41
- // audit, and alert messages which seem to be similar.
42
-
43
- // Note 2 - Various operating systems have been found to utilize
44
- // both Facilities 9 and 15 for clock (cron/at) messages.
45
-
46
- /*
47
- * These values replace the integers in message that define the severity.
48
- */
49
- var SeverityIndex = {
50
- 'emerg': 0, // Emergency: system is unusable
51
- 'emergency': 0,
52
-
53
- 'alert': 1, // Alert: action must be taken immediately
54
-
55
- 'crit': 2, // Critical: critical conditions
56
- 'critical': 2,
57
-
58
- 'err': 3, // Error: error conditions
59
- 'error': 3,
60
-
61
- 'warn': 4, // Warning: warning conditions
62
- 'warning': 4,
63
-
64
- 'notice': 5, // Notice: normal but significant condition
65
-
66
- 'info': 6 , // Informational: informational messages
67
- 'information': 6,
68
- 'informational': 6,
69
-
70
- 'debug': 7 // Debug: debug-level messages
71
- };
72
-
73
-
74
- /*
75
- * Defines the range matching BSD style months to integers.
76
- */
77
- var BSDDateIndex = [
78
- 'Jan',
79
- 'Feb',
80
- 'Mar',
81
- 'Apr',
82
- 'May',
83
- 'Jun',
84
- 'Jul',
85
- 'Aug',
86
- 'Sep',
87
- 'Oct',
88
- 'Nov',
89
- 'Dec'
90
- ];
91
-
92
-
93
- /*
94
- * GlossyProducer class
95
- * @param {Object} provides persistent details of all messages:
96
- * facility: The facility index
97
- * severity: Severity index
98
- * host: Host address, either name or IP
99
- * appName: Application/Process name
100
- * pid: Process ID
101
- * msgID: Message ID (RFC5424 only)
102
- * type: RFC3164/RFC5424 message type
103
- * @return {Object} GlossyProducer object
104
- */
105
- var GlossyProducer = function(options) {
106
- if(options && typeof options =='object' && options.type) {
107
- this.type = options.type.match(/bsd|3164/i) ? "RFC3164" : "RFC5424";
108
- } else if(options && typeof options == 'string') {
109
- this.type = options.match(/bsd|3164/i) ? "RFC3164" : "RFC5424";
110
- } else {
111
- this.type = "RFC5424";
112
- }
113
-
114
- if(options && options.facility && FacilityIndex[options.facility]) {
115
- this.facility = options.facility;
116
- }
117
- if(options && options.pid && parseInt(options.pid, 10)) {
118
- this.pid = options.pid;
119
- }
120
- if(options && options.host) this.host = options.host.replace(/\s+/g, '');
121
- if(options && options.appName) this.appName = options.appName.replace(/\s+/g, '');
122
- if(options && options.msgID) this.msgID = options.msgID.replace(/\s+/g, '');
123
-
124
- };
125
-
126
-
127
- /*
128
- * @param {Object} options object containing details of the message:
129
- * facility: The facility index
130
- * severity: Severity index
131
- * prival: RFC5424 PRIVAL field - will override facility/severity if in valid [0-191] range and both provided
132
- * see ABNF at: (http://tools.ietf.org/html/rfc5424#section-6)
133
- * host: Host address, either name or IP
134
- * appName: Application ID
135
- * pid: Process ID
136
- * date: Timestamp to be applied, uses current GMT by default
137
- * time: Optional Date() argument may be used in lieu of 'date' - allows parse() output to be used for produce args
138
- * msgID: Message ID (RFC5424 only)
139
- * structuredData: Object of structured data (RFC5424 only)
140
- * message: The message to be sent
141
- *
142
- * @param {Function} callback a callback run once the message is built
143
- * @return {String} compiledMessage on completion, false on failure
144
- */
145
- GlossyProducer.prototype.produce = function(options, callback) {
146
- // TODO: next breaking api change make key output from parse() consistent with produce input options
147
- if(options.time instanceof Date && !options.date) options.date = options.time;
148
-
149
- var msgData = [];
150
- if(!options.date instanceof Date) {
151
- options.date = new Date(Date());
152
- }
153
-
154
- if(!options.facility) options.facility = this.facility;
155
-
156
- if(this.type == 'RFC5424') {
157
- if(options.hasOwnProperty('prival') && options.prival >= 0 && options.prival <= 191) {
158
- var prival = '<' + options.prival + '>1';
159
- }
160
- else {
161
- var prival = calculatePrival({
162
- facility: options.facility,
163
- severity: options.severity,
164
- version: 1
165
- });
166
- }
167
-
168
- if(prival === false) return false;
169
-
170
- msgData.push(prival);
171
- msgData.push(generateDate(options.date));
172
-
173
- msgData.push(options.host || this.host || '-');
174
- msgData.push(options.appName || this.appName || '-');
175
- msgData.push(options.pid || this.pid || '-');
176
- msgData.push(options.msgID || this.msgID || '-');
177
- if(options.structuredData) {
178
- msgData.push(generateStructuredData(options.structuredData) || '-');
179
- } else {
180
- msgData.push('-');
181
- }
182
-
183
- if(!options.message) options.message = '-';
184
-
185
- } else {
186
- options.timestamp = generateBSDDate(options.date);
187
- msgData.push(
188
- calculatePrival({
189
- facility: options.facility,
190
- severity: options.severity
191
- }) + options.timestamp
192
- );
193
-
194
- msgData.push(options.host || this.host);
195
- msgData.push();
196
- if(options.appName || this.appName) {
197
- var app = options.appName || this.appName;
198
- var pid = options.pid || this.pid;
199
-
200
- if(parseInt(pid, 10)) {
201
- msgData.push(app + '[' + pid + ']:');
202
- } else {
203
- msgData.push(app + ':');
204
- }
205
- }
206
- }
207
-
208
- var compiledMessage = msgData.filter(function (messageElement) {
209
- // Filter null/ undefined values
210
- return messageElement;
211
- }).map(function (messageElement) {
212
- // Trim messages to remove successive whitespace
213
- return String(messageElement).trim();
214
- }).join(' ');
215
- compiledMessage += ' ' + options.message || '';
216
- msgData.push(compiledMessage);
217
-
218
- if(callback) {
219
- return callback(compiledMessage);
220
- } else {
221
- return compiledMessage;
222
- }
223
-
224
- };
225
-
226
-
227
- /*
228
- * @param {Object} options object containing details of the message with
229
- * the severity as 'debug'
230
- * @param {Function} callback a callback run once the message is built
231
- * @return {String} compiledMessage on completion, false on failure
232
- */
233
- GlossyProducer.prototype.debug = function(options, callback) {
234
- options.severity = 'debug';
235
- return this.produce(options, callback);
236
- };
237
-
238
-
239
- /*
240
- * @param {Object} options object containing details of the message with
241
- * the severity as 'info'
242
- * @param {Function} callback a callback run once the message is built
243
- * @return {String} compiledMessage on completion, false on failure
244
- */
245
- GlossyProducer.prototype.info = function(options, callback) {
246
- options.severity = 'info';
247
- return this.produce(options, callback);
248
- };
249
-
250
-
251
- /*
252
- * @param {Object} options object containing details of the message with
253
- * the severity as 'notice'
254
- * @param {Function} callback a callback run once the message is built
255
- * @return {String} compiledMessage on completion, false on failure
256
- */
257
- GlossyProducer.prototype.notice = function(options, callback) {
258
- options.severity = 'notice';
259
- return this.produce(options, callback);
260
- };
261
-
262
-
263
- /*
264
- * @param {Object} options object containing details of the message with
265
- * the severity as 'warn'
266
- * @param {Function} callback a callback run once the message is built
267
- * @return {String} compiledMessage on completion, false on failure
268
- */
269
- GlossyProducer.prototype.warn = function(options, callback) {
270
- options.severity = 'warn';
271
- return this.produce(options, callback);
272
- };
273
-
274
-
275
- /*
276
- * @param {Object} options object containing details of the message with
277
- * the severity as 'crit'
278
- * @param {Function} callback a callback run once the message is built
279
- * @return {String} compiledMessage on completion, false on failure
280
- */
281
- GlossyProducer.prototype.crit = function(options, callback) {
282
- options.severity = 'crit';
283
- return this.produce(options, callback);
284
- };
285
-
286
-
287
- /*
288
- * @param {Object} options object containing details of the message with
289
- * the severity as 'alert'
290
- * @param {Function} callback a callback run once the message is built
291
- * @return {String} compiledMessage on completion, false on failure
292
- */
293
- GlossyProducer.prototype.alert = function(options, callback) {
294
- options.severity = 'alert';
295
- return this.produce(options, callback);
296
- };
297
-
298
-
299
- /*
300
- * @param {Object} options object containing details of the message with
301
- * the severity as 'emergency'
302
- * @param {Function} callback a callback run once the message is built
303
- * @return {String} compiledMessage on completion, false on failure
304
- */
305
- GlossyProducer.prototype.emergency = function(options, callback) {
306
- options.severity = 'emergency';
307
- return this.produce(options, callback);
308
- };
309
-
310
-
311
- /*
312
- * Prepend a zero to a number less than 10
313
- * @param {Number} n
314
- * @return {String}
315
- *
316
- * Where's sprintf when you need it?
317
- */
318
- function leadZero(n) {
319
- if(typeof n != 'number') return n;
320
- n = n < 10 ? '0' + n : n ;
321
- return n;
322
- }
323
-
324
-
325
- /*
326
- * Get current date in RFC 3164 format. If no date is supplied, the default
327
- * is the current time in GMT + 0.
328
- * @param {Date} dateObject optional Date object
329
- * @returns {String}
330
- *
331
- * Features code taken from https://github.com/akaspin/ain
332
- */
333
- function generateBSDDate(dateObject) {
334
- if(!(dateObject instanceof Date)) dateObject = new Date(Date());
335
- var hours = leadZero(dateObject.getHours());
336
- var minutes = leadZero(dateObject.getMinutes());
337
- var seconds = leadZero(dateObject.getSeconds());
338
- var month = dateObject.getMonth();
339
- var day = dateObject.getDate();
340
- if(day < 10) (day = ' ' + day);
341
- return BSDDateIndex[month] + " " + day + " " + hours + ":" + minutes + ":" + seconds;
342
- }
343
-
344
-
345
- /*
346
- * Generate date in RFC 3339 format. If no date is supplied, the default is
347
- * the current time in GMT + 0.
348
- * @param {Date} dateObject optional Date object
349
- * @returns {String} formatted date
350
- */
351
- function generateDate(dateObject) {
352
- if(!(dateObject instanceof Date)) dateObject = new Date(Date());
353
-
354
- // Calcutate the offset
355
- var timeOffset;
356
- var minutes = Math.abs(dateObject.getTimezoneOffset());
357
- var hours = 0;
358
- while(minutes >= 60) {
359
- hours++;
360
- minutes -= 60;
361
- }
362
-
363
- if(dateObject.getTimezoneOffset() < 0) {
364
- // Ahead of UTC
365
- timeOffset = '+' + leadZero(hours) + '' + ':' + leadZero(minutes);
366
- } else if(dateObject.getTimezoneOffset() > 0) {
367
- // Behind UTC
368
- timeOffset = '-' + leadZero(hours) + '' + ':' + leadZero(minutes);
369
- } else {
370
- // UTC
371
- timeOffset = 'Z';
372
- }
373
-
374
-
375
- // Date
376
- formattedDate = dateObject.getUTCFullYear() + '-' +
377
- // N.B. Javascript Date objects return months of the year indexed from
378
- // zero, while the RFC 5424 syslog standard expects months indexed from
379
- // one.
380
- leadZero(dateObject.getUTCMonth() + 1) + '-' +
381
- // N.B. Javascript Date objects return days of the month indexed from one
382
- // (unlike months of year), so this does not need any correction.
383
- leadZero(dateObject.getUTCDate()) + 'T' +
384
- // Time
385
- leadZero(dateObject.getUTCHours()) + ':' +
386
- leadZero(dateObject.getUTCMinutes()) + ':' +
387
- leadZero(dateObject.getUTCSeconds()) + '.' +
388
- leadZero(dateObject.getUTCMilliseconds()) +
389
- timeOffset;
390
-
391
- return formattedDate;
392
-
393
- }
394
-
395
-
396
- /*
397
- * Calculate the PRIVAL for a given facility
398
- * @param {Object} values Contains the three key arguments
399
- * facility {Number}/{String} the Facility Index
400
- * severity {Number}
401
- * version {Number} For RFC 5424 messages, this should be 1
402
- *
403
- * @return {String}
404
- */
405
- function calculatePrival(values) {
406
-
407
- var pri = {};
408
- // Facility
409
- if(typeof values.facility == 'string' && !values.facility.match(/^\d+$/)) {
410
- pri.facility = FacilityIndex[values.facility.toLowerCase()];
411
- } else if( parseInt(values.facility, 10) && parseInt(values.facility, 10) < 24) {
412
- pri.facility = parseInt(values.facility, 10);
413
- }
414
-
415
- //Severity
416
- if(typeof values.severity == 'string' && !values.severity.match(/^\d+$/)) {
417
- pri.severity = SeverityIndex[values.severity.toLowerCase()];
418
- } else if( parseInt(values.severity, 10) && parseInt(values.severity, 10) < 8) {
419
- pri.severity = parseInt(values.severity, 10);
420
- }
421
-
422
- if(!isNaN(pri.severity) && !isNaN(pri.facility)) {
423
- pri.prival = (pri.facility * 8) + pri.severity;
424
- pri.str = values.version ? '<' + pri.prival + '>' + values.version : '<' + pri.prival + '>';
425
- return pri.str;
426
- } else {
427
- return false;
428
- }
429
-
430
- }
431
-
432
-
433
- /*
434
- * Serialise objects into the structured data segment
435
- * @param {Object} struct The object to serialise
436
- * @return {String} structuredData the serialised data
437
- */
438
- function generateStructuredData(struct) {
439
- if(typeof struct != 'object') return false;
440
-
441
- var structuredData = '';
442
-
443
- for(var sdID in struct) {
444
- sdElement = struct[sdID];
445
- structuredData += '[' + sdID;
446
- for(var key in sdElement) {
447
- sdElement[key] = sdElement[key].toString().replace(/(\]|\\|")/g, '\\$1');
448
- structuredData += ' ' + key + '="' + sdElement[key] + '"';
449
- }
450
- structuredData += ']';
451
-
452
- }
453
-
454
- return structuredData;
455
- }
456
-
457
- if(typeof module == 'object') {
458
- module.exports = GlossyProducer;
459
- }
@@ -1,47 +0,0 @@
1
- {
2
- "name" : "glossy",
3
- "version" : "0.1.7",
4
- "description" : "Syslog parser and producer",
5
- "keywords" : ["syslog", "logging"],
6
- "url" : "http://github.com/squeeks/glossy",
7
- "main" : "./index.js",
8
- "author" : "Squeeks <privacymyass@gmail.com>",
9
- "maintainers" : [
10
- { "name" : "Squeeks", "email" : "privacymyass@gmail.com" }
11
- ],
12
- "contributors" : [
13
- { "name": "artifi", "email": "artifipl@gmail.com" },
14
- { "name": "Matt Bornski", "email": "matt@bornski.com" },
15
- { "name": "Fyodor Y", "email": "fygrave@o0o.nu" },
16
- { "name": "Stan Carney", "email": "stan.carney@rootsh.me" },
17
- { "name": "Alexander Metzner", "email": "alexander.metzner@thomann.de" },
18
- { "name": "zaphod1984", "email": "zaphod84@gmx.de" },
19
- { "name": "Eric Cornelius", "email": "eric.cornelius@mandiant.com" },
20
- { "name": "horpto", "email": "_singleton__@hackerdom.ru" }
21
- ],
22
- "directories" : {
23
- "lib": "./lib",
24
- "test": "./test"
25
- },
26
- "scripts" : {
27
- "test": "node test/runner.js"
28
- },
29
- "repository" : {
30
- "type": "git",
31
- "url": "http://github.com/squeeks/glossy.git"
32
- },
33
- "bugs" : {
34
- "url": "http://github.com/squeeks/glossy/issues"
35
- },
36
- "licenses" : [
37
- {
38
- "type": "MIT",
39
- "url": "http://www.opensource.org/licenses/MIT"
40
- }
41
- ],
42
- "engines" : { "node": ">= 0.2.5" }
43
-
44
- ,"_resolved": "https://registry.npmjs.org/glossy/-/glossy-0.1.7.tgz"
45
- ,"_integrity": "sha1-dptZhKlvYGarnqdYIkgl7mwhDws="
46
- ,"_from": "glossy@0.1.7"
47
- }
@@ -1,7 +0,0 @@
1
- var syslogParser = require('../lib/glossy/parse.js'),
2
- assert = require('assert');
3
-
4
- assert.ok(syslogParser, 'parser loaded');
5
- assert.equal(syslogParser.decideValue(1), "1");
6
- assert.equal(syslogParser.decideValue('-'), null);
7
- assert.equal(syslogParser.decideValue('ー'), 'ー');
@@ -1,24 +0,0 @@
1
- var syslogParser = require('../lib/glossy/parse.js'),
2
- assert = require('assert');
3
-
4
- assert.ok(syslogParser, 'parser loaded');
5
- assert.deepEqual(syslogParser.decodePri('<16>'), {
6
- prival: 16,
7
- facilityID: 2,
8
- severityID: 0,
9
- facility: 'mail',
10
- severity: 'emerg'
11
- });
12
-
13
- assert.deepEqual(syslogParser.decodePri('<66>1'), {
14
- prival: 66,
15
- facilityID: 8,
16
- severityID: 2,
17
- facility: 'uucp',
18
- severity: 'crit'
19
- });
20
-
21
-
22
- assert.equal(syslogParser.decodePri('1<16>'), false);
23
- assert.equal(syslogParser.decodePri('<200>'), false);
24
-
@@ -1,104 +0,0 @@
1
- var syslogParser = require('../lib/glossy/parse.js'),
2
- syslogGenerator = require('../lib/glossy/produce.js'),
3
- assert = require('assert');
4
-
5
- assert.ok(syslogParser, 'parser loaded');
6
-
7
- var gen = new syslogGenerator({type: 'bsd'});
8
-
9
- var doubleSpaced = "<13>Feb 5 17:32:18 10.0.0.99 Use the BFG!";
10
- syslogParser.parse(doubleSpaced, function(parsedMessage){
11
- var msg = gen.produce(parsedMessage);
12
- assert.equal(doubleSpaced, msg);
13
-
14
- var expectedData = {
15
- originalMessage: doubleSpaced,
16
- prival: 13,
17
- facilityID: 1,
18
- severityID: 5,
19
- facility: 'user',
20
- severity: 'notice',
21
- type: 'RFC3164',
22
- host: '10.0.0.99',
23
- message: 'Use the BFG!' };
24
-
25
- delete parsedMessage.date;
26
- delete parsedMessage.time;
27
- delete parsedMessage.timestamp;
28
-
29
- assert.deepEqual(parsedMessage, expectedData);
30
- });
31
-
32
- var withCommand = "<34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8";
33
- syslogParser.parse(withCommand, function(parsedMessage){
34
- var expectedData = {
35
- originalMessage: withCommand,
36
- prival: 34,
37
- facilityID: 4,
38
- severityID: 2,
39
- facility: 'auth',
40
- severity: 'crit',
41
- type: 'RFC3164',
42
- host: 'mymachine',
43
- message: "su: 'su root' failed for lonvick on /dev/pts/8" };
44
-
45
- var parsedDate = parsedMessage.time;
46
- delete parsedMessage.time;
47
-
48
- assert.equal(parsedDate.getUTCMonth(), 9);
49
- assert.equal(parsedDate.getUTCHours(), 20);
50
- assert.deepEqual(parsedMessage, expectedData);
51
-
52
- });
53
-
54
- var withDifficultTime = "<191>94103: 51w2d: DHCPD: assigned IP address 10.10.1.94 to client 0100.01c4.21d3.b3";
55
- syslogParser.parse(withDifficultTime, function(parsedMessage){
56
- var expectedData = {
57
- originalMessage: withDifficultTime,
58
- prival: 191,
59
- facilityID: 23,
60
- severityID: 7,
61
- facility: 'local7',
62
- severity: 'debug',
63
- type: 'RFC3164',
64
- time: undefined,
65
- message: '51w2d: DHCPD: assigned IP address 10.10.1.94 to client 0100.01c4.21d3.b3'};
66
-
67
- assert.deepEqual(parsedMessage, expectedData);
68
- });
69
-
70
- var withYear = "<32>Mar 05 2011 22:21:02: %ASA-6-302013: Built inbound TCP connection 401 for outside:123.123.123.123/4413 (123.123.123.123/4413) to net:BOX/25 (BOX/25)";
71
- syslogParser.parse(withYear, function(parsedMessage){
72
- var expectedData = {
73
- originalMessage: withYear,
74
- prival: 32,
75
- facilityID: 4,
76
- severityID: 0,
77
- facility: 'auth',
78
- severity: 'emerg',
79
- type: 'RFC3164',
80
- time: undefined,
81
- host: '22:21:02:',
82
- message: '%ASA-6-302013: Built inbound TCP connection 401 for outside:123.123.123.123/4413 (123.123.123.123/4413) to net:BOX/25 (BOX/25)' };
83
-
84
- assert.deepEqual(parsedMessage, expectedData);
85
- });
86
-
87
- var withSpaces = "<13>Mar 15 11:22:40 myhost.com 0 11,03/15/12,11:22:38,§ó·s,10.10.10.171,,40C6A91373B6,";
88
- syslogParser.parse(withSpaces, function(parsedMessage){
89
- var expectedData = {
90
- originalMessage: withSpaces,
91
- prival: 13,
92
- facilityID: 1,
93
- severityID: 5,
94
- facility: 'user',
95
- severity: 'notice',
96
- type: 'RFC3164',
97
- host: 'myhost.com',
98
- message: ' 0 11,03/15/12,11:22:38,§ó·s,10.10.10.171,,40C6A91373B6,' };
99
-
100
- delete parsedMessage.time;
101
- assert.deepEqual(parsedMessage, expectedData);
102
-
103
- });
104
-