cloudcms-server 3.3.1-beta.9 → 4.0.0-beta.1
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/LICENSE +1 -1
- package/README.md +1 -1
- package/broadcast/broadcast.js +6 -3
- package/broadcast/providers/redis.js +24 -49
- package/clients/nrp.js +117 -0
- package/clients/redis.js +64 -0
- package/d1/index.js +629 -0
- package/d1/index.js.works +203 -0
- package/d1/package.json +86 -0
- package/d1/package.json.works +14 -0
- package/duster/helpers/sample/nyt.js +2 -1
- package/framework/controllers.js +4 -4
- package/index.js +21 -14
- package/insight/insight.js +1 -1
- package/launchpad/index.js +203 -11
- package/launchpad/launchers/cluster.js +103 -110
- package/launchpad/launchers/redis.js +70 -0
- package/launchpad/launchers/single.js +36 -22
- package/locks/locks.js +63 -9
- package/locks/providers/cluster.js +3 -1
- package/locks/providers/memory.js +10 -7
- package/locks/providers/redis.js +62 -82
- package/middleware/admin/admin.js +3 -3
- package/middleware/authentication/adapters/session.js +11 -8
- package/middleware/authentication/authentication.js +28 -16
- package/middleware/authentication/authenticators/default.js +5 -2
- package/middleware/authentication/authenticators/session.js +5 -2
- package/middleware/authentication/providers/saml.js +1 -1
- package/middleware/authorization/authorization.js +11 -8
- package/middleware/awareness/awareness.js +55 -31
- package/middleware/awareness/plugins/editorial.js +4 -4
- package/middleware/awareness/providers/abstract-async.js +107 -84
- package/middleware/awareness/providers/abstract.js +1 -1
- package/middleware/awareness/providers/memory.js +0 -14
- package/middleware/awareness/providers/redis.js +186 -279
- package/middleware/cache/cache.js +4 -2
- package/middleware/cache/providers/redis.js +127 -89
- package/middleware/cache/providers/shared-memory.js +3 -3
- package/middleware/cloudcms/cloudcms.js +22 -16
- package/middleware/form/form.js +3 -3
- package/middleware/modules/modules.js +6 -3
- package/middleware/proxy/proxy.js +8 -21
- package/middleware/stores/stores.js +2 -2
- package/middleware/virtual-config/virtual-config.js +11 -8
- package/middleware/wcm/wcm.js +4 -4
- package/notifications/notifications.js +2 -2
- package/package.json +29 -25
- package/server/index.js +504 -415
- package/server/standalone.js +9 -0
- package/temp/clusterlock/index.js +3 -3
- package/temp/clusterlock/package.json +1 -1
- 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 +6 -6
- package/util/cloudcms.js +85 -88
- package/util/proxy-factory.js +159 -268
- package/util/redis.js +113 -0
- package/util/renditions.js +12 -6
- package/util/request.js +4 -4
- package/util/util.js +16 -2
- package/launchpad/launchers/sticky-cluster.js +0 -43
- package/temp/memored/.jshintrc +0 -4
- package/temp/memored/README.md +0 -240
- package/temp/memored/demo/demo1.js +0 -37
- package/temp/memored/demo/demo2.js +0 -32
- package/temp/memored/gulpfile.js +0 -8
- package/temp/memored/index.js +0 -343
- package/temp/memored/package.json +0 -54
- package/temp/memored/spec/memored.spec.js +0 -265
- package/web/cms/ice.js +0 -109
- package/web/cms/preview.js +0 -106
|
@@ -1,378 +1,285 @@
|
|
|
1
1
|
var AbstractAsyncProvider = require("./abstract-async");
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var logFactory = require("../../../util/logger");
|
|
3
|
+
var redisClientFactory = require("../../../clients/redis");
|
|
4
|
+
const redisHelper = require("../../../util/redis");
|
|
7
5
|
|
|
8
6
|
class RedisProvider extends AbstractAsyncProvider
|
|
9
7
|
{
|
|
10
8
|
constructor(config)
|
|
11
9
|
{
|
|
12
10
|
super(config);
|
|
13
|
-
|
|
14
|
-
this.logger =
|
|
15
|
-
|
|
16
|
-
// allow for global redis default
|
|
17
|
-
// allow for redis broadcast specific
|
|
18
|
-
// otherwise default to error
|
|
19
|
-
if (typeof(process.env.CLOUDCMS_REDIS_DEBUG_LEVEL) !== "undefined") {
|
|
20
|
-
this.logger.setLevel(("" + process.env.CLOUDCMS_REDIS_DEBUG_LEVEL).toLowerCase(), true);
|
|
21
|
-
}
|
|
22
|
-
else if (typeof(process.env.CLOUDCMS_AWARENESS_REDIS_DEBUG_LEVEL) !== "undefined") {
|
|
23
|
-
this.logger.setLevel(("" + process.env.CLOUDCMS_AWARENESS_REDIS_DEBUG_LEVEL).toLowerCase(), true);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
this.logger.setLevel("error");
|
|
27
|
-
}
|
|
11
|
+
|
|
12
|
+
this.logger = redisHelper.redisLogger("REDIS_AWARENESS", "CLOUDCMS_AWARENESS_", "error")
|
|
28
13
|
}
|
|
29
14
|
|
|
30
15
|
init(callback)
|
|
31
16
|
{
|
|
32
17
|
var self = this;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
{
|
|
37
|
-
redisPort = process.env.CLOUDCMS_AWARENESS_REDIS_PORT;
|
|
38
|
-
}
|
|
39
|
-
if (typeof(redisPort) === "undefined" || !redisPort)
|
|
40
|
-
{
|
|
41
|
-
redisPort = process.env.CLOUDCMS_REDIS_PORT;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
var redisHost = this.config.host;
|
|
45
|
-
if (typeof(redisHost) === "undefined" || !redisHost)
|
|
46
|
-
{
|
|
47
|
-
redisHost = process.env.CLOUDCMS_AWARENESS_REDIS_ENDPOINT;
|
|
48
|
-
}
|
|
49
|
-
if (typeof(redisHost) === "undefined" || !redisHost)
|
|
50
|
-
{
|
|
51
|
-
redisHost = process.env.CLOUDCMS_REDIS_ENDPOINT;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
var redisOptions = {};
|
|
55
|
-
|
|
56
|
-
this.client = redis.createClient(redisPort, redisHost, redisOptions);
|
|
57
|
-
|
|
58
|
-
callback();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
readOrCreateChannel(channelId, callback)
|
|
62
|
-
{
|
|
63
|
-
var self = this;
|
|
64
|
-
|
|
65
|
-
self.client.get("channel-" + channelId, function(err, channelJsonText) {
|
|
66
|
-
|
|
18
|
+
|
|
19
|
+
redisClientFactory.create(self.config, function(err, _client) {
|
|
20
|
+
|
|
67
21
|
if (err) {
|
|
68
22
|
return callback(err);
|
|
69
23
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
var channel = {};
|
|
78
|
-
self.client.set("channel-" + channelId, JSON.stringify(channel), function(err) {
|
|
79
|
-
|
|
80
|
-
if (err) {
|
|
81
|
-
return callback(err);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
callback(null, channel);
|
|
85
|
-
});
|
|
24
|
+
|
|
25
|
+
self.client = _client;
|
|
26
|
+
|
|
27
|
+
return callback();
|
|
28
|
+
|
|
86
29
|
});
|
|
87
|
-
}
|
|
30
|
+
}
|
|
88
31
|
|
|
89
32
|
readChannel(channelId, callback)
|
|
90
33
|
{
|
|
91
34
|
var self = this;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
35
|
+
|
|
36
|
+
(async function() {
|
|
37
|
+
|
|
38
|
+
try
|
|
39
|
+
{
|
|
40
|
+
var channel = null;
|
|
41
|
+
|
|
42
|
+
var channelJsonText = await self.client.get("channel-" + channelId);
|
|
43
|
+
if (channelJsonText)
|
|
44
|
+
{
|
|
45
|
+
channel = JSON.parse("" + channelJsonText);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
callback(null, channel);
|
|
97
49
|
}
|
|
98
|
-
|
|
99
|
-
if (channelJsonText)
|
|
50
|
+
catch (err)
|
|
100
51
|
{
|
|
101
|
-
|
|
102
|
-
return callback(null, channel);
|
|
52
|
+
return callback(err);
|
|
103
53
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
});
|
|
54
|
+
|
|
55
|
+
})();
|
|
107
56
|
};
|
|
108
57
|
|
|
109
58
|
writeChannel(channelId, channel, callback)
|
|
110
59
|
{
|
|
111
60
|
var self = this;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
61
|
+
|
|
62
|
+
(async function() {
|
|
63
|
+
|
|
64
|
+
try
|
|
65
|
+
{
|
|
66
|
+
await self.client.set("channel-" + channelId, JSON.stringify(channel));
|
|
67
|
+
|
|
68
|
+
callback();
|
|
69
|
+
}
|
|
70
|
+
catch (err)
|
|
71
|
+
{
|
|
116
72
|
return callback(err);
|
|
117
73
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
});
|
|
74
|
+
|
|
75
|
+
})();
|
|
121
76
|
};
|
|
122
77
|
|
|
123
78
|
listChannelIds(callback)
|
|
124
79
|
{
|
|
125
80
|
var self = this;
|
|
81
|
+
|
|
82
|
+
(async function() {
|
|
126
83
|
|
|
127
|
-
|
|
128
|
-
self.client.keys("channel-*", function(err, channelKeys) {
|
|
129
|
-
|
|
130
|
-
if (err)
|
|
131
|
-
{
|
|
132
|
-
return callback(err);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (!channelKeys || channelKeys.length === 0)
|
|
84
|
+
try
|
|
136
85
|
{
|
|
137
|
-
|
|
86
|
+
var channelKeys = await self.client.keys("channel-*");
|
|
87
|
+
if (!channelKeys || channelKeys.length === 0)
|
|
88
|
+
{
|
|
89
|
+
return callback(null, []);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
var channelIds = [];
|
|
93
|
+
for (var i = 0; i < channelKeys.length; i++)
|
|
94
|
+
{
|
|
95
|
+
var channelId = channelKeys[i].substring(channelKeys[i].indexOf("-") + 1);
|
|
96
|
+
channelIds.push(channelId);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
callback(null, channelIds);
|
|
138
100
|
}
|
|
139
|
-
|
|
140
|
-
var channelIds = [];
|
|
141
|
-
for (var i = 0; i < channelKeys.length; i++)
|
|
101
|
+
catch (err)
|
|
142
102
|
{
|
|
143
|
-
|
|
144
|
-
channelIds.push(channelId);
|
|
103
|
+
callback(err);
|
|
145
104
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
});
|
|
105
|
+
|
|
106
|
+
})();
|
|
149
107
|
};
|
|
150
108
|
|
|
151
|
-
|
|
152
|
-
* @override
|
|
153
|
-
*/
|
|
154
|
-
expire(beforeMs, callback)
|
|
109
|
+
readLock(lockId, callback)
|
|
155
110
|
{
|
|
156
111
|
var self = this;
|
|
112
|
+
|
|
113
|
+
(async function() {
|
|
157
114
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (err) {
|
|
161
|
-
return callback(err);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
if (!channelIds || channelIds.length === 0) {
|
|
165
|
-
return callback(null, [], {});
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// a list of channel IDs whose memberships were updated
|
|
169
|
-
var updatedMembershipChannelIds = [];
|
|
170
|
-
var expiredUserIdsByChannelId = {};
|
|
171
|
-
|
|
172
|
-
var fns = [];
|
|
173
|
-
|
|
174
|
-
for (var i = 0; i < channelIds.length; i++)
|
|
115
|
+
try
|
|
175
116
|
{
|
|
176
|
-
var
|
|
177
|
-
|
|
178
|
-
var
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (err) {
|
|
184
|
-
return done(err);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
if (!channel) {
|
|
188
|
-
return done();
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
if (channel.users)
|
|
192
|
-
{
|
|
193
|
-
// populate all of the user IDs that need to be removed
|
|
194
|
-
var userIdsToRemove = [];
|
|
195
|
-
for (var userId in channel.users)
|
|
196
|
-
{
|
|
197
|
-
var entry = channel.users[userId];
|
|
198
|
-
if (entry.time < beforeMs)
|
|
199
|
-
{
|
|
200
|
-
updatedMembershipChannelIds.push(channelId);
|
|
201
|
-
userIdsToRemove.push(userId);
|
|
202
|
-
|
|
203
|
-
var expiredUserIds = expiredUserIdsByChannelId[channelId]
|
|
204
|
-
if (!expiredUserIds) {
|
|
205
|
-
expiredUserIds = expiredUserIdsByChannelId[channelId] = [];
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
expiredUserIds.push(userId);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// remove the user IDs
|
|
213
|
-
for (var i = 0; i < userIdsToRemove.length; i++)
|
|
214
|
-
{
|
|
215
|
-
delete channel.users[userIdsToRemove[i]];
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
self.writeChannel(channelId, channel, function() {
|
|
219
|
-
done();
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
});
|
|
224
|
-
};
|
|
225
|
-
}(channelId, updatedMembershipChannelIds, expiredUserIdsByChannelId, beforeMs);
|
|
226
|
-
fns.push(fn);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
async.parallel(fns, function(err) {
|
|
230
|
-
|
|
231
|
-
if (err) {
|
|
232
|
-
return callback(err);
|
|
117
|
+
var lock = null;
|
|
118
|
+
|
|
119
|
+
var lockJsonText = await self.client.get("lock-" + lockId);
|
|
120
|
+
if (lockJsonText)
|
|
121
|
+
{
|
|
122
|
+
lock = JSON.parse("" + lockJsonText);
|
|
233
123
|
}
|
|
234
|
-
|
|
235
|
-
callback(null,
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
readLock(lockId, callback)
|
|
241
|
-
{
|
|
242
|
-
var self = this;
|
|
243
|
-
|
|
244
|
-
self.client.get("lock-" + lockId, function(err, lockJsonText) {
|
|
245
|
-
|
|
246
|
-
if (err) {
|
|
247
|
-
return callback(err);
|
|
124
|
+
|
|
125
|
+
callback(null, lock);
|
|
248
126
|
}
|
|
249
|
-
|
|
250
|
-
if (lockJsonText)
|
|
127
|
+
catch (err)
|
|
251
128
|
{
|
|
252
|
-
|
|
253
|
-
return callback(null, lock);
|
|
129
|
+
callback(err);
|
|
254
130
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
});
|
|
131
|
+
|
|
132
|
+
})();
|
|
258
133
|
};
|
|
259
134
|
|
|
260
135
|
writeLock(lockId, lock, callback)
|
|
261
136
|
{
|
|
262
137
|
var self = this;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
138
|
+
|
|
139
|
+
(async function() {
|
|
140
|
+
|
|
141
|
+
try
|
|
142
|
+
{
|
|
143
|
+
await self.client.set("lock-" + lockId, JSON.stringify(lock));
|
|
144
|
+
|
|
145
|
+
callback();
|
|
268
146
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
147
|
+
catch (err)
|
|
148
|
+
{
|
|
149
|
+
callback(err);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
})();
|
|
272
153
|
};
|
|
273
154
|
|
|
274
155
|
deleteLock(lockId, callback)
|
|
275
156
|
{
|
|
276
157
|
var self = this;
|
|
158
|
+
|
|
159
|
+
(async function() {
|
|
160
|
+
|
|
161
|
+
try
|
|
162
|
+
{
|
|
163
|
+
await self.client.del("lock-" + lockId);
|
|
277
164
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
if (err) {
|
|
281
|
-
return callback(err);
|
|
165
|
+
callback();
|
|
282
166
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
167
|
+
catch (err)
|
|
168
|
+
{
|
|
169
|
+
callback(err);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
})();
|
|
286
173
|
};
|
|
287
174
|
|
|
288
175
|
listLockIds(callback)
|
|
289
176
|
{
|
|
290
177
|
var self = this;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
if (err)
|
|
296
|
-
{
|
|
297
|
-
return callback(err);
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
if (!lockKeys || lockKeys.length === 0)
|
|
178
|
+
|
|
179
|
+
(async function() {
|
|
180
|
+
|
|
181
|
+
try
|
|
301
182
|
{
|
|
302
|
-
|
|
183
|
+
var lockKeys = await self.client.keys("lock-*");
|
|
184
|
+
if (!lockKeys || lockKeys.length === 0)
|
|
185
|
+
{
|
|
186
|
+
return callback(null, []);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
var lockIds = [];
|
|
190
|
+
for (var i = 0; i < lockKeys.length; i++)
|
|
191
|
+
{
|
|
192
|
+
var lockId = lockKeys[i].substring(0, lockKeys[i].indexOf("-"));
|
|
193
|
+
lockIds.push(lockId);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
callback(null, lockIds);
|
|
303
197
|
}
|
|
304
|
-
|
|
305
|
-
var lockIds = [];
|
|
306
|
-
for (var i = 0; i < lockKeys.length; i++)
|
|
198
|
+
catch (err)
|
|
307
199
|
{
|
|
308
|
-
|
|
309
|
-
lockIds.push(lockId);
|
|
200
|
+
callback(err);
|
|
310
201
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
});
|
|
202
|
+
|
|
203
|
+
})();
|
|
314
204
|
};
|
|
315
205
|
|
|
316
206
|
acquireSession(sessionId, callback)
|
|
317
207
|
{
|
|
318
208
|
var self = this;
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
if (sessionJsonText)
|
|
209
|
+
|
|
210
|
+
(async function() {
|
|
211
|
+
|
|
212
|
+
var session = null;
|
|
213
|
+
|
|
214
|
+
try
|
|
327
215
|
{
|
|
328
|
-
var
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
// create a new session
|
|
333
|
-
var session = {};
|
|
334
|
-
self.client.set("session-" + sessionId, JSON.stringify(session), function(err) {
|
|
335
|
-
|
|
336
|
-
if (err) {
|
|
337
|
-
return callback(err);
|
|
216
|
+
var sessionJsonText = await self.client.get("session-" + sessionId);
|
|
217
|
+
if (sessionJsonText)
|
|
218
|
+
{
|
|
219
|
+
session = JSON.parse("" + sessionJsonText);
|
|
338
220
|
}
|
|
339
|
-
|
|
221
|
+
|
|
222
|
+
if (session)
|
|
223
|
+
{
|
|
224
|
+
return callback(null, session);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// create a new session
|
|
228
|
+
session = {};
|
|
229
|
+
await self.client.set("session-" + sessionId, JSON.stringify(session));
|
|
230
|
+
|
|
340
231
|
callback(null, session);
|
|
341
|
-
}
|
|
342
|
-
|
|
232
|
+
}
|
|
233
|
+
catch (err)
|
|
234
|
+
{
|
|
235
|
+
callback(err);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
})();
|
|
343
239
|
}
|
|
344
240
|
|
|
345
241
|
updateSession(sessionId, session, callback)
|
|
346
242
|
{
|
|
347
243
|
var self = this;
|
|
348
|
-
|
|
244
|
+
|
|
349
245
|
if (!session) {
|
|
350
246
|
session = {};
|
|
351
247
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
248
|
+
|
|
249
|
+
(async function() {
|
|
250
|
+
|
|
251
|
+
try
|
|
252
|
+
{
|
|
253
|
+
await self.client.set("session-" + sessionId, JSON.stringify(session));
|
|
254
|
+
|
|
255
|
+
callback(null, session);
|
|
358
256
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
257
|
+
catch (err)
|
|
258
|
+
{
|
|
259
|
+
callback(err);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
})();
|
|
362
263
|
}
|
|
363
264
|
|
|
364
265
|
deleteSession(sessionId, callback)
|
|
365
266
|
{
|
|
366
267
|
var self = this;
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
268
|
+
|
|
269
|
+
(async function() {
|
|
270
|
+
|
|
271
|
+
try
|
|
272
|
+
{
|
|
273
|
+
await self.client.del("session-" + sessionId);
|
|
274
|
+
|
|
275
|
+
callback();
|
|
372
276
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
277
|
+
catch (err)
|
|
278
|
+
{
|
|
279
|
+
callback(err);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
})();
|
|
376
283
|
}
|
|
377
284
|
|
|
378
285
|
}
|
|
@@ -27,8 +27,10 @@ exports = module.exports = function()
|
|
|
27
27
|
if (!process.env.CLOUDCMS_CACHE_TYPE) {
|
|
28
28
|
|
|
29
29
|
process.env.CLOUDCMS_CACHE_TYPE = "memory";
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
|
|
31
|
+
// auto-configure
|
|
32
|
+
if (process.env.CLOUDCMS_LAUNCHPAD_SETUP === "redis")
|
|
33
|
+
{
|
|
32
34
|
process.env.CLOUDCMS_CACHE_TYPE = "redis";
|
|
33
35
|
}
|
|
34
36
|
}
|