@tiledesk/tiledesk-server 2.10.101 → 2.10.102

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/CHANGELOG.md CHANGED
@@ -5,6 +5,9 @@
5
5
  🚀 IN PRODUCTION 🚀
6
6
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
7
7
 
8
+ # 2.10.102
9
+ - Update: substituted encode with DOMPurify.sanitize for direct email
10
+
8
11
  # 2.10.101
9
12
  - Update: messenger-connector to 0.1.27
10
13
  - Update: multi-worker to 0.3.3
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiledesk/tiledesk-server",
3
3
  "description": "The Tiledesk server module",
4
- "version": "2.10.101",
4
+ "version": "2.10.102",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -45,16 +45,15 @@
45
45
  "@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
46
46
  "@tiledesk/tiledesk-kaleyra-proxy": "^0.1.7",
47
47
  "@tiledesk/tiledesk-messenger-connector": "^0.1.27",
48
+ "@tiledesk/tiledesk-multi-worker": "^0.3.3",
48
49
  "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
50
+ "@tiledesk/tiledesk-sms-connector": "^0.1.11",
49
51
  "@tiledesk/tiledesk-telegram-connector": "^0.1.14",
50
52
  "@tiledesk/tiledesk-tybot-connector": "^2.0.19",
53
+ "@tiledesk/tiledesk-voice-twilio-connector": "^0.1.22",
54
+ "@tiledesk/tiledesk-vxml-connector": "^0.1.76",
51
55
  "@tiledesk/tiledesk-whatsapp-connector": "^0.1.84",
52
56
  "@tiledesk/tiledesk-whatsapp-jobworker": "^0.0.12",
53
- "@tiledesk/tiledesk-sms-connector": "^0.1.11",
54
- "@tiledesk/tiledesk-vxml-connector": "^0.1.76",
55
- "@tiledesk/tiledesk-voice-twilio-connector": "^0.1.22",
56
- "@tiledesk/tiledesk-multi-worker": "^0.3.3",
57
- "passport-oauth2": "^1.8.0",
58
57
  "amqplib": "^0.5.5",
59
58
  "app-root-path": "^3.0.0",
60
59
  "bcrypt-nodejs": "0.0.3",
@@ -65,6 +64,7 @@
65
64
  "cors": "^2.8.5",
66
65
  "csv-express": "^1.2.2",
67
66
  "debug": "^4.3.4",
67
+ "dompurify": "^3.2.6",
68
68
  "dotenv": "^8.6.0",
69
69
  "email-templates": "^8.1.0",
70
70
  "eventemitter2": "^6.4.4",
@@ -82,6 +82,7 @@
82
82
  "immutable": "^4.1.0",
83
83
  "jade": "~1.11.0",
84
84
  "jobs-worker-queued": "^0.0.5",
85
+ "jsdom": "^26.1.0",
85
86
  "jsonwebtoken": "^8.5.1",
86
87
  "lodash": "^4.17.21",
87
88
  "marked": "^3.0.4",
@@ -104,6 +105,7 @@
104
105
  "passport-google-oidc": "^0.1.0",
105
106
  "passport-http": "^0.3.0",
106
107
  "passport-jwt": "^4.0.0",
108
+ "passport-oauth2": "^1.8.0",
107
109
  "pdfmake": "^0.2.5",
108
110
  "promise-events": "^0.2.4",
109
111
  "request": "^2.88.2",
@@ -9,6 +9,11 @@ var handlebars = require('handlebars');
9
9
  var encode = require('html-entities').encode;
10
10
  const emailEvent = require('../event/emailEvent');
11
11
 
12
+ const createDOMPurify = require('dompurify');
13
+ const { JSDOM } = require('jsdom');
14
+ const window = new JSDOM('').window;
15
+ const DOMPurify = createDOMPurify(window);
16
+
12
17
  handlebars.registerHelper('ifEquals', function (arg1, arg2, options) {
13
18
  return (arg1 == arg2) ? options.fn(this) : options.inverse(this);
14
19
  });
@@ -1476,13 +1481,15 @@ class EmailService {
1476
1481
  var baseScope = JSON.parse(JSON.stringify(that));
1477
1482
  delete baseScope.pass;
1478
1483
 
1479
-
1480
1484
  let msgText = text;
1481
- msgText = encode(msgText);
1482
1485
  if (this.markdown) {
1483
1486
  msgText = marked(msgText);
1487
+ msgText = DOMPurify.sanitize(msgText);
1488
+ } else {
1489
+ msgText = encode(msgText);
1484
1490
  }
1485
1491
 
1492
+
1486
1493
  winston.debug("msgText: " + msgText);
1487
1494
  winston.debug("baseScope: " + JSON.stringify(baseScope));
1488
1495
 
@@ -0,0 +1,43 @@
1
+ //During the test the env variable is set to test
2
+ process.env.NODE_ENV = 'test';
3
+
4
+ var expect = require('chai').expect;
5
+
6
+ var assert = require('chai').assert;
7
+ var config = require('../config/database');
8
+ var mongoose = require('mongoose');
9
+ var winston = require('../config/winston');
10
+
11
+ mongoose.connect(config.databasetest);
12
+
13
+ var projectService = require("../services/projectService");
14
+ const emailService = require('../services/emailService');
15
+
16
+ let log = false;
17
+
18
+ describe('EmailService', function () {
19
+
20
+
21
+ it('direct', function (done) {
22
+ var userid = "5badfe5d553d1844ad654072";
23
+ projectService.create("test1", userid).then(function (savedProject) {
24
+ // create(fullname, email, id_project, createdBy)
25
+
26
+ let request_id = "support-group-" + savedProject._id + "-123456";
27
+
28
+ //let text = "this is\n<b>the</b>\ntext";
29
+ //let text = 'this is <script>alert("XSS")</script>';
30
+ let text = 'Go to [Google](https://google.com)';
31
+ emailService.sendEmailDirect("my@email.com", text, savedProject._id, request_id, "Suubject").then((response) => {
32
+ console.log("response: ", response);
33
+ done();
34
+ }).catch((err) => {
35
+ console.error("err: ", err)
36
+ done();
37
+ })
38
+
39
+
40
+ });
41
+ });
42
+
43
+ });