@@ -13,6 +13,7 @@ import (
13
13
"net/url"
14
14
"os"
15
15
"path"
16
+ "strconv"
16
17
"strings"
17
18
18
19
"errors"
@@ -142,7 +143,7 @@ func main() {
142
143
mux .HandleFunc ("/devtools/page/" , handlerFunc ("page" ))
143
144
mux .HandleFunc ("/devtools/browser/" , handlerFunc ("browser" ))
144
145
145
- log .Printf ("Listening for DevTools connections on: %s" , * flagListen )
146
+ log .Printf ("Proxy is listening for DevTools connections on: %s" , * flagListen )
146
147
147
148
log .Fatal (http .ListenAndServe (* flagListen , mux ))
148
149
}
@@ -157,8 +158,7 @@ func dumpStream(logger *logrus.Entry, stream chan *protocolMessage) {
157
158
)
158
159
159
160
requests := make (map [uint64 ]* protocolMessage )
160
- targetRequests := make (map [uint64 ]* protocolMessage )
161
- sessions := make (map [string ]interface {}, 0 )
161
+ sessions := make (map [string ]map [uint64 ]* protocolMessage )
162
162
163
163
loop:
164
164
for {
@@ -174,9 +174,14 @@ loop:
174
174
if msg .HasSessionId () {
175
175
var targetLogger * logrus.Entry
176
176
177
+ targetRequests , exists := sessions [msg .TargetID ()]
178
+ if ! exists {
179
+ targetRequests = make (map [uint64 ]* protocolMessage )
180
+ sessions [msg .TargetID ()] = targetRequests
181
+ }
182
+
177
183
if * flagDistributeLogs {
178
184
logger , err := createLogger (fmt .Sprintf ("session-%s" , msg .TargetID ()))
179
- sessions [msg .TargetID ()] = interface {}(nil )
180
185
181
186
if err != nil {
182
187
panic (fmt .Sprintf ("could not create logger: %v" , err ))
@@ -203,7 +208,7 @@ loop:
203
208
if * flagShowRequests {
204
209
targetLogger .WithFields (logrus.Fields {
205
210
fieldType : typeRequest ,
206
- fieldMethod : protocolMessage .Method ,
211
+ fieldMethod : protocolMessage .Method + "-(" + strconv . FormatUint ( msg . ID , 10 ) + ")" ,
207
212
}).Info (serialize (protocolMessage .Params ))
208
213
}
209
214
@@ -212,18 +217,14 @@ loop:
212
217
fieldLevel : levelConnection ,
213
218
}).Errorf ("Could not deserialize message: %+v" , err )
214
219
}
215
- }
216
-
217
- if msg .IsEvent () {
220
+ } else if msg .IsEvent () {
218
221
if protocolMessage , err := decodeProtocolMessage (msg ); err == nil {
219
222
if protocolMessage .IsEvent () {
220
223
targetLogger .WithFields (logrus.Fields {
221
224
fieldType : typeEvent ,
222
225
fieldMethod : protocolMessage .Method ,
223
226
}).Info (serialize (protocolMessage .Params ))
224
- }
225
-
226
- if protocolMessage .IsResponse () {
227
+ } else if protocolMessage .IsResponse () {
227
228
var logMessage string
228
229
var logType int
229
230
var logRequest string
@@ -246,17 +247,68 @@ loop:
246
247
logRequest = errorColor ("could not find request with id: %d" , protocolMessage .ID )
247
248
}
248
249
250
+ if * flagShowRequests {
251
+ logMethod += "*(" + strconv .FormatUint (msg .ID , 10 ) + ")"
252
+ } else {
253
+ logMethod += "*"
254
+ }
255
+
249
256
targetLogger .WithFields (logrus.Fields {
250
257
fieldType : logType ,
251
258
fieldMethod : logMethod ,
252
259
fieldRequest : logRequest ,
253
260
}).Info (logMessage )
261
+ } else {
262
+ targetLogger .WithFields (logrus.Fields {
263
+ fieldType : typeRequest ,
264
+ fieldMethod : msg .Method ,
265
+ }).Info ("Could not understand session event: " + msg .raw )
254
266
}
255
267
} else {
256
268
logger .WithFields (logrus.Fields {
257
269
fieldLevel : levelConnection ,
258
270
}).Errorf ("Could not deserialize message: %+v" , err )
259
271
}
272
+ } else if msg .IsResponse () {
273
+ var logMessage string
274
+ var logType int
275
+ var logRequest string
276
+ var logMethod string
277
+
278
+ if msg .IsError () {
279
+ logMessage = serialize (msg .Error )
280
+ logType = typeRequestResponseError
281
+ } else {
282
+ logMessage = serialize (msg .Result )
283
+ logType = typeRequestResponse
284
+ }
285
+
286
+ if request , ok := targetRequests [msg .ID ]; ok && request != nil {
287
+ delete (targetRequests , msg .ID )
288
+ logRequest = serialize (request .Params )
289
+ logMethod = request .Method
290
+
291
+ } else {
292
+ logRequest = errorColor ("could not find request with id: %d" , msg .ID )
293
+ }
294
+
295
+ if * flagShowRequests {
296
+ logMethod += "*(" + strconv .FormatUint (msg .ID , 10 ) + ")"
297
+ } else {
298
+ logMethod += "*"
299
+ }
300
+
301
+ targetLogger .WithFields (logrus.Fields {
302
+ fieldType : logType ,
303
+ fieldMethod : logMethod ,
304
+ fieldRequest : logRequest ,
305
+ }).Info (logMessage )
306
+
307
+ } else {
308
+ targetLogger .WithFields (logrus.Fields {
309
+ fieldType : typeRequest ,
310
+ fieldMethod : msg .Method ,
311
+ }).Info ("Could not understand session message: " + msg .raw )
260
312
}
261
313
262
314
} else {
@@ -271,12 +323,10 @@ loop:
271
323
if * flagShowRequests {
272
324
protocolLogger .WithFields (logrus.Fields {
273
325
fieldType : typeRequest ,
274
- fieldMethod : msg .Method ,
326
+ fieldMethod : msg .Method + "-(" + strconv . FormatUint ( msg . ID , 10 ) + ")" ,
275
327
}).Info (serialize (msg .Params ))
276
328
}
277
- }
278
-
279
- if msg .IsResponse () {
329
+ } else if msg .IsResponse () {
280
330
281
331
var logMessage string
282
332
var logType int
@@ -303,13 +353,16 @@ loop:
303
353
fieldRequest : logRequest ,
304
354
}).Info (logMessage )
305
355
}
306
- }
307
-
308
- if msg .IsEvent () {
356
+ } else if msg .IsEvent () {
309
357
protocolLogger .WithFields (logrus.Fields {
310
358
fieldType : typeEvent ,
311
359
fieldMethod : msg .Method ,
312
360
}).Info (serialize (msg .Params ))
361
+ } else {
362
+ protocolLogger .WithFields (logrus.Fields {
363
+ fieldType : typeRequest ,
364
+ fieldMethod : msg .Method ,
365
+ }).Info ("Could not understand message: " + msg .raw )
313
366
}
314
367
}
315
368
}
0 commit comments