@opengis/fastify-table 2.5.21 → 2.5.23
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/file/uploadMultiPart.d.ts.map +1 -1
- package/dist/server/plugins/file/uploadMultiPart.js +7 -4
- package/dist/server/plugins/file/utils/inspectContent.d.ts +6 -0
- package/dist/server/plugins/file/utils/inspectContent.d.ts.map +1 -0
- package/dist/server/plugins/file/utils/inspectContent.js +58 -0
- 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/pg/funcs/pool.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/pool.js +3 -0
- 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 +35 -29
- 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 +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -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",
|
|
@@ -121,7 +122,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
121
122
|
else if (checkInline[paramsTable]) {
|
|
122
123
|
loadTable.sql = checkInline[paramsTable];
|
|
123
124
|
}
|
|
124
|
-
if (query?.sql ===
|
|
125
|
+
if (query?.sql === 0 && process.platform === "win32")
|
|
125
126
|
return loadTable;
|
|
126
127
|
if (!pg) {
|
|
127
128
|
throw Error("empty pg");
|
|
@@ -257,7 +258,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
257
258
|
isdefault,
|
|
258
259
|
].filter(Boolean).length;
|
|
259
260
|
const fData = checkFilter
|
|
260
|
-
? await
|
|
261
|
+
? await getFilterSQLParametrized({
|
|
261
262
|
pg,
|
|
262
263
|
table: loadTable
|
|
263
264
|
? tokenData?.table || resources[paramsTable] || paramsTable
|
|
@@ -273,42 +274,47 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
273
274
|
})
|
|
274
275
|
: {};
|
|
275
276
|
timeArr.push(Date.now());
|
|
277
|
+
const args = Array.from(fData.args || []);
|
|
278
|
+
if (objectId) {
|
|
279
|
+
args.push(objectId);
|
|
280
|
+
Object.assign(idx, { id: args.length });
|
|
281
|
+
}
|
|
282
|
+
else if (query?.key && loadTable.key) {
|
|
283
|
+
args.push(query.key);
|
|
284
|
+
Object.assign(idx, { id: args.length });
|
|
285
|
+
}
|
|
276
286
|
const keyQuery = query?.key && (loadTable?.key || tokenData?.key) && !objectId
|
|
277
|
-
? `${loadTable?.key || tokenData?.key}
|
|
287
|
+
? `${loadTable?.key || tokenData?.key}=$${args.length}`
|
|
278
288
|
: 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
289
|
const limit = (called
|
|
286
290
|
? query?.limit || defaultLimit
|
|
287
291
|
: Math.min(maxLimit, +(query?.limit || defaultLimit))) || defaultLimit;
|
|
288
292
|
args.push(limit);
|
|
289
|
-
Object.assign(idx, { limit:
|
|
293
|
+
Object.assign(idx, { limit: args.length });
|
|
290
294
|
const offset = query?.page && query?.page > 0 && !objectId ? (query?.page - 1) * limit : 0;
|
|
291
295
|
args.push(offset);
|
|
292
|
-
Object.assign(idx, { offset:
|
|
296
|
+
Object.assign(idx, { offset: args.length });
|
|
293
297
|
const order = getOrder(query?.order, query?.desc, loadTable?.order, columnList, loadTable?.sqlColumns, !!called);
|
|
294
|
-
const isSearchable =
|
|
295
|
-
loadTable.meta.search
|
|
298
|
+
const isSearchable = loadTable?.meta?.search &&
|
|
299
|
+
typeof loadTable.meta.search === "string" &&
|
|
296
300
|
query?.search &&
|
|
297
|
-
!
|
|
301
|
+
!idx.id;
|
|
298
302
|
if (isSearchable) {
|
|
299
303
|
args.push(`%${query.search.replace(/%/g, "\\%")}%`);
|
|
300
|
-
Object.assign(idx, { search:
|
|
304
|
+
Object.assign(idx, { search: args.length });
|
|
301
305
|
}
|
|
302
306
|
if (meta?.bbox && query?.polyline) {
|
|
303
307
|
args.push(query.polyline);
|
|
304
|
-
Object.assign(idx, {
|
|
308
|
+
Object.assign(idx, {
|
|
309
|
+
polyline: args.length,
|
|
310
|
+
});
|
|
305
311
|
}
|
|
306
312
|
if (config.trace)
|
|
307
313
|
console.log(order);
|
|
308
314
|
const search = isSearchable
|
|
309
|
-
? `(${loadTable
|
|
310
|
-
|
|
311
|
-
|
|
315
|
+
? `(${loadTable.meta.search
|
|
316
|
+
.split(",")
|
|
317
|
+
.map((el) => `${el} ilike $${idx.search}`)
|
|
312
318
|
.join(" or ")})`
|
|
313
319
|
: null;
|
|
314
320
|
const queryBbox = query?.bbox
|
|
@@ -368,13 +374,13 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
368
374
|
${order} limit $${idx.limit}::bigint offset $${idx.offset}::bigint`;
|
|
369
375
|
if (q1.includes("{{uid}}")) {
|
|
370
376
|
args.push(uid || "");
|
|
371
|
-
Object.assign(idx, { uid:
|
|
377
|
+
Object.assign(idx, { uid: args.length });
|
|
372
378
|
}
|
|
373
379
|
const q = q1.replace(/'{{uid}}'/g, `$${idx.uid}`);
|
|
374
380
|
if (config.trace)
|
|
375
381
|
console.log(q);
|
|
376
|
-
if (query?.sql ===
|
|
377
|
-
return q;
|
|
382
|
+
if (query?.sql === 1 && process.platform === "win32") {
|
|
383
|
+
return prettify(q, args);
|
|
378
384
|
}
|
|
379
385
|
const rows = await pg.query(q, args).then((r) => r.rows || []);
|
|
380
386
|
if (!rows.length &&
|
|
@@ -409,18 +415,18 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
409
415
|
});
|
|
410
416
|
}
|
|
411
417
|
const idx1 = {};
|
|
412
|
-
const args1 = [];
|
|
418
|
+
const args1 = Array.from(fData.args || []);
|
|
413
419
|
if (idx.search) {
|
|
414
420
|
args1.push(args[idx.search - 1]);
|
|
415
|
-
Object.assign(idx1, { search:
|
|
421
|
+
Object.assign(idx1, { search: args1.length });
|
|
416
422
|
}
|
|
417
423
|
if (idx.uid) {
|
|
418
424
|
args1.push(args[idx.uid - 1]);
|
|
419
|
-
Object.assign(idx1, { uid:
|
|
425
|
+
Object.assign(idx1, { uid: args1.length });
|
|
420
426
|
}
|
|
421
427
|
if (idx.polyline) {
|
|
422
428
|
args1.push(args[idx.polyline - 1]);
|
|
423
|
-
Object.assign(idx1, { polyline:
|
|
429
|
+
Object.assign(idx1, { polyline: args1.length });
|
|
424
430
|
}
|
|
425
431
|
const search1 = idx.search
|
|
426
432
|
? `(${loadTable.meta.search
|
|
@@ -464,8 +470,8 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
464
470
|
where ${[loadTable?.query, tokenData?.query, accessQuery, contextQuery]
|
|
465
471
|
.filter(Boolean)
|
|
466
472
|
.join(" and ") || "true"} `.replace(/'{{uid}}'/g, `$${idx1.uid}`);
|
|
467
|
-
if (query?.sql ===
|
|
468
|
-
return qCount;
|
|
473
|
+
if (query?.sql === 2 && process.platform === "win32") {
|
|
474
|
+
return prettify(qCount, args1);
|
|
469
475
|
}
|
|
470
476
|
const counts = keyQuery || objectId
|
|
471
477
|
? { 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";
|
|
@@ -70,6 +71,7 @@ export { uploadMultiPart, rotateFilenameFS, rotateFilenameS3, } from "./server/p
|
|
|
70
71
|
export { default as getMimeType } from "./server/plugins/file/providers/mime/index.js";
|
|
71
72
|
export { default as getFileType } from "./server/plugins/file/utils/getFileType.js";
|
|
72
73
|
export { default as allowedExtensions } from "./server/plugins/file/utils/allowedExtensions.js";
|
|
74
|
+
export { default as inspectContent } from "./server/plugins/file/utils/inspectContent.js";
|
|
73
75
|
export { default as grpc } from "./server/plugins/grpc/grpc.js";
|
|
74
76
|
export { default as file2json } from "./server/plugins/grpc/file2json.js";
|
|
75
77
|
export { default as officeConverter } from "./server/plugins/grpc/office2pdf.js";
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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
|
|
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";
|
|
@@ -86,6 +87,7 @@ export { uploadMultiPart, rotateFilenameFS, rotateFilenameS3, } from "./server/p
|
|
|
86
87
|
export { default as getMimeType } from "./server/plugins/file/providers/mime/index.js";
|
|
87
88
|
export { default as getFileType } from "./server/plugins/file/utils/getFileType.js";
|
|
88
89
|
export { default as allowedExtensions } from "./server/plugins/file/utils/allowedExtensions.js";
|
|
90
|
+
export { default as inspectContent } from "./server/plugins/file/utils/inspectContent.js";
|
|
89
91
|
// grpc
|
|
90
92
|
export { default as grpc } from "./server/plugins/grpc/grpc.js";
|
|
91
93
|
export { default as file2json } from "./server/plugins/grpc/file2json.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
|
-
}
|