@tiledesk/tiledesk-server 2.2.24 → 2.2.29

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,9 +1,37 @@
1
1
 
2
- # 2.2.24
2
+ # 2.2.29
3
+ - Added endpoint to find requests created by users and guests
4
+ - Log fix
5
+
6
+ # 2.2.28 (compatible with dasboard ver. 2.2.36)
7
+ - Operator.select returns context object that contains the temp request
8
+ - Added Serbian language to the widget
9
+ - Added tag field to the project_user
10
+ - Removed default BCC from email
11
+ - BugFix: Avoid cluster concurrent jobs in multiple nodes
12
+ - Faq template now support blank and example
13
+ - Organizzation support added
14
+ - ipFilter related to the project is now supported
15
+ - Added filter channel name for the request
16
+ - Added edit card for payment
17
+ - Fix concierge concierge bot for department selection
18
+ - Added filter to find a request by ticket_id
19
+ - Added filter to snap_lead_lead_id for request
20
+ - Added endpoint to close a request by guest
21
+
22
+
23
+ # 2.2.26 -> PROD (compatible with dasboard ver. 2.2.35)
24
+ - Tag fix for 2.2.25
25
+
26
+ # 2.2.25
27
+ - New label prechat form
28
+ - Updated mongodb-runner from 4.8.1 to 4.8.3 to fix ssh key error
29
+
30
+ # 2.2.24
3
31
  - webhook subscription can fetch temmates endpoint
4
32
  - Added hasBot and createdAt index to the request model
5
33
 
6
- # 2.2.23 -> PROD
34
+ # 2.2.23
7
35
  - Increased list answers limit from 1000 to 3000
8
36
 
9
37
  # 2.2.22
package/README.md CHANGED
@@ -18,6 +18,11 @@ You can find more info here: https://developer.tiledesk.com
18
18
  * [Nodejs](https://www.npmjs.com/) and npm installed. Suggested versions are NodeJS 12.20.2 and NPM 6.14.11
19
19
  * [MongoDb](https://www.mongodb.com) installed
20
20
 
21
+ # Run Tiledesk with Docker Compose
22
+
23
+ Do you want to install all the Tiledesk components on your server with just one click?
24
+ Use [Docker Compose Tiledesk installation guide](https://github.com/Tiledesk/tiledesk-deployment/blob/master/docker-compose/README.md)
25
+
21
26
  # Running Tiledesk Server
22
27
 
23
28
  ## Run locally with npm
@@ -85,3 +90,4 @@ To see how to upgrade tiledesk-server see [here](./docs/upgrading.md)
85
90
  # Testing
86
91
  Run unit test with `npm test` and integration test with `npm run test:int`
87
92
 
93
+
package/app.js CHANGED
@@ -96,6 +96,7 @@ var faqpub = require('./routes/faqpub');
96
96
  var labels = require('./routes/labels');
97
97
  var fetchLabels = require('./middleware/fetchLabels');
98
98
  var cacheUtil = require("./utils/cacheUtil");
99
+ var orgUtil = require("./utils/orgUtil");
99
100
  var images = require('./routes/images');
100
101
  var files = require('./routes/files');
101
102
  var campaigns = require('./routes/campaigns');
@@ -128,6 +129,10 @@ var pubModulesManager = require('./pubmodules/pubModulesManager');
128
129
  var channelManager = require('./channels/channelManager');
129
130
  channelManager.listen();
130
131
 
132
+ const ipfilter = require('express-ipfilter').IpFilter
133
+ // const IpDeniedError = require('express-ipfilter').IpDeniedError;
134
+
135
+
131
136
  var modulesManager = undefined;
132
137
  try {
133
138
  modulesManager = require('./services/modulesManager');
@@ -233,7 +238,10 @@ if (process.env.ROUTELOGGER_ENABLED==="true") {
233
238
 
234
239
  var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
235
240
  winston.debug("fullUrl:"+ fullUrl);
241
+ winston.debug(" req.get('host'):"+ req.get('host'));
242
+
236
243
  winston.debug("req.get('origin'):" + req.get('origin'));
244
+ winston.debug("req.get('referer'):" + req.get('referer'));
237
245
 
238
246
  var routerLogger = new RouterLogger({
239
247
  origin: req.get('origin'),
@@ -291,7 +299,7 @@ var projectSetter = function (req, res, next) {
291
299
  if (err) {
292
300
  winston.warn("Problem getting project with id: " + projectid + " req.originalUrl: " + req.originalUrl);
293
301
  }
294
-
302
+
295
303
  winston.debug("projectSetter project:" + project);
296
304
  if (!project) {
297
305
  winston.warn("ProjectSetter project not found with id: " + projectid);
@@ -311,6 +319,53 @@ var projectSetter = function (req, res, next) {
311
319
  }
312
320
 
313
321
 
322
+ function customDetection (req) {
323
+ const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
324
+ winston.info("standard ip: "+ip); // ip address of the user
325
+ return ip;
326
+ }
327
+
328
+
329
+ var projectIpFilter = function (req, res, next) {
330
+ // var projectIpFilter = function (err, req, res, next) {
331
+
332
+ // var ip = require('ip');
333
+ // winston.info("projectIpFilter ip2: " + ip.address() );
334
+
335
+
336
+ const nextIp = function(err) {
337
+ winston.info("projectIpFilter next",err);
338
+
339
+ if (err && err.name === "IpDeniedError") {
340
+ winston.info("IpDeniedError");
341
+ return res.status(401).json({ err: "error project ip filter" });
342
+ // next(err)
343
+ }
344
+
345
+ next();
346
+
347
+ }
348
+
349
+
350
+ if (!req.project) {
351
+ return next();
352
+ }
353
+
354
+ var projectIpFilterEnabled = req.project.ipFilterEnabled;
355
+ winston.debug("project projectIpFilterEnabled: " +projectIpFilterEnabled)
356
+
357
+ var projectIpFilter = req.project.ipFilter
358
+ winston.debug("project ipFilter: " + projectIpFilter)
359
+
360
+ if (projectIpFilterEnabled === true && projectIpFilter && projectIpFilter.length > 0) {
361
+ var ip = ipfilter(projectIpFilter, { detectIp: customDetection, mode: 'allow' })
362
+ // var ip = ipfilter(projectIpFilter, { mode: 'allow' })
363
+ ip(req, res, nextIp);
364
+ } else {
365
+ next();
366
+ }
367
+
368
+ }
314
369
 
315
370
 
316
371
 
@@ -322,6 +377,7 @@ var projectSetter = function (req, res, next) {
322
377
  // app.post('/oauth/token', oauth2.token);
323
378
 
324
379
 
380
+ // const ips = ['::1'];
325
381
 
326
382
  app.use('/auth', auth);
327
383
  app.use('/testauth', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken], authtest);
@@ -355,7 +411,7 @@ if (modulesManager) {
355
411
  }
356
412
 
357
413
 
358
- app.use('/:projectid/', [projectIdSetter, projectSetter]);
414
+ app.use('/:projectid/', [projectIdSetter, projectSetter, projectIpFilter]);
359
415
 
360
416
 
361
417
  app.use('/:projectid/authtestWithRoleCheck', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken], authtestWithRoleCheck);
@@ -447,8 +503,22 @@ app.use(function (err, req, res, next) {
447
503
  });*/
448
504
 
449
505
 
506
+
507
+
508
+
509
+
510
+
511
+
512
+
450
513
  // error handler
451
514
  app.use((err, req, res, next) => {
515
+
516
+ winston.info("err.name", err.name)
517
+ if (err.name === "IpDeniedError") {
518
+ winston.info("IpDeniedError");
519
+ return res.status(401).json({ err: "error ip filter" });
520
+ }
521
+
452
522
  winston.error("General error", err);
453
523
  return res.status(500).json({ err: "error" });
454
524
  });
package/bin/www CHANGED
@@ -32,7 +32,10 @@ webSocketServer.init(httpServer);
32
32
  * Listen on provided port, on all network interfaces.
33
33
  */
34
34
 
35
- var listener = httpServer.listen(port,function(){
35
+ // use ipv4 or ipv6 https://stackoverflow.com/questions/50855419/get-only-ipv4-ips-via-nodejs-express
36
+ // var listener = httpServer.listen(port,'0.0.0.0', function(){
37
+
38
+ var listener = httpServer.listen(port, function(){
36
39
  console.log('Listening tiledesk-server ver:'+version+' on port ' + listener.address().port); //Listening on port 8888
37
40
  });
38
41
 
package/config/email.js CHANGED
@@ -2,7 +2,7 @@ module.exports = {
2
2
  'host':'smtp.mailgun.org',
3
3
  'username': 'postmaster@mg.tiledesk.com',
4
4
  'from': 'Tiledesk Notification <postmaster@mg.tiledesk.com>',
5
- 'bcc': 'tiledesknotification@frontiere21.it',
5
+ 'bcc': '',
6
6
  'baseUrl':'https://console.tiledesk.com/v2/dashboard',
7
7
  'replyEnabled' : false,
8
8
  'inboundDomain': 'tickets.tiledesk.com'
package/config/global.js CHANGED
@@ -1,3 +1,5 @@
1
1
  module.exports = {
2
2
  'apiUrl':'http://localhost:3000',
3
+ 'organizationBaseUrl' : 'org.local',
4
+ 'organizationEnabled' : false
3
5
  };