zhou12189108 commited on
Commit
06aa7f8
·
verified ·
1 Parent(s): 9df85ba

Upload 3 files

Browse files
Files changed (3) hide show
  1. api.js +9 -1
  2. logger.js +30 -0
  3. package.json +2 -1
api.js CHANGED
@@ -3,6 +3,7 @@ const axios = require('axios');
3
  const jwt = require('jsonwebtoken');
4
  const vm = require('vm');
5
  const { JSDOM } = require('jsdom');
 
6
 
7
  const app = express();
8
  app.use(express.json());
@@ -27,13 +28,20 @@ async function hsw(req, host) {
27
 
28
 
29
  app.post('/hsw', async (req, res) => {
 
 
30
  const data = req.body;
31
  const result = await hsw(data.req, data.host);
32
  res.send(result);
 
33
  });
34
 
35
  app.get('/ping', (req, res) => {
36
- res.send("pong");
 
 
 
 
37
  });
38
 
39
  app.listen(5000, '0.0.0.0', () => {
 
3
  const jwt = require('jsonwebtoken');
4
  const vm = require('vm');
5
  const { JSDOM } = require('jsdom');
6
+ const logger = require('./logger');
7
 
8
  const app = express();
9
  app.use(express.json());
 
28
 
29
 
30
  app.post('/hsw', async (req, res) => {
31
+ const forwarded = req.headers['x-forwarded-for'];
32
+ const ip = forwarded ? forwarded.split(/, /)[0] : req.connection.remoteAddress;
33
  const data = req.body;
34
  const result = await hsw(data.req, data.host);
35
  res.send(result);
36
+ logger.info('', { ip: ip, path: '/hsw', statusCode: res.statusCode });
37
  });
38
 
39
  app.get('/ping', (req, res) => {
40
+ const forwarded = req.headers['x-forwarded-for'];
41
+ const ip = forwarded ? forwarded.split(/, /)[0] : req.connection.remoteAddress;
42
+ res.json({ ip: ip,status:200 });
43
+ logger.info('', { ip: ip, path: '/ping', statusCode: res.statusCode });
44
+
45
  });
46
 
47
  app.listen(5000, '0.0.0.0', () => {
logger.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const winston = require('winston');
2
+
3
+ const myFormat = winston.format.printf(({ level, message, timestamp, meta }) => {
4
+ return `[${level.toUpperCase()}] ${timestamp} ${meta.ip} ${meta.path} ${meta.statusCode}`;
5
+ });
6
+
7
+ const logger = winston.createLogger({
8
+ level: 'info',
9
+ format: winston.format.combine(
10
+ winston.format.timestamp(),
11
+ myFormat
12
+ ),
13
+ defaultMeta: { service: 'user-service' },
14
+ transports: [
15
+ new winston.transports.File({ filename: 'error.log', level: 'error' }),
16
+ new winston.transports.File({ filename: 'combined.log' }),
17
+ ],
18
+ });
19
+
20
+ if (process.env.NODE_ENV !== 'production') {
21
+ logger.add(new winston.transports.Console({
22
+ format: winston.format.combine(
23
+ winston.format.colorize(),
24
+ winston.format.timestamp(),
25
+ myFormat
26
+ ),
27
+ }));
28
+ }
29
+
30
+ module.exports = logger;
package.json CHANGED
@@ -14,7 +14,8 @@
14
  "express": "",
15
  "jsonwebtoken": "",
16
  "jsdom": "",
17
- "vm": ""
 
18
  },
19
  "private": true
20
  }
 
14
  "express": "",
15
  "jsonwebtoken": "",
16
  "jsdom": "",
17
+ "vm": "",
18
+ "winston": ""
19
  },
20
  "private": true
21
  }