From 21f132769a54a95cf724e74aa53cbd2804dc208a Mon Sep 17 00:00:00 2001 From: fox Date: Sun, 27 Jan 2019 12:11:13 +0800 Subject: [PATCH 1/6] feat: add super verbose, show unknown income request header and body --- README.md | 2 ++ bin/http-server | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/README.md b/README.md index 108618d3..76f4d914 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,8 @@ Using `npx` you can run the script without installing it first: `-r` or `--robots` Provide a /robots.txt (whose content defaults to `User-agent: *\nDisallow: /`) +`-V` or `--superverbose` superverbose mode ,can inspect a unknown request header and body. such as an web hook request, but no detail api document. + `-h` or `--help` Print this list and exit. ## Magic Files diff --git a/bin/http-server b/bin/http-server index 0a1f2e94..a1e06746 100755 --- a/bin/http-server +++ b/bin/http-server @@ -40,6 +40,7 @@ if (argv.h || argv.help) { '', ' -r --robots Respond to /robots.txt [User-agent: *\\nDisallow: /]', ' --no-dotfiles Do not show dotfiles', + ' -V --superverbose super verbose mode', ' -h --help Print this list and exit.' ].join('\n')); process.exit(); @@ -50,6 +51,7 @@ var port = argv.p || argv.port || parseInt(process.env.PORT, 10), ssl = !!argv.S || !!argv.ssl, proxy = argv.P || argv.proxy, utc = argv.U || argv.utc, + superverbose = argv.V || argv.superverbose, logger; if (!argv.s && !argv.silent) { @@ -80,6 +82,54 @@ else if (colors) { request: function () {} }; } +if (superverbose) { + logger = { + info: console.log, + request: function (req, res, error) { + var date = utc ? new Date().toUTCString() : new Date(); + if (error) { + logger.info( + '[%s] "%s %s" Error (%s): "%s"', + date, colors.red(req.method), colors.red(req.url), + colors.red(error.status.toString()), colors.red(error.message) + ); + logger.info('---------------header--------------'); + var request = req.request; + var rawHeaders = request.rawHeaders; + if (rawHeaders && rawHeaders.length > 0) { + var headerStr = ''; + for (var i = 0; i < rawHeaders.length;i++) { + headerStr += rawHeaders[i]; + if (i % 2 === 0) { + headerStr += ': '; + } + else { + headerStr += '\n'; + } + } + logger.info(colors.cyan(headerStr)); + } + if (req.readable) { + var body = []; + req.request.on('data', function (chunk) { + body.push(chunk); + }).on('end', function () { + body = Buffer.concat(body).toString(); + logger.info('-------------request body----------'); + logger.info(body) ; + }); + } + } + else { + logger.info( + '[%s] "%s %s" "%s"', + date, colors.cyan(req.method), colors.cyan(req.url), + req.headers['user-agent'] + ); + } + } + }; +} if (!port) { portfinder.basePort = 8080; From 4d8b21df7c84b42352685da376d3f9de3d185263 Mon Sep 17 00:00:00 2001 From: foxundermoon Date: Tue, 24 Dec 2019 16:45:36 +0800 Subject: [PATCH 2/6] Apply suggestions from code review Co-Authored-By: Jade Michael Thornton --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76f4d914..1ec4cd47 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Using `npx` you can run the script without installing it first: `-r` or `--robots` Provide a /robots.txt (whose content defaults to `User-agent: *\nDisallow: /`) -`-V` or `--superverbose` superverbose mode ,can inspect a unknown request header and body. such as an web hook request, but no detail api document. +`-V` or `--superverbose` superverbose mode ,can display a unknown request header and body. such as an web hook request, but no detail api document. `-h` or `--help` Print this list and exit. From ccf67a924c5afc953c89597c68eeafe89c977354 Mon Sep 17 00:00:00 2001 From: foxundermoon Date: Tue, 24 Dec 2019 16:45:56 +0800 Subject: [PATCH 3/6] Apply suggestions from code review Co-Authored-By: Jade Michael Thornton --- bin/http-server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/http-server b/bin/http-server index a1e06746..eb26ba4a 100755 --- a/bin/http-server +++ b/bin/http-server @@ -93,7 +93,7 @@ if (superverbose) { date, colors.red(req.method), colors.red(req.url), colors.red(error.status.toString()), colors.red(error.message) ); - logger.info('---------------header--------------'); + logger.info('---------------headers-------------'); var request = req.request; var rawHeaders = request.rawHeaders; if (rawHeaders && rawHeaders.length > 0) { From 2f51f2c7a5f686b4fc88090627bf3ad1a69ed734 Mon Sep 17 00:00:00 2001 From: foxundermoon Date: Tue, 24 Dec 2019 16:46:15 +0800 Subject: [PATCH 4/6] Apply suggestions from code review Co-Authored-By: Jade Michael Thornton --- bin/http-server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/http-server b/bin/http-server index eb26ba4a..e4aa4bc9 100755 --- a/bin/http-server +++ b/bin/http-server @@ -96,7 +96,7 @@ if (superverbose) { logger.info('---------------headers-------------'); var request = req.request; var rawHeaders = request.rawHeaders; - if (rawHeaders && rawHeaders.length > 0) { + if (rawHeaders && rawHeaders.length) { var headerStr = ''; for (var i = 0; i < rawHeaders.length;i++) { headerStr += rawHeaders[i]; From a84c1649219a674d75ea4d88e64e438b1d8ad542 Mon Sep 17 00:00:00 2001 From: fox Date: Tue, 24 Dec 2019 18:32:33 +0800 Subject: [PATCH 5/6] fix format --- bin/http-server | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bin/http-server b/bin/http-server index 7b65c11f..111b6593 100755 --- a/bin/http-server +++ b/bin/http-server @@ -104,15 +104,15 @@ else if (colors) { }; } if (superverbose) { - if(argv.s || argv.silent){ - console.log( colors.red('superverbose and silent mode can not used together! pick one of two')); + if (argv.s || argv.silent) { + console.log(colors.red('superverbose and silent mode can not used together! pick one of two')); process.exit(1); } logger = { info: console.log, request: function (req, res, error) { var date = utc ? new Date().toUTCString() : new Date(); - if(error) { + if (error) { logger.info( '[%s] "%s %s" Error (%s): "%s"', date, colors.red(req.method), colors.red(req.url), @@ -123,16 +123,16 @@ if (superverbose) { var request = req.request; var rawHeaders = request.rawHeaders; if (rawHeaders && rawHeaders.length > 0) { - var headerStr = rawHeaders.reduce(function(u,v,i){ - if(i === 1 ){ + var headerStr = rawHeaders.reduce(function (u, v, i) { + if (i === 1) { return u + ': ' + v + '\n'; } - var append = i % 2 === 0 ? ': ': '\n' ; - return u+v + append ; + var append = i % 2 === 0 ? ': ' : '\n' ; + return u + v + append ; }); logger.info(colors.cyan(headerStr)); } - if(req.readable) { + if (req.readable) { var body = []; req.request.on('data', function (chunk) { body.push(chunk); From db3e5760ae16176156d5e5ff2a598f8df8194912 Mon Sep 17 00:00:00 2001 From: fox Date: Tue, 24 Dec 2019 18:42:42 +0800 Subject: [PATCH 6/6] add suggested --- bin/http-server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/http-server b/bin/http-server index 111b6593..ba884da5 100755 --- a/bin/http-server +++ b/bin/http-server @@ -122,7 +122,7 @@ if (superverbose) { logger.info('---------------headers-------------'); var request = req.request; var rawHeaders = request.rawHeaders; - if (rawHeaders && rawHeaders.length > 0) { + if (rawHeaders && rawHeaders.length) { var headerStr = rawHeaders.reduce(function (u, v, i) { if (i === 1) { return u + ': ' + v + '\n';