mirror of
https://github.com/UiO-Gaming/infoscreen3.git
synced 2026-11-05 13:56:52 +01:00
adding few test plugins and plugin system
This commit is contained in:
1 parent
72fc49f5b5
commit
a9402da665
22 files changed
+476
-163
No files matched your search
@@ -62,6 +62,7 @@ typings/
|
||||
|
||||
# own additions
|
||||
.idea
|
||||
.vscode
|
||||
config.js
|
||||
tmp/*.png
|
||||
public/assets/
|
||||
|
||||
@@ -4,9 +4,7 @@ let cookieParser = require('cookie-parser');
|
||||
let logger = require('morgan');
|
||||
let lessMiddleware = require('less-middleware');
|
||||
let path = require('path');
|
||||
|
||||
require('./modules/profiler.js').init("./tmp");
|
||||
|
||||
let PluginManager = require("./modules/pluginManager");
|
||||
const EventEmitter = require('events');
|
||||
let config = require("./config.js");
|
||||
|
||||
@@ -128,26 +126,23 @@ app.set('view engine', 'twig');
|
||||
app.use(i18nextMiddleware.handle(i18next));
|
||||
app.use(logger('dev'));
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({extended: false}));
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
app.use(cookieParser());
|
||||
app.use(lessMiddleware(path.join(__dirname, 'public')));
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
app.use(require('express-session')({secret: config.sessionKey, resave: false, saveUninitialized: true}));
|
||||
|
||||
// Initialize Passport and restore authentication state, if any, from the
|
||||
// session.
|
||||
app.use(require('express-session')({ secret: config.sessionKey, resave: false, saveUninitialized: true }));
|
||||
app.use(passport.initialize({}));
|
||||
app.use(passport.session({}));
|
||||
|
||||
let websocket = require("./modules/websocket")(server, app, io, eventDispatcher);
|
||||
let indexRouter = require('./routes/index.js')(websocket, eventDispatcher);
|
||||
let adminRouter = require('./routes/admin.js')(websocket, eventDispatcher);
|
||||
let pluginManager = new PluginManager(app, io, eventDispatcher);
|
||||
let websocket = require("./modules/websocket")(pluginManager, io, eventDispatcher);
|
||||
let indexRouter = require('./routes/index.js')(pluginManager, websocket, eventDispatcher);
|
||||
let adminRouter = require('./routes/admin.js')(pluginManager, websocket, eventDispatcher);
|
||||
let authRouter = require('./routes/auth.js')(websocket, eventDispatcher);
|
||||
|
||||
|
||||
app.use('/', authRouter);
|
||||
app.use('/admin', adminRouter);
|
||||
app.use('/', indexRouter);
|
||||
app.use('/admin', adminRouter);
|
||||
app.use('/', authRouter);
|
||||
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function (req, res, next) {
|
||||
@@ -165,4 +160,4 @@ app.use(function (err, req, res, next) {
|
||||
res.render('error');
|
||||
});
|
||||
|
||||
module.exports = {app: app, server: server, io: io, eventDispatcher: eventDispatcher};
|
||||
module.exports = { app: app, server: server, io: io, eventDispatcher: eventDispatcher };
|
||||
File renamed without changes.
@@ -9,6 +9,13 @@ module.exports = {
|
||||
"useLocalAssets": false, // used to load javascript libraries locally from /public/assets
|
||||
"mediaServer": false, // local streaming server for rtmp, see docs how to use
|
||||
"defaultLocale": "en",
|
||||
|
||||
/*
|
||||
* Plugins
|
||||
*/
|
||||
"plugins": [
|
||||
"profiler"
|
||||
],
|
||||
|
||||
/*
|
||||
* Administrators
|
||||
|
||||
+1
-1
@@ -11,4 +11,4 @@
|
||||
"name": "Kiosk",
|
||||
"bundle": "default"
|
||||
}
|
||||
]
|
||||
]
|
||||
+17
-3
@@ -1,4 +1,5 @@
|
||||
let chalk = require('chalk');
|
||||
let lastStamp = "";
|
||||
|
||||
module.exports = {
|
||||
error: function (error, title) {
|
||||
@@ -8,8 +9,13 @@ module.exports = {
|
||||
this.log(chalk.bold.red("[Error]" + title) + " " + error);
|
||||
},
|
||||
|
||||
info: function (string) {
|
||||
this.log(chalk.cyan("[Info] ") + string);
|
||||
info: function (string, category) {
|
||||
|
||||
this.log(chalk.cyan("[" + (category || "Info") + "] ") + string);
|
||||
},
|
||||
|
||||
debug: function (string) {
|
||||
console.log(chalk.bold.black("[Debug] " + string));
|
||||
},
|
||||
|
||||
success: function (string) {
|
||||
@@ -17,7 +23,15 @@ module.exports = {
|
||||
},
|
||||
|
||||
log: function (string) {
|
||||
console.log(getDateTime() + " " + string);
|
||||
let now = getDateTime();
|
||||
if (lastStamp != now) {
|
||||
lastStamp = now;
|
||||
now = "\n" + now + "\n"
|
||||
} else {
|
||||
now = "";
|
||||
}
|
||||
|
||||
console.log(now + string);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
let fs = require("fs");
|
||||
let cli = require(`./cli.js`);
|
||||
let bundleManager = require(`./bundleManager.js`);
|
||||
let config = require('../config.js');
|
||||
let plugins = {};
|
||||
|
||||
|
||||
/**
|
||||
* handles one display instance
|
||||
@@ -17,6 +20,7 @@ class display {
|
||||
*/
|
||||
constructor(sharedIO, dispatcher, meta, displayId, bundleManager) {
|
||||
cli.info("Starting display with id " + displayId + " ...");
|
||||
|
||||
/**
|
||||
* @property {number} displayId - this display id
|
||||
* @property {number} currentId - index number @see getBundle()
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
let express = require('express');
|
||||
let Twig = require('twig');
|
||||
let fs = require('fs');
|
||||
let cli = require('./cli');
|
||||
|
||||
|
||||
class plugin {
|
||||
|
||||
constructor(pluginName, app, io, dispatcher) {
|
||||
this.pluginName = pluginName;
|
||||
this.subApp = express();
|
||||
this.subApp.set('views', "plugins/" + pluginName + "/views");
|
||||
this.subApp.set('view engine', 'twig');
|
||||
let router = express.Router();
|
||||
this.onPluginRouter(router);
|
||||
this.subApp.use(router);
|
||||
|
||||
app.use(this.subApp);
|
||||
app.use("/data/" + pluginName, express.static("plugins/" + pluginName + "/public"));
|
||||
// register callbacks
|
||||
let self = this;
|
||||
dispatcher.on('plugin.onAdminRouter', (arr) => self.onAdminRouter(arr));
|
||||
this.onInit();
|
||||
}
|
||||
|
||||
renderPluginView(template, data) {
|
||||
return Twig.twig({ data: fs.readFileSync("plugins/" + this.pluginName + "/views/" + template + ".twig").toString() }).render(data);
|
||||
}
|
||||
|
||||
onAdminRouter(router) {
|
||||
|
||||
}
|
||||
|
||||
onPluginRouter(router) {
|
||||
|
||||
}
|
||||
|
||||
onInit() {
|
||||
|
||||
}
|
||||
|
||||
setDisplayViewAdditions() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
exports.default = plugin;
|
||||
@@ -0,0 +1,37 @@
|
||||
let fs = require("fs");
|
||||
let cli = require(`./cli.js`);
|
||||
let config = require(`../config.js`);
|
||||
|
||||
class pluginManager {
|
||||
|
||||
constructor(app, io, eventDispatcher) {
|
||||
this.plugins = {};
|
||||
this.dispatcher = eventDispatcher;
|
||||
cli.info("Initializing plugins...");
|
||||
for (let pluginName of config.plugins) {
|
||||
try {
|
||||
let pluginclass = require("../plugins/" + pluginName + "/plugin.js").default;
|
||||
let pluginInstance = new pluginclass(pluginName, app, io, eventDispatcher);
|
||||
cli.info("Plugin: " + pluginName, 'plugin');
|
||||
this.plugins[pluginName] = pluginInstance;
|
||||
} catch (err) {
|
||||
cli.error("Plugin " + pluginName, err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
callMethod(method, params) {
|
||||
this.dispatcher.emit("plugin." + method, params);
|
||||
}
|
||||
|
||||
getDisplayAdditions() {
|
||||
let additions = "";
|
||||
for (let name in this.plugins) {
|
||||
additions += this.plugins[name].setDisplayViewAdditions();
|
||||
}
|
||||
return additions;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = pluginManager;
|
||||
@@ -1,25 +0,0 @@
|
||||
var prevValue = 0;
|
||||
let cli = require('./cli.js');
|
||||
module.exports.init = function (datadir) {
|
||||
setInterval(tickHeapDump, 1000);
|
||||
};
|
||||
|
||||
/**
|
||||
* Schedule a heapdump by the end of next tick
|
||||
*/
|
||||
function tickHeapDump() {
|
||||
setImmediate(function () {
|
||||
heapDump();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a heap dump if the currently memory threshold is exceeded
|
||||
*/
|
||||
function heapDump() {
|
||||
var memMB = (process.memoryUsage().rss / 1048576).toFixed(1);
|
||||
if (prevValue != memMB) {
|
||||
cli.info("Memory: " + memMB + 'Mb');
|
||||
prevValue = memMB;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
let availableDisplays = require(`../config.js`).displays;
|
||||
let config = require(`../config.js`);
|
||||
let availableDisplays = config.displays;
|
||||
let display = require(`./display.js`);
|
||||
let admin = require(`./admin.js`);
|
||||
let adminLobby = require(`./adminLobby.js`);
|
||||
@@ -7,6 +8,8 @@ let _bundleManager = require(`./bundleManager.js`);
|
||||
let chalk = require('chalk');
|
||||
let fs = require('fs');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param server
|
||||
* @param app
|
||||
@@ -14,7 +17,7 @@ let fs = require('fs');
|
||||
* @param dispatcher
|
||||
* @return {{screenView: display[], adminView: admin[], bundleManager: bundleManager}}
|
||||
*/
|
||||
module.exports = function (server, app, io, dispatcher) {
|
||||
module.exports = function (pluginManager, io, dispatcher) {
|
||||
/**
|
||||
* @type {display[]}
|
||||
*/
|
||||
@@ -70,7 +73,6 @@ module.exports = function (server, app, io, dispatcher) {
|
||||
}
|
||||
|
||||
let adminLobby1 = new adminLobby(io, dispatcher, screenView, adminView, bundleManager);
|
||||
|
||||
// create lobby
|
||||
io.of("/lobby").on("connection", function (socket) {
|
||||
cli.info("WS/" + socket.conn.remoteAddress + " connect");
|
||||
@@ -92,10 +94,10 @@ module.exports = function (server, app, io, dispatcher) {
|
||||
previewImages.push("/img/nopreview.png");
|
||||
}
|
||||
}
|
||||
socket.emit("callback.displays", {displays: availableDisplays, previewImages: previewImages});
|
||||
socket.emit("callback.displays", { displays: availableDisplays, previewImages: previewImages });
|
||||
});
|
||||
});
|
||||
|
||||
return {screenView: screenView, adminView: adminView, bundleManager: bundleManager};
|
||||
return { screenView: screenView, adminView: adminView, bundleManager: bundleManager };
|
||||
};
|
||||
|
||||
Generated
+211
-102
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "infoscreen3",
|
||||
"version": "0.0.0",
|
||||
"version": "1.1.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -13,12 +13,27 @@
|
||||
}
|
||||
},
|
||||
"accepts": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
|
||||
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
|
||||
"version": "1.3.7",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
|
||||
"integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
|
||||
"requires": {
|
||||
"mime-types": "~2.1.18",
|
||||
"negotiator": "0.6.1"
|
||||
"mime-types": "~2.1.24",
|
||||
"negotiator": "0.6.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"mime-db": {
|
||||
"version": "1.43.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
|
||||
"integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.26",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
|
||||
"integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
|
||||
"requires": {
|
||||
"mime-db": "1.43.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"after": {
|
||||
@@ -82,7 +97,8 @@
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
|
||||
"optional": true
|
||||
},
|
||||
"async-limiter": {
|
||||
"version": "1.0.0",
|
||||
@@ -123,9 +139,9 @@
|
||||
"integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
|
||||
},
|
||||
"base64id": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
|
||||
"integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
|
||||
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
|
||||
},
|
||||
"basic-auth": {
|
||||
"version": "2.0.1",
|
||||
@@ -224,6 +240,14 @@
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"bufferutil": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.1.tgz",
|
||||
"integrity": "sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA==",
|
||||
"requires": {
|
||||
"node-gyp-build": "~3.7.0"
|
||||
}
|
||||
},
|
||||
"busboy": {
|
||||
"version": "0.2.14",
|
||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
|
||||
@@ -281,6 +305,7 @@
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
@@ -398,7 +423,8 @@
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
||||
"optional": true
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
@@ -440,37 +466,42 @@
|
||||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"engine.io": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz",
|
||||
"integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.0.tgz",
|
||||
"integrity": "sha512-XCyYVWzcHnK5cMz7G4VTu2W7zJS7SM1QkcelghyIk/FmobWBtXE7fwhBusEKvCSqc3bMh8fNFMlUkCKTFRxH2w==",
|
||||
"requires": {
|
||||
"accepts": "~1.3.4",
|
||||
"base64id": "1.0.0",
|
||||
"base64id": "2.0.0",
|
||||
"cookie": "0.3.1",
|
||||
"debug": "~3.1.0",
|
||||
"engine.io-parser": "~2.1.0",
|
||||
"ws": "~6.1.0"
|
||||
"debug": "~4.1.0",
|
||||
"engine.io-parser": "~2.2.0",
|
||||
"ws": "^7.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"engine.io-client": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.1.tgz",
|
||||
"integrity": "sha512-q66JBFuQcy7CSlfAz9L3jH+v7DTT3i6ZEadYcVj2pOs8/0uJHLxKX3WBkGTvULJMdz0tUCyJag0aKT/dpXL9BQ==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz",
|
||||
"integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"component-inherit": "0.0.3",
|
||||
"debug": "~3.1.0",
|
||||
"engine.io-parser": "~2.1.1",
|
||||
"debug": "~4.1.0",
|
||||
"engine.io-parser": "~2.2.0",
|
||||
"has-cors": "1.1.0",
|
||||
"indexof": "0.0.1",
|
||||
"parseqs": "0.0.5",
|
||||
@@ -481,19 +512,32 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"ws": {
|
||||
"version": "6.1.4",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
|
||||
"integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
|
||||
"requires": {
|
||||
"async-limiter": "~1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"engine.io-parser": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
|
||||
"integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz",
|
||||
"integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==",
|
||||
"requires": {
|
||||
"after": "0.8.2",
|
||||
"arraybuffer.slice": "~0.0.7",
|
||||
@@ -618,20 +662,25 @@
|
||||
}
|
||||
},
|
||||
"express-session": {
|
||||
"version": "1.16.2",
|
||||
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.16.2.tgz",
|
||||
"integrity": "sha512-oy0sRsdw6n93E9wpCNWKRnSsxYnSDX9Dnr9mhZgqUEEorzcq5nshGYSZ4ZReHFhKQ80WI5iVUUSPW7u3GaKauw==",
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz",
|
||||
"integrity": "sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==",
|
||||
"requires": {
|
||||
"cookie": "0.3.1",
|
||||
"cookie": "0.4.0",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~2.0.0",
|
||||
"on-headers": "~1.0.2",
|
||||
"parseurl": "~1.3.3",
|
||||
"safe-buffer": "5.1.2",
|
||||
"safe-buffer": "5.2.0",
|
||||
"uid-safe": "~2.1.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"cookie": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
|
||||
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
|
||||
},
|
||||
"depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
@@ -641,6 +690,11 @@
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
|
||||
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
|
||||
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -653,7 +707,8 @@
|
||||
"extsprintf": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
||||
"optional": true
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "2.0.1",
|
||||
@@ -820,9 +875,9 @@
|
||||
}
|
||||
},
|
||||
"i18next-express-middleware": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.8.0.tgz",
|
||||
"integrity": "sha512-vbEV+YbGoXNpv59WM7MHvdbBpPUS6itMIgpX21mjmu8/naS/NlmZe6vMNFGUIWs5PbXGnKWm7ucKxYmc2RV8vA==",
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.9.1.tgz",
|
||||
"integrity": "sha512-cLMO8pUC7sU6dfFvkREcim7fXOHVtGSZu3Lt8d1Ty7Z0nZiYs57Lb3CjDrXb671ibCnY2s/RCATsXlaujYwUQg==",
|
||||
"requires": {
|
||||
"cookies": "0.7.1"
|
||||
}
|
||||
@@ -899,7 +954,8 @@
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
|
||||
"optional": true
|
||||
},
|
||||
"json-schema": {
|
||||
"version": "0.2.3",
|
||||
@@ -1004,12 +1060,14 @@
|
||||
"mime-db": {
|
||||
"version": "1.36.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
|
||||
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="
|
||||
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
|
||||
"optional": true
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.20",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
|
||||
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"mime-db": "~1.36.0"
|
||||
}
|
||||
@@ -1060,14 +1118,19 @@
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
|
||||
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
|
||||
},
|
||||
"node-gyp-build": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.7.0.tgz",
|
||||
"integrity": "sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w=="
|
||||
},
|
||||
"node-media-server": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/node-media-server/-/node-media-server-2.1.3.tgz",
|
||||
"integrity": "sha512-BZf39fpVDSVQT2E+8DqSVOb7oo31rcbA36l9sqtSuyZhBdxjidL5Nk2/G/2vqMGR9Q4JKzkTskGay2dWy5ZsUQ==",
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/node-media-server/-/node-media-server-2.1.4.tgz",
|
||||
"integrity": "sha512-3+6aWrExhZwT70U9Bjgq/dLDo22NcKql/nOCwbJ3BuZDgE8oBe5PkCSpCHyfES2o6vC2pTTvAojIO+bdRcC5cg==",
|
||||
"requires": {
|
||||
"basic-auth-connect": "^1.0.0",
|
||||
"chalk": "^2.4.2",
|
||||
@@ -1148,9 +1211,9 @@
|
||||
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
|
||||
},
|
||||
"passport": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/passport/-/passport-0.4.0.tgz",
|
||||
"integrity": "sha1-xQlWkTR71a07XhgCOMORTRbwWBE=",
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz",
|
||||
"integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==",
|
||||
"requires": {
|
||||
"passport-strategy": "1.x.x",
|
||||
"pause": "0.0.1"
|
||||
@@ -1402,16 +1465,16 @@
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
|
||||
},
|
||||
"socket.io": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz",
|
||||
"integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz",
|
||||
"integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==",
|
||||
"requires": {
|
||||
"debug": "~4.1.0",
|
||||
"engine.io": "~3.3.1",
|
||||
"engine.io": "~3.4.0",
|
||||
"has-binary2": "~1.0.2",
|
||||
"socket.io-adapter": "~1.1.0",
|
||||
"socket.io-client": "2.2.0",
|
||||
"socket.io-parser": "~3.3.0"
|
||||
"socket.io-client": "2.3.0",
|
||||
"socket.io-parser": "~3.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
@@ -1423,28 +1486,28 @@
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-adapter": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
|
||||
"integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs="
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
|
||||
"integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g=="
|
||||
},
|
||||
"socket.io-client": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz",
|
||||
"integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz",
|
||||
"integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==",
|
||||
"requires": {
|
||||
"backo2": "1.0.2",
|
||||
"base64-arraybuffer": "0.1.5",
|
||||
"component-bind": "1.0.0",
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "~3.1.0",
|
||||
"engine.io-client": "~3.3.1",
|
||||
"debug": "~4.1.0",
|
||||
"engine.io-client": "~3.4.0",
|
||||
"has-binary2": "~1.0.2",
|
||||
"has-cors": "1.1.0",
|
||||
"indexof": "0.0.1",
|
||||
@@ -1456,37 +1519,77 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-parser": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
|
||||
"integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "~3.1.0",
|
||||
"isarray": "2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"isarray": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
|
||||
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"socket.io-parser": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
|
||||
"integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "~3.1.0",
|
||||
"isarray": "2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-parser": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.0.tgz",
|
||||
"integrity": "sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "~4.1.0",
|
||||
"isarray": "2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"isarray": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
|
||||
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1581,7 +1684,8 @@
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"optional": true
|
||||
},
|
||||
"twig": {
|
||||
"version": "0.10.3",
|
||||
@@ -1639,6 +1743,14 @@
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"utf-8-validate": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.2.tgz",
|
||||
"integrity": "sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw==",
|
||||
"requires": {
|
||||
"node-gyp-build": "~3.7.0"
|
||||
}
|
||||
},
|
||||
"utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
@@ -1675,12 +1787,9 @@
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz",
|
||||
"integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==",
|
||||
"requires": {
|
||||
"async-limiter": "~1.0.0"
|
||||
}
|
||||
"version": "7.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz",
|
||||
"integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A=="
|
||||
},
|
||||
"xmlhttprequest-ssl": {
|
||||
"version": "1.5.5",
|
||||
|
||||
+10
-8
@@ -1,12 +1,13 @@
|
||||
{
|
||||
"name": "infoscreen3",
|
||||
"version": "0.0.0",
|
||||
"version": "1.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "node --expose-gc ./bin/www"
|
||||
"start": "node --expose-gc ./bin/infoscreen3"
|
||||
},
|
||||
"dependencies": {
|
||||
"basic-auth": "^2.0.1",
|
||||
"bufferutil": "^4.0.1",
|
||||
"chalk": "^2.4.2",
|
||||
"connect-busboy": "^0.0.2",
|
||||
"connect-ensure-login": "^0.1.1",
|
||||
@@ -14,18 +15,19 @@
|
||||
"cors": "^2.8.5",
|
||||
"debug": "~2.6.9",
|
||||
"express": "^4.17.1",
|
||||
"express-session": "^1.16.2",
|
||||
"express-session": "^1.17.0",
|
||||
"http-errors": "~1.6.2",
|
||||
"i18next": "^15.1.3",
|
||||
"i18next-express-middleware": "^1.8.0",
|
||||
"i18next-express-middleware": "^1.9.1",
|
||||
"i18next-node-fs-backend": "^2.1.3",
|
||||
"less-middleware": "^3.1.0",
|
||||
"morgan": "~1.9.1",
|
||||
"node-media-server": "^2.1.3",
|
||||
"node-media-server": "^2.1.4",
|
||||
"node.extend": ">=2.0.1",
|
||||
"passport": "^0.4.0",
|
||||
"passport": "^0.4.1",
|
||||
"passport-local": "^1.0.0",
|
||||
"socket.io": "^2.2.0",
|
||||
"twig": "~0.10.3"
|
||||
"socket.io": "^2.3.0",
|
||||
"twig": "~0.10.3",
|
||||
"utf-8-validate": "^5.0.2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"host": "localhost"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "ping-plugin",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
let plugin = require("../../modules/plugin.js").default;
|
||||
let config = require(__dirname + "/config.json");
|
||||
var sys = require('util');
|
||||
var exec = require('child_process').exec;
|
||||
|
||||
class myTestPlugin extends plugin {
|
||||
|
||||
onInit() {
|
||||
|
||||
}
|
||||
|
||||
onAdminRouter(router) {
|
||||
/* let self = this;
|
||||
router.get("/test", function (req, res, next) {
|
||||
res.send(self.renderPluginView("test", { test: "hello!" }));
|
||||
}); */
|
||||
}
|
||||
|
||||
onPluginRouter(router) {
|
||||
router.get("/ajax/ping", function (req, res) {
|
||||
let cmd = "ping -c 1 ";
|
||||
let regex = /=([0-9.]+?) ms/;
|
||||
if (/^win/.test(process.platform)) {
|
||||
cmd = "ping -n 1 ";
|
||||
regex = /[><=]([0-9.]+?)ms/;
|
||||
}
|
||||
exec(cmd + config.host, function (err, stdout, stdErr) {
|
||||
var ms = stdout.match(regex);
|
||||
ms = (ms && ms[1]) ? Number(ms[1]) : ms;
|
||||
res.json({ ping: ms });
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
setDisplayViewAdditions() {
|
||||
return this.renderPluginView("pingWidget");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
exports.default = myTestPlugin;
|
||||
@@ -0,0 +1 @@
|
||||
testing.123
|
||||
@@ -0,0 +1,31 @@
|
||||
<style>
|
||||
#bandwidth {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
right: 0;
|
||||
width: 15vw;
|
||||
height: 100px;
|
||||
background: whitesmoke;
|
||||
border: 2px black solid;
|
||||
padding: 0.5rem 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
<div id="bandwidth" class="gpu">
|
||||
<h1 style="margin: 0;padding: 0;">Ping Status</h1>
|
||||
<h2 id="testStatus" style="margin: 0;padding: 0;"></h2>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
ping();
|
||||
setInterval(() => {
|
||||
ping()
|
||||
}, 5000);
|
||||
|
||||
function ping() {
|
||||
$.getJSON("/ajax/ping", function (data) {
|
||||
$('#testStatus').html(data.ping + "ms");
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,30 @@
|
||||
let plugin = require("../../modules/plugin.js").default;
|
||||
let cli = require('../../modules/cli.js');
|
||||
let chalk = require('chalk');
|
||||
let prevValue = 0;
|
||||
let startValue = (process.memoryUsage().rss / 1048576).toFixed(1);
|
||||
|
||||
function tickHeapDump() {
|
||||
setImmediate(function () {
|
||||
var memMB = (process.memoryUsage().rss / 1048576).toFixed(1);
|
||||
if (prevValue != memMB) {
|
||||
let prefix = chalk.bold.red("▲");
|
||||
if (memMB < prevValue) {
|
||||
prefix = chalk.bold.green("▼");
|
||||
}
|
||||
cli.info("Memory: " + prefix + " " + (memMB - prevValue).toFixed(1) + 'Mb' + " start: " + startValue + "Mb now: " + memMB + "Mb (" + (memMB - startValue).toFixed(1) + "Mb)");
|
||||
prevValue = memMB;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
class profilerPlugin extends plugin {
|
||||
onInit() {
|
||||
tickHeapDump();
|
||||
setInterval(() => {
|
||||
tickHeapDump();
|
||||
}, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
exports.default = profilerPlugin;
|
||||
+3
-1
@@ -26,7 +26,7 @@ function ensureIsAdmin(req, res, next) {
|
||||
next();
|
||||
}
|
||||
|
||||
module.exports = function (websocket, dispatcher) {
|
||||
module.exports = function (pluginManager, websocket, dispatcher) {
|
||||
var bundleManager = websocket.bundleManager;
|
||||
|
||||
router.use(ensureIsAdmin);
|
||||
@@ -185,5 +185,7 @@ module.exports = function (websocket, dispatcher) {
|
||||
res.render('ajax/bundleImageList', {bundleImages: output});
|
||||
});
|
||||
|
||||
pluginManager.callMethod('onAdminRouter', router);
|
||||
|
||||
return router;
|
||||
};
|
||||
+5
-3
@@ -14,14 +14,14 @@ function ensureIsAdmin(req, res, next) {
|
||||
return next();
|
||||
}
|
||||
|
||||
module.exports = function (websocket, dispatcher) {
|
||||
module.exports = function (pluginManager, websocket, dispatcher) {
|
||||
if (config.secureViews) {
|
||||
router.use(ensureIsAdmin);
|
||||
}
|
||||
|
||||
router.get('/', function (req, res, next) {
|
||||
res.header('Access-Control-Allow-Origin', '*');
|
||||
res.render('index', {config: config});
|
||||
res.render('index', { config: config });
|
||||
});
|
||||
|
||||
router.get('/favicon.ico', function (req, res, next) {
|
||||
@@ -44,7 +44,8 @@ module.exports = function (websocket, dispatcher) {
|
||||
res.header('Access-Control-Allow-Origin', '*');
|
||||
let idx = parseInt(req.params.id);
|
||||
let volume = req.params.videoVolume || 1.;
|
||||
res.render('display', {config: config, display: availableDisplays[idx], displayId: idx, videoVolume: volume});
|
||||
let extra = pluginManager.getDisplayAdditions();
|
||||
res.render('display', { config: config, display: availableDisplays[idx], displayId: idx, videoVolume: volume, extra: extra });
|
||||
});
|
||||
|
||||
router.get('/images/:dir/:name', function (req, res, next) {
|
||||
@@ -119,5 +120,6 @@ module.exports = function (websocket, dispatcher) {
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
return router;
|
||||
};
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
{% block body %}
|
||||
<div id="blackoutLayer" class="animated"></div>
|
||||
|
||||
{{ extra }}
|
||||
|
||||
<div id="statusMessageOuter" class="noselect animated">
|
||||
<span id="statusMessage"></span>
|
||||
|
||||
Reference in new issue
Block a user