Skip to content

Commit

Permalink
Merge pull request #79 from mountaindude/75-qseow-app-script
Browse files Browse the repository at this point in the history
fix(qseow): Error when multiple Node-RED instances run in parallel
  • Loading branch information
mountaindude committed Sep 18, 2023
2 parents 2e050d8 + 5be3f63 commit 057dec6
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
10 changes: 10 additions & 0 deletions src/lib/qseow/app.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const axios = require('axios');
const enigma = require('enigma.js');
const SenseUtilities = require('enigma.js/sense-utilities');

const { getTags, getAppTags } = require('./tag');
const { getAuth, getEnigmaAuth } = require('./auth');
Expand Down Expand Up @@ -781,6 +782,15 @@ async function getAppLoadScript(node, appIdsToGet) {
appIdNoExist.push(appId);
} else {
node.log(`App ${appId} exists on the Qlik Sense server`);

// Do final config of enigmaConfig
enigmaConfig.url = SenseUtilities.buildUrl({
secure: node.senseServer.engineProtocol === 'wss',
host: node.senseServer.engineHost,
port: node.senseServer.enginePort,
appId,
});

// Get app object
let appObj;
try {
Expand Down
10 changes: 7 additions & 3 deletions src/lib/qseow/auth.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');
const crypto = require('crypto');

const { getXref } = require('../misc/xref');
const { getHeaders } = require('./header');
Expand Down Expand Up @@ -197,6 +198,9 @@ function getEnigmaAuth(node) {
node.log(`Combined cert: " ${combinedCert}`);
}

// Create random session id. It should be in hex format and have a length of 12 characters
const sessionId = crypto.randomBytes(12).toString('hex');

// Only use the cert CA file if it is specified
if (node.senseServer.certCaFile !== '') {
node.log('Using root CA file');
Expand All @@ -208,7 +212,6 @@ function getEnigmaAuth(node) {
enigmaConfig = {
schema: qixSchema,
url: `${node.senseServer.engineProtocol}://${node.senseServer.engineHost}:${node.senseServer.enginePort}`,
// url: `wss://${node.senseServer.qrsHost}:${node.senseServer.qrsPort}`,
createSocket: (url) =>
new WebSocket(url, {
cert: clientCert,
Expand All @@ -218,6 +221,7 @@ function getEnigmaAuth(node) {
'X-Qlik-User': 'UserDirectory=Internal;UserId=sa_api',
},
rejectUnauthorized: node.senseServer.rejectUnauthorized,
identity: sessionId,
}),
};
} else {
Expand All @@ -240,8 +244,7 @@ function getEnigmaAuth(node) {

enigmaConfig = {
schema: qixSchema,
url: `wss://${node.senseServer.qrsHost}:4747`,
// url: `wss://${node.senseServer.qrsHost}:${node.senseServer.qrsPort}`,
url: `${node.senseServer.engineProtocol}://${node.senseServer.engineHost}:${node.senseServer.enginePort}`,
createSocket: (url) =>
new WebSocket(url, {
cert: clientCert,
Expand All @@ -250,6 +253,7 @@ function getEnigmaAuth(node) {
'X-Qlik-User': 'UserDirectory=Internal;UserId=sa_api',
},
rejectUnauthorized: node.senseServer.rejectUnauthorized,
identity: sessionId,
}),
};
}
Expand Down

0 comments on commit 057dec6

Please sign in to comment.