@opengis/fastify-table 2.5.22 → 2.5.24
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/dist/server/plugins/pg/funcs/autoIndex.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/autoIndex.js +8 -3
- package/dist/server/plugins/table/funcs/getFilterSQL/index.js +1 -1
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/formatValue.d.ts +2 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/formatValue.d.ts.map +1 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/formatValue.js +211 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterList.d.ts +8 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterList.d.ts.map +1 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterList.js +90 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterQuery.d.ts +17 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterQuery.d.ts.map +1 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterQuery.js +90 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getRangeQuery.d.ts +17 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getRangeQuery.d.ts.map +1 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getRangeQuery.js +340 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getTableSql.d.ts +9 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getTableSql.d.ts.map +1 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getTableSql.js +40 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/index.d.ts +19 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/index.d.ts.map +1 -0
- package/dist/server/plugins/table/funcs/getFilterSQLParametrized/index.js +156 -0
- package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
- package/dist/server/routes/table/functions/getData.js +50 -32
- package/dist/server/routes/table/functions/prettify.d.ts +2 -0
- package/dist/server/routes/table/functions/prettify.d.ts.map +1 -0
- package/dist/server/routes/table/functions/prettify.js +11 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -0
- package/package.json +1 -1
- package/dist/server/plugins/policy/funcs/checkSQL.d.ts +0 -8
- package/dist/server/plugins/policy/funcs/checkSQL.d.ts.map +0 -1
- package/dist/server/plugins/policy/funcs/checkSQL.js +0 -19
- package/dist/server/plugins/policy/sqlInjection.d.ts +0 -3
- package/dist/server/plugins/policy/sqlInjection.d.ts.map +0 -1
- package/dist/server/plugins/policy/sqlInjection.js +0 -33
- package/dist/server/plugins/table/funcs/getData.d.ts +0 -2
- package/dist/server/plugins/table/funcs/getData.d.ts.map +0 -1
- package/dist/server/plugins/table/funcs/getData.js +0 -25
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import config from "../../../../config.js";
|
|
2
2
|
import { handlebars, handlebarsSync } from "../../../helpers/index.js";
|
|
3
|
-
import
|
|
3
|
+
import getFilterSQLParametrized from "../../../plugins/table/funcs/getFilterSQLParametrized/index.js";
|
|
4
4
|
import getAccess from "../../../plugins/crud/funcs/getAccess.js";
|
|
5
5
|
import setToken from "../../../plugins/crud/funcs/setToken.js";
|
|
6
6
|
import getToken from "../../../plugins/crud/funcs/getToken.js";
|
|
@@ -20,6 +20,7 @@ import locales from "../controllers/utils/locales.js";
|
|
|
20
20
|
import conditions from "../controllers/utils/conditions.js";
|
|
21
21
|
import { resources } from "../../../plugins/access/funcs/getResources.js";
|
|
22
22
|
import { BadRequestError, ForbiddenError, NotFoundError, UnauthorizedError, } from "../../../../errors.js";
|
|
23
|
+
import prettify from "./prettify.js";
|
|
23
24
|
const components = {
|
|
24
25
|
"vs-widget-file": "select 'vs-widget-file' as component, count(*) from crm.files where entity_id=$1 and file_status<>3",
|
|
25
26
|
"vs-widget-comments": "select 'vs-widget-comments' as component, count(*) from crm.communications where entity_id=$1",
|
|
@@ -37,7 +38,7 @@ const mockReply = {
|
|
|
37
38
|
},
|
|
38
39
|
send: (txt) => Object.assign(mockReply.response, txt),
|
|
39
40
|
};
|
|
40
|
-
function getOrder(queryOrder, queryDesc, defaultOrder, columnList, sqlColumns, iscalled = false) {
|
|
41
|
+
function getOrder({ queryOrder, queryDesc, defaultOrder, columnList, cols, sqlColumns, iscalled = false, }) {
|
|
41
42
|
if (iscalled && queryOrder) {
|
|
42
43
|
return `order by ${queryOrder}`;
|
|
43
44
|
}
|
|
@@ -46,7 +47,11 @@ function getOrder(queryOrder, queryDesc, defaultOrder, columnList, sqlColumns, i
|
|
|
46
47
|
}
|
|
47
48
|
const orderArr = queryOrder.split(/[|]/g).map((el) => el.split(/[-]/));
|
|
48
49
|
const validOrder = orderArr
|
|
49
|
-
.filter((el) => el[0] &&
|
|
50
|
+
.filter((el) => el[0] &&
|
|
51
|
+
(columnList || "")
|
|
52
|
+
.concat(sqlColumns || "")
|
|
53
|
+
.concat(cols || "")
|
|
54
|
+
.includes(el[0]))
|
|
50
55
|
.map((el) => `${el[0]} ${queryDesc || el[1] === "desc" ? "desc" : ""}`)
|
|
51
56
|
.join(",");
|
|
52
57
|
return `order by ${validOrder || "true::boolean"} nulls last`;
|
|
@@ -121,7 +126,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
121
126
|
else if (checkInline[paramsTable]) {
|
|
122
127
|
loadTable.sql = checkInline[paramsTable];
|
|
123
128
|
}
|
|
124
|
-
if (query?.sql ===
|
|
129
|
+
if (query?.sql === 0 && process.platform === "win32")
|
|
125
130
|
return loadTable;
|
|
126
131
|
if (!pg) {
|
|
127
132
|
throw Error("empty pg");
|
|
@@ -257,7 +262,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
257
262
|
isdefault,
|
|
258
263
|
].filter(Boolean).length;
|
|
259
264
|
const fData = checkFilter
|
|
260
|
-
? await
|
|
265
|
+
? await getFilterSQLParametrized({
|
|
261
266
|
pg,
|
|
262
267
|
table: loadTable
|
|
263
268
|
? tokenData?.table || resources[paramsTable] || paramsTable
|
|
@@ -273,42 +278,55 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
273
278
|
})
|
|
274
279
|
: {};
|
|
275
280
|
timeArr.push(Date.now());
|
|
281
|
+
const args = Array.from(fData.args || []);
|
|
282
|
+
if (objectId) {
|
|
283
|
+
args.push(objectId);
|
|
284
|
+
Object.assign(idx, { id: args.length });
|
|
285
|
+
}
|
|
286
|
+
else if (query?.key && loadTable.key) {
|
|
287
|
+
args.push(query.key);
|
|
288
|
+
Object.assign(idx, { id: args.length });
|
|
289
|
+
}
|
|
276
290
|
const keyQuery = query?.key && (loadTable?.key || tokenData?.key) && !objectId
|
|
277
|
-
? `${loadTable?.key || tokenData?.key}
|
|
291
|
+
? `${loadTable?.key || tokenData?.key}=$${args.length}`
|
|
278
292
|
: null;
|
|
279
|
-
const args = (objectId ? [objectId] : null) ||
|
|
280
|
-
(query?.key && loadTable.key ? [query.key] : []);
|
|
281
|
-
if (args[0]) {
|
|
282
|
-
Object.assign(idx, { id: 1 });
|
|
283
|
-
}
|
|
284
|
-
const isSingle = !!idx.id;
|
|
285
293
|
const limit = (called
|
|
286
294
|
? query?.limit || defaultLimit
|
|
287
295
|
: Math.min(maxLimit, +(query?.limit || defaultLimit))) || defaultLimit;
|
|
288
296
|
args.push(limit);
|
|
289
|
-
Object.assign(idx, { limit:
|
|
297
|
+
Object.assign(idx, { limit: args.length });
|
|
290
298
|
const offset = query?.page && query?.page > 0 && !objectId ? (query?.page - 1) * limit : 0;
|
|
291
299
|
args.push(offset);
|
|
292
|
-
Object.assign(idx, { offset:
|
|
293
|
-
const order = getOrder(
|
|
294
|
-
|
|
295
|
-
|
|
300
|
+
Object.assign(idx, { offset: args.length });
|
|
301
|
+
const order = getOrder({
|
|
302
|
+
queryOrder: query?.order,
|
|
303
|
+
queryDesc: query?.desc,
|
|
304
|
+
defaultOrder: loadTable?.order,
|
|
305
|
+
columnList,
|
|
306
|
+
cols,
|
|
307
|
+
sqlColumns: loadTable?.sqlColumns,
|
|
308
|
+
iscalled: !!called,
|
|
309
|
+
});
|
|
310
|
+
const isSearchable = loadTable?.meta?.search &&
|
|
311
|
+
typeof loadTable.meta.search === "string" &&
|
|
296
312
|
query?.search &&
|
|
297
|
-
!
|
|
313
|
+
!idx.id;
|
|
298
314
|
if (isSearchable) {
|
|
299
315
|
args.push(`%${query.search.replace(/%/g, "\\%")}%`);
|
|
300
|
-
Object.assign(idx, { search:
|
|
316
|
+
Object.assign(idx, { search: args.length });
|
|
301
317
|
}
|
|
302
318
|
if (meta?.bbox && query?.polyline) {
|
|
303
319
|
args.push(query.polyline);
|
|
304
|
-
Object.assign(idx, {
|
|
320
|
+
Object.assign(idx, {
|
|
321
|
+
polyline: args.length,
|
|
322
|
+
});
|
|
305
323
|
}
|
|
306
324
|
if (config.trace)
|
|
307
325
|
console.log(order);
|
|
308
326
|
const search = isSearchable
|
|
309
|
-
? `(${loadTable
|
|
310
|
-
|
|
311
|
-
|
|
327
|
+
? `(${loadTable.meta.search
|
|
328
|
+
.split(",")
|
|
329
|
+
.map((el) => `${el} ilike $${idx.search}`)
|
|
312
330
|
.join(" or ")})`
|
|
313
331
|
: null;
|
|
314
332
|
const queryBbox = query?.bbox
|
|
@@ -368,13 +386,13 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
368
386
|
${order} limit $${idx.limit}::bigint offset $${idx.offset}::bigint`;
|
|
369
387
|
if (q1.includes("{{uid}}")) {
|
|
370
388
|
args.push(uid || "");
|
|
371
|
-
Object.assign(idx, { uid:
|
|
389
|
+
Object.assign(idx, { uid: args.length });
|
|
372
390
|
}
|
|
373
391
|
const q = q1.replace(/'{{uid}}'/g, `$${idx.uid}`);
|
|
374
392
|
if (config.trace)
|
|
375
393
|
console.log(q);
|
|
376
|
-
if (query?.sql ===
|
|
377
|
-
return q;
|
|
394
|
+
if (query?.sql === 1 && process.platform === "win32") {
|
|
395
|
+
return prettify(q, args);
|
|
378
396
|
}
|
|
379
397
|
const rows = await pg.query(q, args).then((r) => r.rows || []);
|
|
380
398
|
if (!rows.length &&
|
|
@@ -409,18 +427,18 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
409
427
|
});
|
|
410
428
|
}
|
|
411
429
|
const idx1 = {};
|
|
412
|
-
const args1 = [];
|
|
430
|
+
const args1 = Array.from(fData.args || []);
|
|
413
431
|
if (idx.search) {
|
|
414
432
|
args1.push(args[idx.search - 1]);
|
|
415
|
-
Object.assign(idx1, { search:
|
|
433
|
+
Object.assign(idx1, { search: args1.length });
|
|
416
434
|
}
|
|
417
435
|
if (idx.uid) {
|
|
418
436
|
args1.push(args[idx.uid - 1]);
|
|
419
|
-
Object.assign(idx1, { uid:
|
|
437
|
+
Object.assign(idx1, { uid: args1.length });
|
|
420
438
|
}
|
|
421
439
|
if (idx.polyline) {
|
|
422
440
|
args1.push(args[idx.polyline - 1]);
|
|
423
|
-
Object.assign(idx1, { polyline:
|
|
441
|
+
Object.assign(idx1, { polyline: args1.length });
|
|
424
442
|
}
|
|
425
443
|
const search1 = idx.search
|
|
426
444
|
? `(${loadTable.meta.search
|
|
@@ -464,8 +482,8 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
464
482
|
where ${[loadTable?.query, tokenData?.query, accessQuery, contextQuery]
|
|
465
483
|
.filter(Boolean)
|
|
466
484
|
.join(" and ") || "true"} `.replace(/'{{uid}}'/g, `$${idx1.uid}`);
|
|
467
|
-
if (query?.sql ===
|
|
468
|
-
return qCount;
|
|
485
|
+
if (query?.sql === 2 && process.platform === "win32") {
|
|
486
|
+
return prettify(qCount, args1);
|
|
469
487
|
}
|
|
470
488
|
const counts = keyQuery || objectId
|
|
471
489
|
? { total: rows.length, filtered: rows.length }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prettify.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/prettify.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,UAetD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export default function prettify(q, args) {
|
|
2
|
+
if (!q)
|
|
3
|
+
throw new Error("query is empty");
|
|
4
|
+
if (!args?.length)
|
|
5
|
+
return q;
|
|
6
|
+
return q.replace(/\$(\d+)/g, (_, ind) => `${Array.isArray(args[ind - 1])
|
|
7
|
+
? `'{${args[ind - 1]}}'`
|
|
8
|
+
: ["number", "boolean"].includes(typeof args[ind - 1])
|
|
9
|
+
? args[ind - 1]
|
|
10
|
+
: `'${args[ind - 1]}'`}`);
|
|
11
|
+
}
|
package/dist/utils.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export { default as metaFormat } from "./server/plugins/table/funcs/metaFormat/i
|
|
|
26
26
|
export { default as autoIndex } from "./server/plugins/pg/funcs/autoIndex.js";
|
|
27
27
|
export { default as getSelectVal } from "./server/plugins/table/funcs/metaFormat/getSelectVal.js";
|
|
28
28
|
export { default as getFilterSQL } from "./server/plugins/table/funcs/getFilterSQL/index.js";
|
|
29
|
+
export { default as getFilterSQLParametrized } from "./server/plugins/table/funcs/getFilterSQLParametrized/index.js";
|
|
29
30
|
export { default as getSelect } from "./server/plugins/table/funcs/getSelect.js";
|
|
30
31
|
export { default as getSelectMeta } from "./server/plugins/table/funcs/getSelectMeta.js";
|
|
31
32
|
export { default as gisIRColumn } from "./server/plugins/table/funcs/gisIRColumn.js";
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAGvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAGnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAGtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAG5E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAG5E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAExF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAG5F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAG1F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qDAAqD,CAAC;AAE3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAE9F,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAEnG,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,MAAM,IAAI,oBAAoB,EAC9B,OAAO,IAAI,kBAAkB,EAC7B,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAGnF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,GAAG,MAAM,oCAAoC,CAAC;;AAE1D,wBAAoB"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -34,6 +34,7 @@ export { default as metaFormat } from "./server/plugins/table/funcs/metaFormat/i
|
|
|
34
34
|
export { default as autoIndex } from "./server/plugins/pg/funcs/autoIndex.js";
|
|
35
35
|
export { default as getSelectVal } from "./server/plugins/table/funcs/metaFormat/getSelectVal.js";
|
|
36
36
|
export { default as getFilterSQL } from "./server/plugins/table/funcs/getFilterSQL/index.js";
|
|
37
|
+
export { default as getFilterSQLParametrized } from "./server/plugins/table/funcs/getFilterSQLParametrized/index.js";
|
|
37
38
|
export { default as getSelect } from "./server/plugins/table/funcs/getSelect.js";
|
|
38
39
|
export { default as getSelectMeta } from "./server/plugins/table/funcs/getSelectMeta.js";
|
|
39
40
|
export { default as gisIRColumn } from "./server/plugins/table/funcs/gisIRColumn.js";
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkSQL.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkSQL.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAW,EAAE,EAAE,GAAG;;;;;;EA0B1D"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import sqlInjection from "../sqlInjection.js";
|
|
2
|
-
export default function checkSQL({ body, schema = {} }) {
|
|
3
|
-
const data = typeof body === "string" ? body : JSON.stringify(body);
|
|
4
|
-
const stopWords = sqlInjection.filter((el) => data?.toLowerCase?.()?.includes?.(el));
|
|
5
|
-
if (!stopWords.length)
|
|
6
|
-
return { body };
|
|
7
|
-
const disabledCheckFields = Object.keys(schema || {})?.filter((el) => schema?.[el]?.sqlCheck === false); // exclude specific columns
|
|
8
|
-
const field = Object.keys(body)?.find((key) => body[key]?.toLowerCase &&
|
|
9
|
-
!disabledCheckFields.includes(key) &&
|
|
10
|
-
body[key].toLowerCase().includes(stopWords[0]));
|
|
11
|
-
if (field) {
|
|
12
|
-
console.error(stopWords[0], field, body[field]);
|
|
13
|
-
return {
|
|
14
|
-
error: `rule: ${stopWords[0]} | attr: ${field} | val: ${body[field]}`,
|
|
15
|
-
body,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
return { body };
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlInjection.d.ts","sourceRoot":"","sources":["../../../../server/plugins/policy/sqlInjection.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,YAAY,UA8BjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-script-url */
|
|
2
|
-
const sqlInjection = [
|
|
3
|
-
'()',
|
|
4
|
-
'^',
|
|
5
|
-
'*',
|
|
6
|
-
'like ',
|
|
7
|
-
'@variable',
|
|
8
|
-
'@@variable',
|
|
9
|
-
'group by ',
|
|
10
|
-
'union ',
|
|
11
|
-
'select ',
|
|
12
|
-
'having ',
|
|
13
|
-
'as injectx',
|
|
14
|
-
'where ',
|
|
15
|
-
'rlike ',
|
|
16
|
-
'if(',
|
|
17
|
-
'sleep(',
|
|
18
|
-
'waitfor delay',
|
|
19
|
-
'benchmark(',
|
|
20
|
-
'pg_sleep(',
|
|
21
|
-
"'\\\"",
|
|
22
|
-
'randomblob(',
|
|
23
|
-
'order by ',
|
|
24
|
-
'union all ',
|
|
25
|
-
'+or',
|
|
26
|
-
'or ',
|
|
27
|
-
'and ',
|
|
28
|
-
"'' ",
|
|
29
|
-
'""" ',
|
|
30
|
-
'<script',
|
|
31
|
-
'javascript:',
|
|
32
|
-
];
|
|
33
|
-
export default sqlInjection;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/table/funcs/getData.ts"],"names":[],"mappings":"AAEA,wBAA8B,OAAO,CACnC,EACE,EAAE,EACF,KAAK,EACL,EAAE,EACF,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,GAAG,EACH,YAAY,EACZ,KAAK,EACL,UAAU,GACX,EAAE,GAAG,EACN,KAAK,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,GAAG,gBA4Bb"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import routeData from "../../../routes/table/controllers/tableData.js";
|
|
2
|
-
export default async function getData({ id, table, pg, headers, filter, state, limit, page, search, user, order, desc, sql, contextQuery, sufix, filterList, }, reply, called) {
|
|
3
|
-
const params = { table, id };
|
|
4
|
-
const query = {
|
|
5
|
-
filter,
|
|
6
|
-
limit,
|
|
7
|
-
page,
|
|
8
|
-
search,
|
|
9
|
-
sql,
|
|
10
|
-
state,
|
|
11
|
-
order,
|
|
12
|
-
desc,
|
|
13
|
-
};
|
|
14
|
-
const result = await routeData({
|
|
15
|
-
pg,
|
|
16
|
-
headers,
|
|
17
|
-
params,
|
|
18
|
-
query,
|
|
19
|
-
user,
|
|
20
|
-
contextQuery,
|
|
21
|
-
sufix,
|
|
22
|
-
filterList,
|
|
23
|
-
}, reply, called);
|
|
24
|
-
return result;
|
|
25
|
-
}
|