forked from killerbobjr/mongo-morgan-ext
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
189 lines (189 loc) · 8.94 KB
/
index.js
File metadata and controls
189 lines (189 loc) · 8.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
var HTTPlogger = require('mongo-morgan');
var rid = require('rid');
var RID = rid();
function StructuredLogging() {
return function (tokens, req, res) {
let clientname = null;
let ingredientName;
if (req.url.includes('/signin')) {
if (req.body.clientname) {
clientname = req.body.clientname.toLowerCase();
}
} else if (
req.url.includes('/client/assets') ||
req.url.includes('/contact') ||
req.url.includes('/forgot') ||
req.url.includes('/forgot/username') ||
req.url.includes('/forgot/password') ||
req.url.includes('/recaptcha') ||
req.url.includes('/reset/lockout') ||
req.url.includes('/forgot/showUsername')
) {
clientname = null;
} else {
if (req.decodedToken.clientname) {
clientname = req.decodedToken.clientname;
}
}
if (req.query.name && typeof(req.query.name) === 'string') {
ingredientName = req.query.name.toLowerCase();
}
var JSONLine = JSON.stringify({
RequestID: tokens['id'](req, res),
clientname: clientname || '',
ingredientName: ingredientName || '',
upc: req.query.upc || '',
sku: req.query.sku || '',
handle: req.query.handle || '',
status: tokens.status(req, res), //1
method: tokens.method(req, res), //2
'Remote-user': tokens['remote-user'](req, res), //3
'Remote-address': tokens['remote-addr'](req, res), //4
url: tokens.url(req, res), //5
HTTPversion: 'HTTP/' + tokens['http-version'](req, res), //6
'Response-time': tokens['response-time'](req, res, 'digits'), //7
date: tokens.date(req, res, 'web'), //8
Referrer: tokens.referrer(req, res), //9
REQUEST: {
//10
Accept: tokens['req'](req, res, 'Accept'), //10:01
'Accept-Charset': tokens['req'](req, res, 'Accept-Charset'), //10:02
'Accept-Encoding': tokens['req'](req, res, 'Accept-Encoding'), //10:03
'Accept-Language': tokens['req'](req, res, 'Accept-Language'), //10:04
Authorization: tokens['req'](req, res, 'Authorization'), //10:05
'Cache-Control': tokens['req'](req, res, 'Cache-Control'), //10:06
Connection: tokens['req'](req, res, 'Connection'), //10:07
Cookie: tokens['req'](req, res, 'Cookie'), //10:08
'Content-Length': tokens['req'](req, res, 'Content-Length'), //10:09
'Content-MD5': tokens['req'](req, res, 'Content-MD5'), //10:10
'Content-Type': tokens['req'](req, res, 'Content-Type'), //10:11
Expect: tokens['req'](req, res, 'Expect'), //10:12
Forwarded: tokens['req'](req, res, 'Forwarded'), //10:13
From: tokens['req'](req, res, 'From'), //10:14
Host: tokens['req'](req, res, 'Host'), //10:15
'Max-Forwards': tokens['req'](req, res, 'Max-Forwards'), //10:16
Origin: tokens['req'](req, res, 'Origin'), //10:17
Pragma: tokens['req'](req, res, 'Pragma'), //10:18
'Proxy-Authorization': tokens['req'](req, res, 'Proxy-Authorization'), //10:19
Range: tokens['req'](req, res, 'Range'), //10:20
TE: tokens['req'](req, res, 'TE'), //10:21
'User-Agent': tokens['req'](req, res, 'User-Agent'), //10:22
Via: tokens['req'](req, res, 'Via'), //10:23
Warning: tokens['req'](req, res, 'Warning'), //10:24
Upgrade: tokens['req'](req, res, 'Upgrade'), //10:25
Referer: tokens['req'](req, res, 'Referer'), //10:26
Date: tokens['req'](req, res, 'Date'), //10:27
'X-requested-with': tokens['req'](req, res, 'X-requested-with'), //10:28
'X-Csrf-Token': tokens['req'](req, res, 'X-Csrf-Token'), //10:29
'X-UIDH': tokens['req'](req, res, 'X-UIDH'), //10:30
'Proxy-Connection': tokens['req'](req, res, 'Proxy-Connection'), //10:31
'X-Wap-Profile': tokens['req'](req, res, 'X-Wap-Profile'), //10:32
'X-ATT-DeviceId': tokens['req'](req, res, 'X-ATT-DeviceId'), //10:33
'X-Http-Method-Override': tokens['req'](
req,
res,
'X-Http-Method-Override'
), //10:34
'Front-End-Https': tokens['req'](req, res, 'Front-End-Https'), //10:35
'X-Forwarded-Proto': tokens['req'](req, res, 'X-Forwarded-Proto'), //10:36
'X-Forwarded-Host': tokens['req'](req, res, 'X-Forwarded-Host'), //10:37
'X-Forwarded-For': tokens['req'](req, res, 'X-Forwarded-For'), //10:38
DNT: tokens['req'](req, res, 'DNT'), //10:39
'Accept-Datetime': tokens['req'](req, res, 'Accept-Datetime'), //10:40
'If-Match': tokens['req'](req, res, 'If-Match'), //10:41
'If-Modified-Since': tokens['req'](req, res, 'If-Modified-Since'), //10:42
'If-None-Match': tokens['req'](req, res, 'If-None-Match'), //10:43
'If-Range': tokens['req'](req, res, 'If-Range'), //10:44
'If-Unmodified-Since': tokens['req'](req, res, 'If-Unmodified-Since'), //10:45
},
RESPONSE: {
//11
Status: tokens['res'](req, res, 'Status'), //11:01
'Content-MD5': tokens['res'](req, res, 'Content-MD5'), //11:02
'X-Frame-Options': tokens['res'](req, res, 'X-Frame-Options'), //11:03
'Accept-Ranges': tokens['res'](req, res, 'Accept-Ranges'), //11:04
Age: tokens['res'](req, res, 'Age'), //11:05
Allow: tokens['res'](req, res, 'Allow'), //11:06
'Cache-Control': tokens['res'](req, res, 'Cache-Control'), //11:07
Connection: tokens['res'](req, res, 'Connection'), //11:08
'Content-Disposition': tokens['res'](req, res, 'Content-Disposition'), //11:09
'Content-Encoding': tokens['res'](req, res, 'Content-Encoding'), //11:10
'Content-Language': tokens['res'](req, res, 'Content-Language'), //11:11
'Content-Length': tokens['res'](req, res, 'Content-Length'), //11:12
'Content-Location': tokens['res'](req, res, 'Content-Location'), //11:13
'Content-Range': tokens['res'](req, res, 'Content-Range'), //11:14
'Content-Type': tokens['res'](req, res, 'Content-Type'), //11:15
Date: tokens['res'](req, res, 'Date'), //11:16
'Last-Modified': tokens['res'](req, res, 'Last-Modified'), //11:17
Link: tokens['res'](req, res, 'Link'), //11:18
Location: tokens['res'](req, res, 'Location'), //11:19
P3P: tokens['res'](req, res, 'P3P'), //11:20
Pragma: tokens['res'](req, res, 'Pragma'), //11:21
'Proxy-Authenticate': tokens['res'](req, res, 'Proxy-Authenticate'), //11:22
'Public-Key-Pins': tokens['res'](req, res, 'Public-Key-Pins'), //11:23
'Retry-After': tokens['res'](req, res, 'Retry-After'), //11:24
Server: tokens['res'](req, res, 'Server'), //11:25
Trailer: tokens['res'](req, res, 'Trailer'), //11:26
'Transfer-Encoding': tokens['res'](req, res, 'Transfer-Encoding'), //11:27
TSV: tokens['res'](req, res, 'TSV'), //11:28
Upgrade: tokens['res'](req, res, 'Upgrade'), //11:29
Vary: tokens['res'](req, res, 'Vary'), //11:30
Via: tokens['res'](req, res, 'Via'), //11:31
Warning: tokens['res'](req, res, 'Warning'), //11:32
'WWW-Authenticate': tokens['res'](req, res, 'WWW-Authenticate'), //11:33
Expires: tokens['res'](req, res, 'Expires'), //11:34
'Set-Cookie': tokens['res'](req, res, 'Set-Cookie'), //11:35
'Strict-Transport-Security': tokens['res'](
req,
res,
'Strict-Transport-Security'
), //11:36
Refresh: tokens['res'](req, res, 'Refresh'), //11:37
'Access-Control-Allow-Origin': tokens['res'](
req,
res,
'Access-Control-Allow-Origin'
), //11:38
'X-XSS-Protection': tokens['res'](req, res, 'X-XSS-Protection'), //11:39
'X-WebKit-CSP': tokens['res'](req, res, 'X-WebKit-CSP'), //11:40
'X-Content-Security-Policy': tokens['res'](
req,
res,
'X-Content-Security-Policy'
), //11:41
'Content-Security-Policy': tokens['res'](
req,
res,
'Content-Security-Policy'
), //11:42
'X-Content-Type-Options': tokens['res'](
req,
res,
'X-Content-Type-Options'
), //11:43
'X-Powered-By': tokens['res'](req, res, 'X-Powered-By'), //11:44
'X-UA-Compatible': tokens['res'](req, res, 'X-UA-Compatible'), //11:45
'X-Content-Duration': tokens['res'](req, res, 'X-Content-Duration'), //11:46
'Upgrade-Insecure-Requests': tokens['res'](
req,
res,
'Upgrade-Insecure-Requests'
), //11:47
'X-Request-ID': tokens['res'](req, res, 'X-Request-ID'), //11:48
ETag: tokens['res'](req, res, 'ETag'), //11:49
'Accept-Patch': tokens['res'](req, res, 'Accept-Patch'), //11:50
},
});
return JSONLine;
};
}
HTTPlogger.token('id', function getId(req) {
return RID;
});
function mongoMorganExtendedFormat(db, collectionname, skipfunction) {
return HTTPlogger(db, StructuredLogging(), {
skip: skipfunction,
collection: collectionname,
});
}
module.exports = mongoMorganExtendedFormat;