-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkeynode.js.server.js
More file actions
121 lines (105 loc) · 4.19 KB
/
Copy pathkeynode.js.server.js
File metadata and controls
121 lines (105 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
* Copyright (C) 2011 Alrik Hausdorf
*
* This file is part of KeyNode.JS.
*
* KeyNode.JS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* KeyNode.JS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with KeyNode.JS. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* KeyNode.JS - Server
* @author Alrik Hausdorf
* @version 1.0
*/
var Server_settings = require('./keynode.js.server_settings');
var Server_data = require('./keynode.js.server_data');
var extensionFileServer = require('./extensions/fileserver');
var extensionVideo = require('./extensions/video');
/**
* Init Server on Server_Port
*/
var fileServer = extensionFileServer.createServer(Server_settings.Server_Port);
var io = require(Server_settings.socketIoPackage).listen(fileServer.getHTTPServer());
console.log(Server_settings.preTagInfo + ' server is listening on port ' + Server_settings.Server_Port + '.');
Server_data.loadPresData();
/*
* look very 10 sec for new Folders in Presentation-Folder
*/
Server_data.createLocalPresFile();
setInterval(function() {
Server_data.createLocalPresFile();
}, 30000);
if (Server_settings.debug) {
if (Server_settings.allowAnonymousAuth) {
console.log(Server_settings.preTagServer + ' Anonymous mode enabled.');
}
}
io.set('transports', ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']);
if (!Server_settings.socketIOdebug) {
io.set('log level', 1);
io.enable('log');
}
/**
* Init Socket.IO message handling:
*/
io.sockets.on('connection', function(socket) {
var Client = socket;
Client.on('SetAdmin', function(Json1) {//ident
Server_data.setAdminByKey(Json1.name, Json1.admin, Client, io);
});
Client.on('resetPassword', function(data) {
Server_data.resetPassword(data, socket);
});
Client.on('setPassword', function(data) {
Server_data.setPassword(data, socket);
});
Client.on('newPresentation', function(data) {
Server_data.addPres(data.name, data.password);
console.log(Server_settings.preTagPres + ' NEW presentation: "' + name + '"');
});
Client.on('ConnectToPres', function(name) {
if (!Server_data.getPres(name)) {
//Server neue Presentation anlernen
if (Server_settings.allow_new_presentations) {
Server_data.addPres(name);
console.log(Server_settings.preTagPres + ' NEW presentation: "' + name + '"');
}
}
Client.join(name);
console.log(Server_settings.preTagPres + 'Client ' + Client.id + ' added to room ' + name + '. There are ' + io.sockets.in(name).clients().length.toString() + ' listeners. ');
Client.emit('Ready', "");
if (Server_data.Presentations[name].presenterOnline) {
Client.emit('presenterOnline');
var slide = Server_data.getSlideNumber(name);
Client.emit('GoTo', slide);
}
});
Client.on('giveMeAnAdminKeyFor', function(beNice) {
var t = socket;
socket.emit('hereIsYourAdminKey', Server_data.getAdminCode(t, beNice));
});
Client.on('controlSync', function(data) {
if (Server_data.isAdmin(data.name, socket)) {
if (Server_settings.debug) {
console.log(Server_settings.preTagPres + data.name + ' goto ' + data.folie);
}
io.sockets.in(data.name).emit('GoTo', data.folie);
Server_data.setSlideNumber(data.name, data.folie);
} else {
console.log('Someone tries to control a slide that is not his own one.');
}
});
extensionVideo.initSocket(io, socket);
});
extensionVideo.init(io, fileServer);