cloudcms-server 0.9.256 → 0.9.261
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/README.md +1 -1
- package/broadcast/providers/redis.js +24 -49
- package/clients/nrp.js +117 -0
- package/clients/redis.js +64 -0
- package/launchpad/index.js +161 -11
- package/launchpad/launchers/cluster.js +87 -109
- package/launchpad/launchers/redis.js +53 -0
- package/launchpad/launchers/single.js +30 -22
- package/locks/locks.js +4 -3
- package/locks/providers/cluster.js +1 -1
- package/locks/providers/memory.js +1 -1
- package/locks/providers/redis.js +62 -61
- package/middleware/admin/admin.js +2 -2
- package/middleware/authentication/providers/saml.js +2 -1
- package/middleware/awareness/awareness.js +12 -2
- package/middleware/awareness/providers/redis.js +224 -179
- package/middleware/cache/providers/redis.js +125 -68
- package/middleware/cloudcms/cloudcms.js +5 -1
- package/middleware/proxy/proxy.js +2 -1
- package/middleware/stores/stores.js +2 -2
- package/middleware/virtual-config/virtual-config.js +4 -4
- package/middleware/wcm/wcm.js +4 -4
- package/package.json +11 -7
- package/server/index.js +622 -591
- package/temp/clusterlock/index.js +2 -0
- package/temp/passport-saml/LICENSE +23 -0
- package/temp/passport-saml/README.md +406 -0
- package/temp/passport-saml/lib/node-saml/algorithms.d.ts +5 -0
- package/temp/passport-saml/lib/node-saml/algorithms.js +41 -0
- package/temp/passport-saml/lib/node-saml/algorithms.js.map +1 -0
- package/temp/passport-saml/lib/node-saml/index.d.ts +3 -0
- package/temp/passport-saml/lib/node-saml/index.js +6 -0
- package/temp/passport-saml/lib/node-saml/index.js.map +1 -0
- package/temp/passport-saml/lib/node-saml/inmemory-cache-provider.d.ts +45 -0
- package/temp/passport-saml/lib/node-saml/inmemory-cache-provider.js +86 -0
- package/temp/passport-saml/lib/node-saml/inmemory-cache-provider.js.map +1 -0
- package/temp/passport-saml/lib/node-saml/saml-post-signing.d.ts +3 -0
- package/temp/passport-saml/lib/node-saml/saml-post-signing.js +15 -0
- package/temp/passport-saml/lib/node-saml/saml-post-signing.js.map +1 -0
- package/temp/passport-saml/lib/node-saml/saml.d.ts +77 -0
- package/temp/passport-saml/lib/node-saml/saml.js +1170 -0
- package/temp/passport-saml/lib/node-saml/saml.js.map +1 -0
- package/temp/passport-saml/lib/node-saml/types.d.ts +95 -0
- package/temp/passport-saml/lib/node-saml/types.js +8 -0
- package/temp/passport-saml/lib/node-saml/types.js.map +1 -0
- package/temp/passport-saml/lib/node-saml/utility.d.ts +3 -0
- package/temp/passport-saml/lib/node-saml/utility.js +19 -0
- package/temp/passport-saml/lib/node-saml/utility.js.map +1 -0
- package/temp/passport-saml/lib/node-saml/xml.d.ts +21 -0
- package/temp/passport-saml/lib/node-saml/xml.js +140 -0
- package/temp/passport-saml/lib/node-saml/xml.js.map +1 -0
- package/temp/passport-saml/lib/passport-saml/index.d.ts +6 -0
- package/temp/passport-saml/lib/passport-saml/index.js +11 -0
- package/temp/passport-saml/lib/passport-saml/index.js.map +1 -0
- package/temp/passport-saml/lib/passport-saml/multiSamlStrategy.d.ts +13 -0
- package/temp/passport-saml/lib/passport-saml/multiSamlStrategy.js +63 -0
- package/temp/passport-saml/lib/passport-saml/multiSamlStrategy.js.map +1 -0
- package/temp/passport-saml/lib/passport-saml/strategy.d.ts +20 -0
- package/temp/passport-saml/lib/passport-saml/strategy.js +167 -0
- package/temp/passport-saml/lib/passport-saml/strategy.js.map +1 -0
- package/temp/passport-saml/lib/passport-saml/types.d.ts +51 -0
- package/temp/passport-saml/lib/passport-saml/types.js +11 -0
- package/temp/passport-saml/lib/passport-saml/types.js.map +1 -0
- package/temp/passport-saml/package.json +96 -0
- package/util/auth.js +1 -1
- package/util/cloudcms.js +6 -6
- package/util/proxy-factory.js +22 -7
- package/util/redis.js +51 -1
- package/util/util.js +1 -1
- package/launchpad/launchers/sticky-cluster.js +0 -43
|
@@ -1,132 +1,152 @@
|
|
|
1
1
|
var AbstractAsyncProvider = require("./abstract-async");
|
|
2
2
|
|
|
3
|
-
var redis = require("redis");
|
|
3
|
+
//var redis = require("redis");
|
|
4
4
|
var async = require("async");
|
|
5
5
|
|
|
6
6
|
var logFactory = require("../../../util/logger");
|
|
7
|
-
var redisHelper = require("../../../util/redis");
|
|
7
|
+
//var redisHelper = require("../../../util/redis");
|
|
8
|
+
|
|
9
|
+
var redisClientFactory = require("../../../clients/redis");
|
|
10
|
+
const redisHelper = require("../../../util/redis");
|
|
8
11
|
|
|
9
12
|
class RedisProvider extends AbstractAsyncProvider
|
|
10
13
|
{
|
|
11
14
|
constructor(config)
|
|
12
15
|
{
|
|
13
16
|
super(config);
|
|
14
|
-
|
|
15
|
-
this.logger =
|
|
16
|
-
|
|
17
|
-
// allow for global redis default
|
|
18
|
-
// allow for redis broadcast specific
|
|
19
|
-
// otherwise default to error
|
|
20
|
-
if (typeof(process.env.CLOUDCMS_REDIS_DEBUG_LEVEL) !== "undefined") {
|
|
21
|
-
this.logger.setLevel(("" + process.env.CLOUDCMS_REDIS_DEBUG_LEVEL).toLowerCase(), true);
|
|
22
|
-
}
|
|
23
|
-
else if (typeof(process.env.CLOUDCMS_AWARENESS_REDIS_DEBUG_LEVEL) !== "undefined") {
|
|
24
|
-
this.logger.setLevel(("" + process.env.CLOUDCMS_AWARENESS_REDIS_DEBUG_LEVEL).toLowerCase(), true);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
this.logger.setLevel("error");
|
|
28
|
-
}
|
|
17
|
+
|
|
18
|
+
this.logger = redisHelper.redisLogger("REDIS_AWARENESS", "CLOUDCMS_AWARENESS_", "error")
|
|
29
19
|
}
|
|
30
20
|
|
|
31
21
|
init(callback)
|
|
32
22
|
{
|
|
33
23
|
var self = this;
|
|
24
|
+
|
|
25
|
+
redisClientFactory.create(config, function(err, _client) {
|
|
26
|
+
|
|
27
|
+
if (err) {
|
|
28
|
+
return callback(err);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
self.client = _client;
|
|
32
|
+
|
|
33
|
+
return callback();
|
|
34
|
+
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
(async function() {
|
|
38
|
+
var redisOptions = redisHelper.redisOptions(this.config, "CLOUDCMS_AWARENESS");
|
|
39
|
+
await redisHelper.createAndConnect(redisOptions, function(err, _client) {
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.client = redis.createClient(redisOptions);
|
|
38
|
-
|
|
39
|
-
callback();
|
|
41
|
+
});
|
|
42
|
+
})();
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
readOrCreateChannel(channelId, callback)
|
|
43
46
|
{
|
|
44
47
|
var self = this;
|
|
48
|
+
|
|
49
|
+
(async function() {
|
|
45
50
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (err) {
|
|
49
|
-
return callback(err);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (channelJsonText)
|
|
53
|
-
{
|
|
54
|
-
var channel = JSON.parse("" + channelJsonText);
|
|
55
|
-
return callback(null, channel);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
var channel = {};
|
|
59
|
-
self.client.set("channel-" + channelId, JSON.stringify(channel), function(err) {
|
|
60
|
-
|
|
51
|
+
await self.client.get("channel-" + channelId, function(err, channelJsonText) {
|
|
52
|
+
|
|
61
53
|
if (err) {
|
|
62
54
|
return callback(err);
|
|
63
55
|
}
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
|
|
57
|
+
if (channelJsonText)
|
|
58
|
+
{
|
|
59
|
+
var channel = JSON.parse("" + channelJsonText);
|
|
60
|
+
return callback(null, channel);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
(async function() {
|
|
64
|
+
var channel = {};
|
|
65
|
+
await self.client.set("channel-" + channelId, JSON.stringify(channel), function (err) {
|
|
66
|
+
|
|
67
|
+
if (err) {
|
|
68
|
+
return callback(err);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
callback(null, channel);
|
|
72
|
+
});
|
|
73
|
+
})();
|
|
66
74
|
});
|
|
67
|
-
|
|
75
|
+
|
|
76
|
+
})();
|
|
68
77
|
};
|
|
69
78
|
|
|
70
79
|
readChannel(channelId, callback)
|
|
71
80
|
{
|
|
72
81
|
var self = this;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
|
|
83
|
+
(async function() {
|
|
84
|
+
|
|
85
|
+
await self.client.get("channel-" + channelId, function(err, channelJsonText) {
|
|
86
|
+
|
|
87
|
+
if (err) {
|
|
88
|
+
return callback(err);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (channelJsonText)
|
|
92
|
+
{
|
|
93
|
+
var channel = JSON.parse("" + channelJsonText);
|
|
94
|
+
return callback(null, channel);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
callback();
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
})();
|
|
88
101
|
};
|
|
89
102
|
|
|
90
103
|
writeChannel(channelId, channel, callback)
|
|
91
104
|
{
|
|
92
105
|
var self = this;
|
|
106
|
+
|
|
107
|
+
(async function() {
|
|
93
108
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
109
|
+
await self.client.set("channel-" + channelId, JSON.stringify(channel), function(err) {
|
|
110
|
+
|
|
111
|
+
if (err) {
|
|
112
|
+
return callback(err);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
callback();
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
})();
|
|
102
119
|
};
|
|
103
120
|
|
|
104
121
|
listChannelIds(callback)
|
|
105
122
|
{
|
|
106
123
|
var self = this;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
var
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
|
|
125
|
+
(async function() {
|
|
126
|
+
|
|
127
|
+
// fetch all keys for channels
|
|
128
|
+
await self.client.keys("channel-*", function(err, channelKeys) {
|
|
129
|
+
|
|
130
|
+
if (err)
|
|
131
|
+
{
|
|
132
|
+
return callback(err);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (!channelKeys || channelKeys.length === 0)
|
|
136
|
+
{
|
|
137
|
+
return callback(null, []);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
var channelIds = [];
|
|
141
|
+
for (var i = 0; i < channelKeys.length; i++)
|
|
142
|
+
{
|
|
143
|
+
var channelId = channelKeys[i].substring(channelKeys[i].indexOf("-") + 1);
|
|
144
|
+
channelIds.push(channelId);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
callback(null, channelIds);
|
|
148
|
+
});
|
|
149
|
+
})();
|
|
130
150
|
};
|
|
131
151
|
|
|
132
152
|
/**
|
|
@@ -221,106 +241,126 @@ class RedisProvider extends AbstractAsyncProvider
|
|
|
221
241
|
readLock(lockId, callback)
|
|
222
242
|
{
|
|
223
243
|
var self = this;
|
|
244
|
+
|
|
245
|
+
(async function() {
|
|
224
246
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
247
|
+
await self.client.get("lock-" + lockId, function(err, lockJsonText) {
|
|
248
|
+
|
|
249
|
+
if (err) {
|
|
250
|
+
return callback(err);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (lockJsonText)
|
|
254
|
+
{
|
|
255
|
+
var lock = JSON.parse("" + lockJsonText);
|
|
256
|
+
return callback(null, lock);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
callback();
|
|
260
|
+
});
|
|
261
|
+
})();
|
|
239
262
|
};
|
|
240
263
|
|
|
241
264
|
writeLock(lockId, lock, callback)
|
|
242
265
|
{
|
|
243
266
|
var self = this;
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
267
|
+
|
|
268
|
+
(async function() {
|
|
269
|
+
|
|
270
|
+
await self.client.set("lock-" + lockId, JSON.stringify(lock), function(err) {
|
|
271
|
+
|
|
272
|
+
if (err) {
|
|
273
|
+
return callback(err);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
callback();
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
})();
|
|
253
280
|
};
|
|
254
281
|
|
|
255
282
|
deleteLock(lockId, callback)
|
|
256
283
|
{
|
|
257
284
|
var self = this;
|
|
285
|
+
|
|
286
|
+
(async function() {
|
|
287
|
+
|
|
288
|
+
await self.client.del("lock-" + lockId, function(err) {
|
|
258
289
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
});
|
|
290
|
+
if (err) {
|
|
291
|
+
return callback(err);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
callback();
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
})();
|
|
267
298
|
};
|
|
268
299
|
|
|
269
300
|
listLockIds(callback)
|
|
270
301
|
{
|
|
271
302
|
var self = this;
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
var
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
303
|
+
|
|
304
|
+
(async function() {
|
|
305
|
+
|
|
306
|
+
// fetch all keys for locks
|
|
307
|
+
await self.client.keys("lock-*", function(err, lockKeys) {
|
|
308
|
+
|
|
309
|
+
if (err)
|
|
310
|
+
{
|
|
311
|
+
return callback(err);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
if (!lockKeys || lockKeys.length === 0)
|
|
315
|
+
{
|
|
316
|
+
return callback(null, []);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
var lockIds = [];
|
|
320
|
+
for (var i = 0; i < lockKeys.length; i++)
|
|
321
|
+
{
|
|
322
|
+
var lockId = lockKeys[i].substring(0, lockKeys[i].indexOf("-"));
|
|
323
|
+
lockIds.push(lockId);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
callback(null, lockIds);
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
})();
|
|
295
330
|
};
|
|
296
331
|
|
|
297
332
|
acquireSession(sessionId, callback)
|
|
298
333
|
{
|
|
299
334
|
var self = this;
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
if (sessionJsonText)
|
|
308
|
-
{
|
|
309
|
-
var session = JSON.parse("" + sessionJsonText);
|
|
310
|
-
return callback(null, session);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// create a new session
|
|
314
|
-
var session = {};
|
|
315
|
-
self.client.set("session-" + sessionId, JSON.stringify(session), function(err) {
|
|
316
|
-
|
|
335
|
+
|
|
336
|
+
(async function() {
|
|
337
|
+
|
|
338
|
+
await self.client.get("session-" + sessionId, function(err, sessionJsonText) {
|
|
339
|
+
|
|
317
340
|
if (err) {
|
|
318
341
|
return callback(err);
|
|
319
342
|
}
|
|
320
|
-
|
|
321
|
-
|
|
343
|
+
|
|
344
|
+
if (sessionJsonText)
|
|
345
|
+
{
|
|
346
|
+
var session = JSON.parse("" + sessionJsonText);
|
|
347
|
+
return callback(null, session);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// create a new session
|
|
351
|
+
(async function() {
|
|
352
|
+
var session = {};
|
|
353
|
+
await self.client.set("session-" + sessionId, JSON.stringify(session), function(err) {
|
|
354
|
+
|
|
355
|
+
if (err) {
|
|
356
|
+
return callback(err);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
callback(null, session);
|
|
360
|
+
});
|
|
361
|
+
})();
|
|
322
362
|
});
|
|
323
|
-
});
|
|
363
|
+
})();
|
|
324
364
|
}
|
|
325
365
|
|
|
326
366
|
updateSession(sessionId, session, callback)
|
|
@@ -330,30 +370,35 @@ class RedisProvider extends AbstractAsyncProvider
|
|
|
330
370
|
if (!session) {
|
|
331
371
|
session = {};
|
|
332
372
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
373
|
+
|
|
374
|
+
(async function() {
|
|
375
|
+
|
|
376
|
+
// create a new session
|
|
377
|
+
await self.client.set("session-" + sessionId, JSON.stringify(session), function (err) {
|
|
378
|
+
|
|
379
|
+
if (err) {
|
|
380
|
+
return callback(err);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
callback(null, session);
|
|
384
|
+
});
|
|
385
|
+
})();
|
|
343
386
|
}
|
|
344
387
|
|
|
345
388
|
deleteSession(sessionId, callback)
|
|
346
389
|
{
|
|
347
390
|
var self = this;
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
391
|
+
|
|
392
|
+
(async function() {
|
|
393
|
+
await self.client.del("session-" + sessionId, function (err) {
|
|
394
|
+
|
|
395
|
+
if (err) {
|
|
396
|
+
return callback(err);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
callback();
|
|
400
|
+
});
|
|
401
|
+
})();
|
|
357
402
|
}
|
|
358
403
|
|
|
359
404
|
}
|