@things-factory/shell 6.2.52 → 6.2.65

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.
@@ -15,7 +15,7 @@ async function domainMiddleware(context, next) {
15
15
  domain = await (0, utils_1.getDomainFromURL)(context);
16
16
  }
17
17
  if (domain) {
18
- const ip = context.ip || request_ip_1.default.getClientIp(context.req);
18
+ const ip = request_ip_1.default.getClientIp(context.req);
19
19
  const { whitelist = [], blacklist = [], protectedlist = [], privileges = [] } = domain.iplist || {};
20
20
  if (Array.isArray(whitelist) && whitelist.length > 0) {
21
21
  /* whitelist 우선 */
@@ -1 +1 @@
1
- {"version":3,"file":"domain-middleware.js","sourceRoot":"","sources":["../../server/middlewares/domain-middleware.ts"],"names":[],"mappings":";;;;AAAA,oEAAkC;AAClC,oCAA2C;AAEpC,KAAK,UAAU,gBAAgB,CAAC,OAAY,EAAE,IAAS;IAC5D,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC9B,IAAI,CAAC,MAAM,EAAE;QACX;;;;WAIG;QACH,MAAM,GAAG,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAA;KACzC;IAED,IAAI,MAAM,EAAE;QACV,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,oBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3D,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAEnG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACpD,kBAAkB;YAClB,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;aACP;SACF;aAAM;YACL,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,WAAW,EAAE;gBACf,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;aACP;SACF;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAA;YAE9B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAA;aAChD;SACF;KACF;IAED,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAE7B,OAAO,IAAI,EAAE,CAAA;AACf,CAAC;AAxDD,4CAwDC","sourcesContent":["import requestIp from 'request-ip'\nimport { getDomainFromURL } from '../utils'\n\nexport async function domainMiddleware(context: any, next: any) {\n var { domain } = context.state\n if (!domain) {\n /*\n * The domainType should be checked only when signin and checkin.\n * For purposes such as API calls, the target domainType may be different from the system domainType.\n * So, we don't check domainType here.\n */\n domain = await getDomainFromURL(context)\n }\n\n if (domain) {\n const ip = context.ip || requestIp.getClientIp(context.req)\n const { whitelist = [], blacklist = [], protectedlist = [], privileges = [] } = domain.iplist || {}\n\n if (Array.isArray(whitelist) && whitelist.length > 0) {\n /* whitelist 우선 */\n const whitelisted =\n Array.isArray(whitelist) &&\n whitelist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (!whitelisted) {\n context.status = 403\n return\n }\n } else {\n const blacklisted =\n Array.isArray(blacklist) &&\n blacklist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (blacklisted) {\n context.status = 403\n return\n }\n }\n\n if (Array.isArray(protectedlist) && protectedlist.length > 0) {\n const safe = protectedlist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n context.state.unsafeIP = !safe\n\n if (!safe) {\n context.state.prohibitedPrivileges = privileges\n }\n }\n }\n\n context.state.domain = domain\n\n return next()\n}\n"]}
1
+ {"version":3,"file":"domain-middleware.js","sourceRoot":"","sources":["../../server/middlewares/domain-middleware.ts"],"names":[],"mappings":";;;;AAAA,oEAAkC;AAClC,oCAA2C;AAEpC,KAAK,UAAU,gBAAgB,CAAC,OAAY,EAAE,IAAS;IAC5D,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC9B,IAAI,CAAC,MAAM,EAAE;QACX;;;;WAIG;QACH,MAAM,GAAG,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAA;KACzC;IAED,IAAI,MAAM,EAAE;QACV,MAAM,EAAE,GAAG,oBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAEnG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACpD,kBAAkB;YAClB,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;aACP;SACF;aAAM;YACL,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,WAAW,EAAE;gBACf,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;aACP;SACF;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAA;YAE9B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAA;aAChD;SACF;KACF;IAED,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAE7B,OAAO,IAAI,EAAE,CAAA;AACf,CAAC;AAxDD,4CAwDC","sourcesContent":["import requestIp from 'request-ip'\nimport { getDomainFromURL } from '../utils'\n\nexport async function domainMiddleware(context: any, next: any) {\n var { domain } = context.state\n if (!domain) {\n /*\n * The domainType should be checked only when signin and checkin.\n * For purposes such as API calls, the target domainType may be different from the system domainType.\n * So, we don't check domainType here.\n */\n domain = await getDomainFromURL(context)\n }\n\n if (domain) {\n const ip = requestIp.getClientIp(context.req)\n const { whitelist = [], blacklist = [], protectedlist = [], privileges = [] } = domain.iplist || {}\n\n if (Array.isArray(whitelist) && whitelist.length > 0) {\n /* whitelist 우선 */\n const whitelisted =\n Array.isArray(whitelist) &&\n whitelist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (!whitelisted) {\n context.status = 403\n return\n }\n } else {\n const blacklisted =\n Array.isArray(blacklist) &&\n blacklist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (blacklisted) {\n context.status = 403\n return\n }\n }\n\n if (Array.isArray(protectedlist) && protectedlist.length > 0) {\n const safe = protectedlist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n context.state.unsafeIP = !safe\n\n if (!safe) {\n context.state.prohibitedPrivileges = privileges\n }\n }\n }\n\n context.state.domain = domain\n\n return next()\n}\n"]}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.globalPrivateRouter = exports.globalPublicRouter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
+ const request_ip_1 = tslib_1.__importDefault(require("request-ip"));
6
7
  const operato_license_checker_1 = require("@things-factory/operato-license-checker");
7
8
  const domain_middleware_1 = require("../middlewares/domain-middleware");
8
9
  var crawler = require('npm-license-crawler');
@@ -47,15 +48,17 @@ exports.globalPublicRouter.get('/opensource-licenses', (context, next) => {
47
48
  });
48
49
  });
49
50
  exports.globalPublicRouter.get('/request-info', context => {
50
- const clientIP = context.headers['x-forwarded-for'] || context.ip;
51
- const protocol = context.headers['x-forwarded-proto'] || context.protocol;
52
- const host = context.headers['x-forwarded-host'] || context.host;
53
- const port = context.headers['x-forwarded-port'] || context.host.split(':')[1];
54
51
  context.body = `
55
- Client IP: ${clientIP}
56
- Protocol: ${protocol}
57
- Host: ${host}
58
- Port: ${port}
52
+ Client info. from "requestIp": ${request_ip_1.default.getClientIp(context.req)}
53
+
54
+ Client info. from "context.ip": ${context.ip}
55
+ Client info. from "context.protocol": ${context.protocol}
56
+ Client info. from "context.host": ${context.host}
57
+
58
+ Client info. from "x-forwarded-for": ${context.headers['x-forwarded-for']}
59
+ Client info. from "x-forwarded-proto": ${context.headers['x-forwarded-proto']}
60
+ Client info. from "x-forwarded-host": ${context.headers['x-forwarded-host']}
61
+ Client info. from "x-forwarded-port": ${context.headers['x-forwarded-port']}
59
62
  `;
60
63
  });
61
64
  /* Paths starting with /public are assumed to use the koa-view renderer. */
@@ -1 +1 @@
1
- {"version":3,"file":"global-router.js","sourceRoot":"","sources":["../../server/routers/global-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\n\nimport { getLicenseInfo } from '@things-factory/operato-license-checker'\nimport { domainMiddleware } from '../middlewares/domain-middleware'\n\nvar crawler = require('npm-license-crawler')\n\nexport const globalPublicRouter = new Router()\nexport const globalPrivateRouter = new Router()\n\n/* even though global private router, catch domain for information */\nglobalPrivateRouter.use(domainMiddleware)\n\nif (process.env.NODE_ENV != 'production') {\n globalPublicRouter.get('/graphql', async (context, next) => {\n const initialEndpoint = context.request.href\n\n await context.render('graphql', { initialEndpoint })\n })\n}\n\nglobalPublicRouter.get('/dependencies', async (context, next) => {\n const { dependencyGraph } = require('@things-factory/env')\n\n await context.render('dependencies-view-graphviz', { model: dependencyGraph })\n})\n\nglobalPublicRouter.get('/license-info', (context, next) => {\n context.type = 'application/json'\n context.body = getLicenseInfo()\n})\n\nglobalPublicRouter.get('/opensource-licenses', (context, next) => {\n return new Promise(function (resolve, reject) {\n var options = {\n start: ['.'],\n exclude: [],\n noColor: true,\n production: true,\n unknown: false\n }\n\n crawler.dumpLicenses(options, function (error, res) {\n if (error) {\n console.error('get:/opensource-licenses', error)\n reject(error)\n } else {\n context.type = 'application/json'\n context.body = res\n resolve(res)\n }\n })\n })\n})\n\nglobalPublicRouter.get('/request-info', context => {\n const clientIP = context.headers['x-forwarded-for'] || context.ip\n const protocol = context.headers['x-forwarded-proto'] || context.protocol\n const host = context.headers['x-forwarded-host'] || context.host\n const port = context.headers['x-forwarded-port'] || context.host.split(':')[1]\n\n context.body = `\n Client IP: ${clientIP}\n Protocol: ${protocol}\n Host: ${host}\n Port: ${port}\n `\n})\n\n/* Paths starting with /public are assumed to use the koa-view renderer. */\nglobalPublicRouter.get('/public/(.[^.]*)', async (context, next) => {\n const { path } = context\n await context.render(path.substr(1))\n})\n"]}
1
+ {"version":3,"file":"global-router.js","sourceRoot":"","sources":["../../server/routers/global-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport requestIp from 'request-ip'\n\nimport { getLicenseInfo } from '@things-factory/operato-license-checker'\nimport { domainMiddleware } from '../middlewares/domain-middleware'\n\nvar crawler = require('npm-license-crawler')\n\nexport const globalPublicRouter = new Router()\nexport const globalPrivateRouter = new Router()\n\n/* even though global private router, catch domain for information */\nglobalPrivateRouter.use(domainMiddleware)\n\nif (process.env.NODE_ENV != 'production') {\n globalPublicRouter.get('/graphql', async (context, next) => {\n const initialEndpoint = context.request.href\n\n await context.render('graphql', { initialEndpoint })\n })\n}\n\nglobalPublicRouter.get('/dependencies', async (context, next) => {\n const { dependencyGraph } = require('@things-factory/env')\n\n await context.render('dependencies-view-graphviz', { model: dependencyGraph })\n})\n\nglobalPublicRouter.get('/license-info', (context, next) => {\n context.type = 'application/json'\n context.body = getLicenseInfo()\n})\n\nglobalPublicRouter.get('/opensource-licenses', (context, next) => {\n return new Promise(function (resolve, reject) {\n var options = {\n start: ['.'],\n exclude: [],\n noColor: true,\n production: true,\n unknown: false\n }\n\n crawler.dumpLicenses(options, function (error, res) {\n if (error) {\n console.error('get:/opensource-licenses', error)\n reject(error)\n } else {\n context.type = 'application/json'\n context.body = res\n resolve(res)\n }\n })\n })\n})\n\nglobalPublicRouter.get('/request-info', context => {\n context.body = `\n Client info. from \"requestIp\": ${requestIp.getClientIp(context.req)}\n\n Client info. from \"context.ip\": ${context.ip}\n Client info. from \"context.protocol\": ${context.protocol}\n Client info. from \"context.host\": ${context.host}\n\n Client info. from \"x-forwarded-for\": ${context.headers['x-forwarded-for']}\n Client info. from \"x-forwarded-proto\": ${context.headers['x-forwarded-proto']}\n Client info. from \"x-forwarded-host\": ${context.headers['x-forwarded-host']}\n Client info. from \"x-forwarded-port\": ${context.headers['x-forwarded-port']}\n `\n})\n\n/* Paths starting with /public are assumed to use the koa-view renderer. */\nglobalPublicRouter.get('/public/(.[^.]*)', async (context, next) => {\n const { path } = context\n await context.render(path.substr(1))\n})\n"]}