@social-mail/social-mail-web-server 1.4.762 → 1.4.764
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/tsconfig.tsbuildinfo +1 -1
- package/dist/wwwroot/routes/api/site/draft/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/api/site/draft/index.js +26 -0
- package/dist/wwwroot/routes/api/site/draft/index.js.map +1 -1
- package/package.json +1 -1
- package/src/wwwroot/routes/api/site/draft/index.ts +28 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAK5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,GAAG,CAAkB;IAEvB,GAAG;CA6DZ"}
|
|
@@ -15,6 +15,7 @@ import TempFileService from "../../../../../server/storage/TempFileService.js";
|
|
|
15
15
|
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
16
16
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
17
17
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
18
|
+
import { JSDOM } from 'jsdom';
|
|
18
19
|
let default_1 = class extends Page {
|
|
19
20
|
async run() {
|
|
20
21
|
const [siteID, ...path] = this.childPath;
|
|
@@ -34,6 +35,31 @@ let default_1 = class extends Page {
|
|
|
34
35
|
return this.notFound(true);
|
|
35
36
|
}
|
|
36
37
|
const localFile = await this.tfs.downloadAppFile(file);
|
|
38
|
+
// we need to change html if it contains inject
|
|
39
|
+
if (/text\/html/i.test(file.contentType)) {
|
|
40
|
+
let body = await localFile.readAsText();
|
|
41
|
+
if (/\<inject\s/i.test(body)) {
|
|
42
|
+
// perform inject...
|
|
43
|
+
const { window: { document } } = new JSDOM(body);
|
|
44
|
+
const parser = new document.defaultView.DOMParser();
|
|
45
|
+
for (const e of Array.from(document.body.querySelectorAll("inject"))) {
|
|
46
|
+
let src = e.getAttribute("src");
|
|
47
|
+
if (src.startsWith("/")) {
|
|
48
|
+
src = src.substring(1);
|
|
49
|
+
}
|
|
50
|
+
const include = await this.websiteService.folderContent(site.folderID, src.split("/"));
|
|
51
|
+
const includeFile = await this.tfs.downloadAppFile(include);
|
|
52
|
+
const parsed = parser.parseFromString(await includeFile.readAsText(), "text/html");
|
|
53
|
+
for (const pe of Array.from(parsed.body.children)) {
|
|
54
|
+
pe.remove();
|
|
55
|
+
e.parentElement.insertBefore(pe, e);
|
|
56
|
+
}
|
|
57
|
+
e.remove();
|
|
58
|
+
}
|
|
59
|
+
body = `<!DOCTYPE HTML>${document.documentElement.outerHTML}`;
|
|
60
|
+
}
|
|
61
|
+
return this.content({ body, contentType: "text/html" });
|
|
62
|
+
}
|
|
37
63
|
return new TempFileResult(localFile, {
|
|
38
64
|
contentDisposition: "inline",
|
|
39
65
|
etag: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,cAAc,MAAM,wDAAwD,CAAC;AACpF,OAAO,eAAe,MAAM,kDAAkD,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,cAAc,MAAM,wDAAwD,CAAC;AACpF,OAAO,eAAe,MAAM,kDAAkD,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGf,gBAAA,KAAM,SAAQ,IAAI;IAW7B,KAAK,CAAC,GAAG;QAEL,MAAM,CAAC,MAAM,EAAE,GAAI,IAAI,CAAC,GAAG,IAAI,CAAC,SAAkB,CAAC;QAEnD,0CAA0C;QAE1C,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC;aAC5G,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC;iBACpH,WAAW,EAAE,CAAC;QACnB,CAAC;QAED,IAAG,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvD,+CAA+C;QAC/C,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YACxC,IAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,oBAAoB;gBACpB,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;gBACpD,KAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAClE,IAAI,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAChC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC3B,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,WAAW,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC,CAAC;oBACnF,KAAI,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC/C,EAAE,CAAC,MAAM,EAAE,CAAC;wBACZ,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxC,CAAC;oBACD,CAAC,CAAC,MAAM,EAAE,CAAC;gBACf,CAAC;gBACD,IAAI,GAAG,kBAAkB,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,cAAc,CACrB,SAAS,EACT;YACI,kBAAkB,EAAE,QAAQ;YAC5B,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC;SACZ,CACJ,CAAC;IAEN,CAAC;CAEJ,CAAA;AArEW;IADP,MAAM;8BACK,iBAAiB;qCAAC;AAGtB;IADP,MAAM;8BACiB,cAAc;iDAAC;AAG/B;IADP,MAAM;8BACM,eAAe;sCAAC;AATlB;IADd,OAAO,CAAC,SAAS;aAyEjB"}
|
package/package.json
CHANGED
|
@@ -6,6 +6,7 @@ import TempFileService from "../../../../../server/storage/TempFileService.js";
|
|
|
6
6
|
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
7
7
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
8
8
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
9
|
+
import { JSDOM } from 'jsdom';
|
|
9
10
|
|
|
10
11
|
@Prepare.authorize
|
|
11
12
|
export default class extends Page {
|
|
@@ -42,6 +43,33 @@ export default class extends Page {
|
|
|
42
43
|
return this.notFound(true);
|
|
43
44
|
}
|
|
44
45
|
const localFile = await this.tfs.downloadAppFile(file);
|
|
46
|
+
|
|
47
|
+
// we need to change html if it contains inject
|
|
48
|
+
if (/text\/html/i.test(file.contentType)) {
|
|
49
|
+
let body = await localFile.readAsText();
|
|
50
|
+
if(/\<inject\s/i.test(body)) {
|
|
51
|
+
// perform inject...
|
|
52
|
+
const { window: { document } } = new JSDOM(body);
|
|
53
|
+
const parser = new document.defaultView.DOMParser();
|
|
54
|
+
for(const e of Array.from(document.body.querySelectorAll("inject"))) {
|
|
55
|
+
let src = e.getAttribute("src");
|
|
56
|
+
if (src.startsWith("/")) {
|
|
57
|
+
src = src.substring(1);
|
|
58
|
+
}
|
|
59
|
+
const include = await this.websiteService.folderContent(site.folderID, src.split("/"));
|
|
60
|
+
const includeFile = await this.tfs.downloadAppFile(include);
|
|
61
|
+
const parsed = parser.parseFromString(await includeFile.readAsText(), "text/html");
|
|
62
|
+
for(const pe of Array.from(parsed.body.children)) {
|
|
63
|
+
pe.remove();
|
|
64
|
+
e.parentElement.insertBefore(pe, e);
|
|
65
|
+
}
|
|
66
|
+
e.remove();
|
|
67
|
+
}
|
|
68
|
+
body = `<!DOCTYPE HTML>${document.documentElement.outerHTML}`;
|
|
69
|
+
}
|
|
70
|
+
return this.content({ body, contentType: "text/html"});
|
|
71
|
+
}
|
|
72
|
+
|
|
45
73
|
return new TempFileResult(
|
|
46
74
|
localFile,
|
|
47
75
|
{
|