cloudcms-server 0.9.257 → 0.9.260
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 +1 -1
- package/clients/redis.js +18 -2
- 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 +57 -48
- package/middleware/authentication/providers/saml.js +2 -1
- package/middleware/awareness/awareness.js +12 -2
- package/middleware/cache/providers/redis.js +17 -21
- 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 +10 -5
- package/server/index.js +609 -573
- 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/util.js +1 -1
- package/launchpad/launchers/sticky-cluster.js +0 -43
package/README.md
CHANGED
package/clients/redis.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var redis = require("redis");
|
|
1
|
+
//var redis = require("redis");
|
|
2
2
|
var redisHelper = require("../util/redis");
|
|
3
3
|
|
|
4
4
|
var clients = {};
|
|
@@ -10,18 +10,34 @@ var clients = {};
|
|
|
10
10
|
*/
|
|
11
11
|
exports = module.exports = {};
|
|
12
12
|
|
|
13
|
-
var create = exports.create = function(config, callback)
|
|
13
|
+
var create = exports.create = function(config, baseOptions, callback)
|
|
14
14
|
{
|
|
15
15
|
if (typeof(config) === "function") {
|
|
16
16
|
callback = config;
|
|
17
17
|
config = {};
|
|
18
|
+
baseOptions = {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (typeof(baseOptions) === "function") {
|
|
22
|
+
callback = baseOptions;
|
|
23
|
+
baseOptions = {};
|
|
18
24
|
}
|
|
19
25
|
|
|
20
26
|
if (!config) {
|
|
21
27
|
config = {};
|
|
22
28
|
}
|
|
23
29
|
|
|
30
|
+
if (!baseOptions) {
|
|
31
|
+
baseOptions = {};
|
|
32
|
+
}
|
|
33
|
+
|
|
24
34
|
var redisOptions = redisHelper.redisOptions(config);
|
|
35
|
+
if (baseOptions) {
|
|
36
|
+
for (var k in baseOptions) {
|
|
37
|
+
redisOptions[k] = baseOptions[k];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
25
41
|
var url = redisOptions.url;
|
|
26
42
|
|
|
27
43
|
// cached client?
|
package/launchpad/index.js
CHANGED
|
@@ -1,17 +1,167 @@
|
|
|
1
|
-
|
|
1
|
+
const cluster = require("cluster");
|
|
2
|
+
|
|
3
|
+
module.exports = function(type, config, options)
|
|
2
4
|
{
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
options.setup = process.env.CLOUDCMS_LAUNCHPAD_SETUP;
|
|
5
|
+
if (!type) {
|
|
6
|
+
type = process.env.CLOUDCMS_LAUNCHPAD_SETUP;
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
if (!type) {
|
|
9
|
+
type = "single";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
process.env.CLOUDCMS_LAUNCHPAD_SETUP = type
|
|
13
|
+
|
|
14
|
+
var launcherFactory = require("./launchers/" + type);
|
|
15
|
+
if (!launcherFactory)
|
|
16
|
+
{
|
|
17
|
+
throw new Error("Cannot find launcher factory: " + type);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
var launcher = launcherFactory(config);
|
|
21
|
+
|
|
22
|
+
var reportFn = options.report;
|
|
23
|
+
if (!reportFn) {
|
|
24
|
+
options.report = reportFn = function () {};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var completionFn = options.complete;
|
|
28
|
+
if (!completionFn) {
|
|
29
|
+
options.complete = completionFn = function(err) {
|
|
30
|
+
throw new Error(err);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var fork = true;
|
|
35
|
+
if (type === "single") {
|
|
36
|
+
fork = false;
|
|
11
37
|
}
|
|
38
|
+
|
|
39
|
+
if (!fork)
|
|
40
|
+
{
|
|
41
|
+
return launchWorker(launcher, config, options, function(err, app, httpServer) {
|
|
42
|
+
|
|
43
|
+
if (err) {
|
|
44
|
+
return completionFn(config, err);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
var httpServerPort = -1;
|
|
48
|
+
// if (app) {
|
|
49
|
+
// httpServerPort = app.get("port");
|
|
50
|
+
// }
|
|
51
|
+
if (httpServerPort === -1) {
|
|
52
|
+
httpServerPort = process.env.PORT;
|
|
53
|
+
}
|
|
54
|
+
if (httpServerPort === -1) {
|
|
55
|
+
httpServerPort = 3000;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
httpServer.listen(httpServerPort);
|
|
59
|
+
|
|
60
|
+
reportFn(config);
|
|
61
|
+
completionFn(config);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else
|
|
65
|
+
{
|
|
66
|
+
if (cluster.isMaster)
|
|
67
|
+
{
|
|
68
|
+
return launchMaster(launcher, config, options, function(err, workers) {
|
|
69
|
+
|
|
70
|
+
if (err) {
|
|
71
|
+
return completionFn(config, err);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//reportFn(config);
|
|
75
|
+
completionFn(config);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else
|
|
79
|
+
{
|
|
80
|
+
return launchWorker(launcher, config, options, function(err) {
|
|
81
|
+
completionFn(config, err);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
var launchMaster = function(launcher, config, options, done)
|
|
88
|
+
{
|
|
89
|
+
var createHttpServer = options.createHttpServer;
|
|
90
|
+
|
|
91
|
+
createHttpServer(null, function(err, httpServer) {
|
|
92
|
+
|
|
93
|
+
if (err) {
|
|
94
|
+
return done(err);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
launcher.startCluster(httpServer, function(err) {
|
|
98
|
+
|
|
99
|
+
if (err) {
|
|
100
|
+
return done(err);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
var httpServerPort = -1;
|
|
104
|
+
// if (app) {
|
|
105
|
+
// httpServerPort = app.get("port");
|
|
106
|
+
// }
|
|
107
|
+
if (httpServerPort === -1) {
|
|
108
|
+
httpServerPort = process.env.PORT;
|
|
109
|
+
}
|
|
110
|
+
if (httpServerPort === -1) {
|
|
111
|
+
httpServerPort = 3000;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
httpServer.listen(httpServerPort);
|
|
115
|
+
|
|
116
|
+
launcher.afterStartCluster(httpServer, function(err, workers) {
|
|
117
|
+
done(err, workers);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
};
|
|
12
122
|
|
|
13
|
-
|
|
123
|
+
var launchWorker = function(launcher, config, options, done)
|
|
124
|
+
{
|
|
125
|
+
var startServer = options.startServer;
|
|
126
|
+
|
|
127
|
+
var configureServer = options.configureServer;
|
|
128
|
+
if (!configureServer) {
|
|
129
|
+
options.configureServer = configureServer = function(config, app, httpServer, done) {
|
|
130
|
+
done();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
startServer(config, function(err, app, httpServer) {
|
|
135
|
+
|
|
136
|
+
if (err) {
|
|
137
|
+
return done(err);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
launcher.afterStartServer(app, httpServer, function(err) {
|
|
141
|
+
|
|
142
|
+
if (err) {
|
|
143
|
+
return done(err);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
configureServer(config, app, httpServer, function(err) {
|
|
147
|
+
|
|
148
|
+
if (err) {
|
|
149
|
+
return done(err);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// if we are on a worker process, then inform the master that we completed
|
|
153
|
+
if (process.send) {
|
|
154
|
+
process.send("worker-startup");
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (process.env["CLUSTER_REPORT"])
|
|
158
|
+
{
|
|
159
|
+
var reportFn = options.report;
|
|
160
|
+
reportFn(config);
|
|
161
|
+
}
|
|
14
162
|
|
|
15
|
-
|
|
16
|
-
|
|
163
|
+
done(null, app, httpServer);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
17
167
|
};
|
|
@@ -1,121 +1,99 @@
|
|
|
1
|
-
var cluster = require("cluster");
|
|
2
|
-
var async = require("async");
|
|
3
|
-
|
|
4
1
|
var clusterlock = require("../../temp/clusterlock");
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
const cluster = require("cluster");
|
|
4
|
+
const { Server } = require("socket.io");
|
|
5
|
+
const numCPUs = require("os").cpus().length;
|
|
6
|
+
const { setupMaster, setupWorker } = require("@socket.io/sticky");
|
|
7
|
+
const { createAdapter, setupPrimary } = require("@socket.io/cluster-adapter");
|
|
8
|
+
|
|
9
|
+
module.exports = function(config) {
|
|
10
|
+
|
|
11
|
+
var r = {};
|
|
12
|
+
|
|
13
|
+
r.startCluster = function(httpServer, callback)
|
|
14
|
+
{
|
|
15
|
+
// setup sticky sessions
|
|
16
|
+
setupMaster(httpServer, {
|
|
17
|
+
loadBalancingMethod: "least-connection",
|
|
18
|
+
});
|
|
7
19
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// always take up the max # of CPU's
|
|
11
|
-
var cpuCount = require("os").cpus().length;
|
|
20
|
+
// setup connections between the workers
|
|
21
|
+
setupPrimary();
|
|
12
22
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
var completionCallback = options.complete;
|
|
19
|
-
if (!completionCallback) {
|
|
20
|
-
completionCallback = function() { };
|
|
21
|
-
}
|
|
23
|
+
// needed for packets containing buffers
|
|
24
|
+
cluster.setupPrimary({
|
|
25
|
+
serialization: "advanced"
|
|
26
|
+
});
|
|
22
27
|
|
|
23
|
-
|
|
28
|
+
return callback();
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
r.afterStartCluster = function(httpServer, callback)
|
|
24
32
|
{
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
// start up cluster locks
|
|
34
|
+
clusterlock.setup();
|
|
35
|
+
|
|
36
|
+
var startupCount = 0;
|
|
37
|
+
|
|
38
|
+
var workers = [];
|
|
39
|
+
for (let i = 0; i < numCPUs; i++)
|
|
29
40
|
{
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
var spawn = function (i, afterSpawnFn) {
|
|
34
|
-
|
|
35
|
-
if (!afterSpawnFn) {
|
|
36
|
-
afterSpawnFn = function () { };
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
workers[i] = cluster.fork();
|
|
40
|
-
|
|
41
|
-
workers[i].on('exit', function (worker, workers, i) {
|
|
42
|
-
return function() {
|
|
43
|
-
console.error("launchpad: worker " + i + " exited");
|
|
44
|
-
worker.exited = true;
|
|
45
|
-
|
|
46
|
-
// are all workers exited?
|
|
47
|
-
var all = true;
|
|
48
|
-
for (var z = 0; z < workers.length; z++)
|
|
49
|
-
{
|
|
50
|
-
if (!workers[z].exited) {
|
|
51
|
-
all = false;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (all)
|
|
56
|
-
{
|
|
57
|
-
console.log("launchpad: all workers exited, terminating process");
|
|
58
|
-
return process.exit(-1);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// set a timeout to otherwise restart worker in 5 seconds
|
|
62
|
-
setTimeout(function() {
|
|
63
|
-
console.log("launchpad: restarting worker: " + i);
|
|
64
|
-
spawn(i);
|
|
65
|
-
worker.exited = false;
|
|
66
|
-
}, 5000);
|
|
67
|
-
}
|
|
68
|
-
}(workers[i], workers, i));
|
|
69
|
-
|
|
70
|
-
workers[i].on('message', function (msg, c) {
|
|
71
|
-
|
|
72
|
-
if (msg === "server-startup")
|
|
73
|
-
{
|
|
74
|
-
afterSpawnFn();
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
};
|
|
78
|
-
spawn(i, function () {
|
|
79
|
-
done();
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
}(i, workers);
|
|
83
|
-
fns.push(fn);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
async.parallel(fns, function (err) {
|
|
87
|
-
|
|
88
|
-
// start up cluster locks
|
|
89
|
-
clusterlock.setup();
|
|
90
|
-
|
|
91
|
-
// tell the first worker to report
|
|
92
|
-
if (workers.length > 0)
|
|
93
|
-
{
|
|
94
|
-
workers[0].send("server-report");
|
|
41
|
+
var workerEnv = {};
|
|
42
|
+
if (i === 0) {
|
|
43
|
+
workerEnv["CLUSTER_REPORT"] = true;
|
|
95
44
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
45
|
+
|
|
46
|
+
var worker = cluster.fork(workerEnv);
|
|
47
|
+
|
|
48
|
+
worker.on('message', function (msg, c) {
|
|
49
|
+
if (msg === "worker-startup") {
|
|
50
|
+
startupCount++;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
workers.push(worker);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
cluster.on("exit", (worker) => {
|
|
58
|
+
console.log(`Worker ${worker.process.pid} died`);
|
|
59
|
+
cluster.fork();
|
|
100
60
|
});
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// listen for the "server-report" message and fire the callback
|
|
111
|
-
process.on('message', function (msg, msgData) {
|
|
112
|
-
|
|
113
|
-
if (msg === "server-report")
|
|
61
|
+
|
|
62
|
+
// wait for workers to start
|
|
63
|
+
var waitFn = function() {
|
|
64
|
+
setTimeout(function() {
|
|
65
|
+
if (startupCount >= numCPUs) {
|
|
66
|
+
return callback(null, workers);
|
|
67
|
+
}
|
|
68
|
+
else
|
|
114
69
|
{
|
|
115
|
-
|
|
70
|
+
waitFn();
|
|
116
71
|
}
|
|
117
|
-
|
|
118
|
-
|
|
72
|
+
}, 25);
|
|
73
|
+
};
|
|
74
|
+
waitFn();
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
r.afterStartServer = function(app, httpServer, callback)
|
|
78
|
+
{
|
|
79
|
+
// worker
|
|
80
|
+
|
|
81
|
+
const io = new Server(httpServer);
|
|
82
|
+
|
|
83
|
+
// use the cluster adapter
|
|
84
|
+
io.adapter(createAdapter());
|
|
85
|
+
|
|
86
|
+
// setup connection with the primary process
|
|
87
|
+
setupWorker(io);
|
|
88
|
+
|
|
89
|
+
io.on("connection", (socket) => {
|
|
90
|
+
// TODO
|
|
119
91
|
});
|
|
120
|
-
|
|
121
|
-
|
|
92
|
+
|
|
93
|
+
httpServer.io = io;
|
|
94
|
+
|
|
95
|
+
return callback();
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
return r;
|
|
99
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const { Server } = require("socket.io");
|
|
2
|
+
const { setupWorker } = require("@socket.io/sticky");
|
|
3
|
+
const { createAdapter } = require("@socket.io/cluster-adapter");
|
|
4
|
+
const redisHelper = require("../../util/redis");
|
|
5
|
+
|
|
6
|
+
const clusterLauncherFactory = require("./cluster");
|
|
7
|
+
|
|
8
|
+
module.exports = function(config) {
|
|
9
|
+
|
|
10
|
+
var clusterLauncher = clusterLauncherFactory(config);
|
|
11
|
+
|
|
12
|
+
var r = {};
|
|
13
|
+
|
|
14
|
+
r.startCluster = function(httpServer, callback)
|
|
15
|
+
{
|
|
16
|
+
clusterLauncher.startCluster(httpServer, callback);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
r.afterStartCluster = function(httpServer, callback)
|
|
20
|
+
{
|
|
21
|
+
clusterLauncher.afterStartCluster(httpServer, callback);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
r.afterStartServer = function(app, httpServer, callback)
|
|
25
|
+
{
|
|
26
|
+
const io = new Server(httpServer);
|
|
27
|
+
|
|
28
|
+
(async function() {
|
|
29
|
+
var redisOptions = redisHelper.redisOptions({}, "CLOUDCMS_CLUSTER");
|
|
30
|
+
await redisHelper.createAndConnect(redisOptions, function(err, _client) {
|
|
31
|
+
|
|
32
|
+
const pubClient = _client;
|
|
33
|
+
const subClient = pubClient.duplicate();
|
|
34
|
+
|
|
35
|
+
io.adapter(createAdapter(pubClient, subClient));
|
|
36
|
+
//io.listen(httpServerPort);
|
|
37
|
+
|
|
38
|
+
io.on("connection", (socket) => {
|
|
39
|
+
// TODO
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// setup connection with the primary process
|
|
43
|
+
setupWorker(io);
|
|
44
|
+
|
|
45
|
+
httpServer.io = io;
|
|
46
|
+
|
|
47
|
+
return callback();
|
|
48
|
+
});
|
|
49
|
+
})();
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
return r;
|
|
53
|
+
}
|
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
const { Server } = require("socket.io");
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
};
|
|
3
|
+
module.exports = function(config) {
|
|
4
|
+
|
|
5
|
+
var r = {};
|
|
6
|
+
|
|
7
|
+
r.startCluster = function(httpServer, callback)
|
|
8
|
+
{
|
|
9
|
+
callback();
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
r.afterStartCluster = function(httpServer, callback)
|
|
13
|
+
{
|
|
14
|
+
callback();
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
r.afterStartServer = function(app, httpServer, callback)
|
|
18
|
+
{
|
|
19
|
+
var io = new Server(httpServer);
|
|
20
|
+
|
|
21
|
+
io.on("connection", (socket) => {
|
|
22
|
+
// TODO
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
httpServer.io = io;
|
|
26
|
+
|
|
27
|
+
callback();
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return r;
|
|
31
|
+
}
|
package/locks/locks.js
CHANGED
|
@@ -34,7 +34,8 @@ exports = module.exports = function()
|
|
|
34
34
|
var self = this;
|
|
35
35
|
|
|
36
36
|
// set up defaults
|
|
37
|
-
if (!process.env.CLOUDCMS_LOCKS_TYPE)
|
|
37
|
+
if (!process.env.CLOUDCMS_LOCKS_TYPE)
|
|
38
|
+
{
|
|
38
39
|
process.env.CLOUDCMS_LOCKS_TYPE = "memory";
|
|
39
40
|
|
|
40
41
|
if (process.configuration.setup !== "single") {
|
|
@@ -71,8 +72,8 @@ exports = module.exports = function()
|
|
|
71
72
|
*/
|
|
72
73
|
var lock = r.lock = function(key, fn)
|
|
73
74
|
{
|
|
74
|
-
provider.lock(key, function(releaseFn) {
|
|
75
|
-
fn(function(afterReleaseCallback) {
|
|
75
|
+
provider.lock(key, function(err, releaseFn) {
|
|
76
|
+
fn(err, function(afterReleaseCallback) {
|
|
76
77
|
|
|
77
78
|
releaseFn();
|
|
78
79
|
|