soajs.controller 4.0.42 → 4.0.46

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.
package/.travis.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  language: node_js
2
2
 
3
- node_js: 12
3
+ node_js: 16
4
4
 
5
5
  jobs:
6
6
  include:
@@ -61,4 +61,4 @@ jobs:
61
61
  all_branches: true
62
62
  provider: releases
63
63
  api_key: ${GIT_TOKEN}
64
- skip_cleanup: true
64
+ skip_cleanup: true
package/lib/parseURL.js CHANGED
@@ -12,46 +12,46 @@ const url = require('url');
12
12
 
13
13
 
14
14
  module.exports = (uri, parsedUrl) => {
15
- let serviceInfo = parsedUrl.pathname.split('/');
16
- let service_nv = serviceInfo[1];
17
- let service_n = service_nv;
18
- let service_v = null;
19
-
20
- //check if there is /v1 or v1.1 in the url
21
- let matches = uri.match(/\/v[0-9]+(.[0-9]+)?\//);
22
- if (matches && matches.length > 0) {
23
- let hit = matches[0].replace(/\//g, '');
24
- if (serviceInfo[2] === hit && serviceInfo.length > 3) {
25
- service_v = hit.replace("v", '');
26
- serviceInfo.splice(2, 1);
27
- uri = uri.replace(matches[0], "/");
28
- parsedUrl = url.parse(uri, true);
29
- }
30
- }
31
-
32
- //check if there is service:1 or :1.1 in the url
33
- if (!service_v) {
34
- let index = service_nv.indexOf(":");
35
- if (index !== -1) {
36
- matches = service_nv.match(/:[0-9]+(.[0-9]+)?/);
37
- if (matches && matches.length > 0) {
38
- service_v = service_nv.substr(index + 1);
39
- }
40
- service_n = service_nv.substr(0, index);
41
- }
42
- }
43
- let versionRequested = false;
44
- if (service_v !== null){
45
- versionRequested = true;
46
- }
47
- return ({
48
- "url": uri,
49
- "parsedUrl": parsedUrl,
50
- "serviceInfo": serviceInfo,
51
- "service_n": service_n,
52
- "service_nv": service_nv,
53
- "service_v": service_v,
54
- "versionRequested": versionRequested,
55
- "name": service_n
56
- });
57
- };
15
+ let serviceInfo = parsedUrl.pathname.split('/');
16
+ let service_nv = serviceInfo[1];
17
+ let service_n = service_nv;
18
+ let service_v = null;
19
+
20
+ //check if there is /v1 or v1.1 in the url
21
+ let matches = uri.match(/\/v[0-9]+(.[0-9]+)?\//);
22
+ if (matches && matches.length > 0) {
23
+ let hit = matches[0].replace(/\//g, '');
24
+ if (serviceInfo[2] === hit && serviceInfo.length > 3) {
25
+ service_v = hit.replace("v", '');
26
+ serviceInfo.splice(2, 1);
27
+ uri = uri.replace(matches[0], "/");
28
+ parsedUrl = url.parse(uri, true);
29
+ }
30
+ }
31
+
32
+ //check if there is service:1 or :1.1 in the url
33
+ if (!service_v) {
34
+ let index = service_nv.indexOf(":");
35
+ if (index !== -1) {
36
+ matches = service_nv.match(/:[0-9]+(.[0-9]+)?/);
37
+ if (matches && matches.length > 0) {
38
+ service_v = service_nv.substr(index + 1);
39
+ }
40
+ service_n = service_nv.substr(0, index);
41
+ }
42
+ }
43
+ let versionRequested = false;
44
+ if (service_v !== null) {
45
+ versionRequested = true;
46
+ }
47
+ return ({
48
+ "url": uri,
49
+ "parsedUrl": parsedUrl,
50
+ "serviceInfo": serviceInfo,
51
+ "service_n": service_n,
52
+ "service_nv": service_nv,
53
+ "service_v": service_v,
54
+ "versionRequested": versionRequested,
55
+ "name": service_n
56
+ });
57
+ };
@@ -88,4 +88,4 @@ let driver = {
88
88
  }
89
89
  };
90
90
 
91
- module.exports = driver;
91
+ module.exports = driver;
@@ -827,4 +827,4 @@ let registryModule = {
827
827
  }
828
828
  };
829
829
 
830
- module.exports = registryModule;
830
+ module.exports = registryModule;
@@ -61,8 +61,10 @@ module.exports = (configuration) => {
61
61
  req.soajs.controller.redirectedRequest = request(requestConfig);
62
62
  req.soajs.controller.redirectedRequest.on('error', function (error) {
63
63
  req.soajs.log.error(error.message);
64
- req.soajs.controller.redirectedRequest.destroy();
65
- req.soajs.controller.redirectedRequest = null;
64
+ if (req.soajs.controller.redirectedRequest) {
65
+ req.soajs.controller.redirectedRequest.destroy();
66
+ req.soajs.controller.redirectedRequest = null;
67
+ }
66
68
  return req.soajs.controllerResponse(core.error.getError(135));
67
69
  });
68
70
 
@@ -25,7 +25,7 @@ module.exports = (configuration) => {
25
25
  */
26
26
  return (req, res) => {
27
27
  preRedirect(req, res, core, function (obj) {
28
- req.pause();
28
+ // req.pause();
29
29
 
30
30
  let requestOptions = url.parse(obj.uri);
31
31
  requestOptions.headers = req.headers;
@@ -46,17 +46,19 @@ module.exports = (configuration) => {
46
46
  serverResponse.resume();
47
47
  });
48
48
  req.soajs.controller.redirectedRequest.on('error', function (err) {
49
- req.soajs.log.error(err.message);
50
- req.soajs.controller.redirectedRequest.destroy();
51
- req.soajs.controller.redirectedRequest = null;
49
+ req.soajs.log.error(err.code, err.message);
50
+ if (req.soajs.controller.redirectedRequest) {
51
+ req.soajs.controller.redirectedRequest.destroy();
52
+ req.soajs.controller.redirectedRequest = null;
53
+ }
52
54
  if (!req.soajs.controller.monitorEndingReq) {
53
55
  return req.soajs.controllerResponse(core.error.getError(135));
54
56
  }
55
57
  });
56
58
  req.pipe(req.soajs.controller.redirectedRequest, {end: true});
57
- req.resume();
59
+ // req.resume();
58
60
  } catch (e) {
59
- req.soajs.log.error(e.message + " @catch.");
61
+ req.soajs.log.error(e.message + " @catch");
60
62
  if (req.soajs.controller.redirectedRequest) {
61
63
  req.soajs.controller.redirectedRequest.destroy();
62
64
  req.soajs.controller.redirectedRequest = null;
package/mw/mt/utils.js CHANGED
@@ -756,4 +756,4 @@ let utils = {
756
756
  }
757
757
  };
758
758
 
759
- module.exports = utils;
759
+ module.exports = utils;
package/mw/url/index.js CHANGED
@@ -18,7 +18,9 @@ let libParseURL = require('../../lib/parseURL');
18
18
  *
19
19
  * @returns {Function}
20
20
  */
21
- module.exports = () => {
21
+ module.exports = (configuration) => {
22
+ let core = configuration.core;
23
+
22
24
  return (req, res, next) => {
23
25
  if (!req.soajs) {
24
26
  throw new TypeError('soajs mw is not started');
@@ -37,8 +39,10 @@ module.exports = () => {
37
39
  req.query = {};
38
40
  }
39
41
  req.soajs.controller.serviceParams = libParseURL(req.url, parsedUrl);
40
-
41
- let key = req.headers.key || parsedUrl.query.key;
42
+ if (!req.soajs.controller.serviceParams.service_n || req.soajs.controller.serviceParams.service_n === '') {
43
+ return req.soajs.controllerResponse(core.error.getError(136));
44
+ }
45
+ let key = req.headers.key || req.query.key;
42
46
  if (!req.headers.key) {
43
47
  req.headers.key = key;
44
48
  }
@@ -56,4 +60,4 @@ module.exports = () => {
56
60
  }
57
61
  return next();
58
62
  };
59
- };
63
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "soajs.controller",
3
- "description": "soajs API gateway",
4
- "version": "4.0.42",
3
+ "description": "soajs multi tenant API gateway",
4
+ "version": "4.0.46",
5
5
  "author": {
6
6
  "name": "soajs team",
7
7
  "email": "team@soajs.org"
@@ -29,10 +29,10 @@
29
29
  "oauth2-server": "2.4.1",
30
30
  "path-to-regexp": "6.2.0",
31
31
  "request": "2.88.2",
32
- "useragent": "2.3.0",
33
32
  "soajs.core.libs": "1.2.0",
34
- "soajs.core.modules": "5.0.16",
35
- "soajs.urac.driver": "3.0.18"
33
+ "soajs.core.modules": "5.0.19",
34
+ "soajs.urac.driver": "3.0.20",
35
+ "useragent": "2.3.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "express": "4.17.1",
@@ -127,7 +127,7 @@ Controller.prototype.init = function (callback) {
127
127
 
128
128
  app.use(enhancer_mw());
129
129
 
130
- app.use(url_mw());
130
+ app.use(url_mw({"core": core}));
131
131
 
132
132
  app.use(key_mw({"provision": provision, "regEnvironment": regEnvironment}));
133
133
 
@@ -181,8 +181,8 @@ Controller.prototype.init = function (callback) {
181
181
  req.on("close", () => {
182
182
  if (req.soajs.controller.redirectedRequest) {
183
183
  req.soajs.log.info("Request closed:", req.url);
184
- req.soajs.controller.redirectedRequest.destroy();
185
- req.soajs.controller.redirectedRequest = null;
184
+ // req.soajs.controller.redirectedRequest.destroy();
185
+ // req.soajs.controller.redirectedRequest = null;
186
186
  }
187
187
  });
188
188
  });
@@ -327,4 +327,4 @@ Controller.prototype.stop = function (registry, log, service, server, serverMain
327
327
  });
328
328
  };
329
329
 
330
- module.exports = Controller;
330
+ module.exports = Controller;
@@ -276,4 +276,4 @@ let prod = {
276
276
  ]
277
277
  };
278
278
 
279
- module.exports = prod;
279
+ module.exports = prod;
@@ -27,9 +27,9 @@ let resource = {
27
27
  batchSize: 1000
28
28
  },
29
29
  URLParam: {
30
- bufferMaxEntries: 0
30
+ "useUnifiedTopology": true
31
31
  },
32
32
  timeConnected: 1552747598093.0
33
33
  }
34
34
  };
35
- module.exports = resource;
35
+ module.exports = resource;
@@ -336,4 +336,4 @@ describe("Integration for Usecase 1", function () {
336
336
  done();
337
337
  });
338
338
  });
339
- });
339
+ });
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ const http = require('http');
4
+ const options = new URL('http://www.google.com');
5
+ console.log(options)
6
+ let redirectedRequest = http.request(options, function (serverResponse) {
7
+ console.log(serverResponse.headers);
8
+ // serverResponse.pause();
9
+ serverResponse.headers['access-control-allow-origin'] = '*';
10
+ serverResponse.on('data', (chunk) => {
11
+ // console.log(`BODY: ${chunk}`);
12
+ });
13
+ serverResponse.on('end', () => {
14
+ console.log('No more data in response.');
15
+ process.exit(0);
16
+ });
17
+ // serverResponse.resume();
18
+ });
19
+ redirectedRequest.on('error', function (err) {
20
+ console.log('error');
21
+ });
22
+ redirectedRequest.on('socket', function (err) {
23
+ console.log('socket');
24
+ });
25
+ redirectedRequest.on('close', function (err) {
26
+ console.log('close');
27
+ });
28
+ redirectedRequest.end();
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ let oauthserver = require('../oauth-service-mock.js');
4
+
5
+ let oauthServers = null;
6
+
7
+ oauthserver.startServer({s: {port: 4004}, m: {port: 5004}, name: "OAUTH"}, function (servers) {
8
+ oauthServers = servers;
9
+ });
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ const helper = require("../../../helper.js");
4
+ const requester = require('../../requester');
5
+ let localConfig = helper.requireModule('./config.js');
6
+
7
+ let extKey = "3d90163cf9d6b3076ad26aa5ed58556348069258e5c6c941ee0f18448b570ad1c5c790e2d2a1989680c55f4904e2005ff5f8e71606e4aa641e67882f4210ebbc5460ff305dcb36e6ec2a2299cf0448ef60b9e38f41950ec251c1cf41f05f3ce9";
8
+ let options = {
9
+ uri: 'http://127.0.0.1:' + localConfig.servicePort + '/oauth/passport/login',
10
+ headers: {
11
+ 'Content-Type': 'application/json',
12
+ 'Connection': 'keep-alive',
13
+ key: extKey
14
+ },
15
+ "qs": {
16
+ access_token: "cfb209a91b23896820f510aadbf1f4284b512123"
17
+ }
18
+ };
19
+ requester('get', options, (error, body) => {
20
+ console.log(body.errors)
21
+ });
@@ -4,53 +4,53 @@ const sApp = express();
4
4
  const mApp = express();
5
5
 
6
6
  function startServer(serverConfig, callback) {
7
- let mReply = {
8
- 'result': true,
9
- 'ts': Date.now(),
10
- 'service': {
11
- 'service': serverConfig.name,
12
- 'type': 'rest',
13
- 'route': "/heartbeat"
14
- }
15
- };
16
- let sReply = {
17
- 'result': true,
18
- 'data': {
19
- 'firstname': "antoine",
20
- 'lastname': "hage"
21
- }
22
- };
23
-
24
-
25
- sApp.get('/passport/login', (req, res) => res.json(sReply));
26
-
27
- mApp.get('/heartbeat', (req, res) => res.json(mReply));
28
-
29
- let sAppServer = sApp.listen(serverConfig.s.port, () => console.log(`${serverConfig.name} service mock listening on port ${serverConfig.s.port}!`));
30
- let mAppServer = mApp.listen(serverConfig.m.port, () => console.log(`${serverConfig.name} service mock listening on port ${serverConfig.m.port}!`));
31
-
32
- return callback(
33
- {
34
- "sAppServer": sAppServer,
35
- "mAppServer": mAppServer,
36
- "name": serverConfig.name
37
- }
38
- )
7
+ let mReply = {
8
+ 'result': true,
9
+ 'ts': Date.now(),
10
+ 'service': {
11
+ 'service': serverConfig.name,
12
+ 'type': 'rest',
13
+ 'route': "/heartbeat"
14
+ }
15
+ };
16
+ let sReply = {
17
+ 'result': true,
18
+ 'data': {
19
+ 'firstname': "antoine",
20
+ 'lastname': "hage"
21
+ }
22
+ };
23
+
24
+
25
+ sApp.get('/passport/login', (req, res) => res.json(sReply));
26
+
27
+ mApp.get('/heartbeat', (req, res) => res.json(mReply));
28
+
29
+ let sAppServer = sApp.listen(serverConfig.s.port, () => console.log(`${serverConfig.name} service mock listening on port ${serverConfig.s.port}!`));
30
+ let mAppServer = mApp.listen(serverConfig.m.port, () => console.log(`${serverConfig.name} service mock listening on port ${serverConfig.m.port}!`));
31
+
32
+ return callback(
33
+ {
34
+ "sAppServer": sAppServer,
35
+ "mAppServer": mAppServer,
36
+ "name": serverConfig.name
37
+ }
38
+ )
39
39
  }
40
40
 
41
41
  function killServer(config) {
42
- console.log("killing server ....");
43
-
44
- config.mAppServer.close((err) => {
45
- console.log("...sAppServer: " + config.name);
46
- });
47
-
48
- config.sAppServer.close((err) => {
49
- console.log("...mAppServer: " + config.name);
50
- });
42
+ console.log("killing server ....");
43
+
44
+ config.mAppServer.close((err) => {
45
+ console.log("...sAppServer: " + config.name);
46
+ });
47
+
48
+ config.sAppServer.close((err) => {
49
+ console.log("...mAppServer: " + config.name);
50
+ });
51
51
  }
52
52
 
53
53
  module.exports = {
54
- startServer: startServer,
55
- killServer: killServer
56
- };
54
+ startServer: startServer,
55
+ killServer: killServer
56
+ };
@@ -4,7 +4,7 @@ let request = require("request");
4
4
 
5
5
  function requester(method, params, cb) {
6
6
  let requestOptions = {
7
- timeout: 30000,
7
+ // timeout: 30000,
8
8
  'uri': params.uri,
9
9
  'json': params.body || true
10
10
  };
@@ -55,4 +55,4 @@ function requester(method, params, cb) {
55
55
  }
56
56
  }
57
57
 
58
- module.exports = requester;
58
+ module.exports = requester;