telos-server 1.0.17 → 1.0.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "telos-server",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "An Extensible CMS Server for Telos Origin.",
5
5
  "main": "telosServer.json",
6
6
  "dependencies": {
package/serverUtils.js CHANGED
@@ -1,3 +1,4 @@
1
+ var net = require('net');
1
2
  var path = require("path");
2
3
  var virtualSystem = require("virtual-system");
3
4
 
@@ -275,6 +276,30 @@ function isHTTPJSON(json) {
275
276
  return true;
276
277
  }
277
278
 
279
+ function isPortFree(port) {
280
+
281
+ return new Promise((resolve, reject) => {
282
+
283
+ let server = net.createServer();
284
+
285
+ server.once('error', (err) => {
286
+
287
+ server.close();
288
+
289
+ resolve(false);
290
+ });
291
+
292
+ server.once('listening', () => {
293
+
294
+ server.close();
295
+
296
+ resolve(true);
297
+ });
298
+
299
+ server.listen(port);
300
+ });
301
+ }
302
+
278
303
  function processRequest(request, protocol, callback) {
279
304
 
280
305
  let text = null;
@@ -304,5 +329,6 @@ module.exports = {
304
329
  getFileData,
305
330
  getFiles,
306
331
  isHTTPJSON,
332
+ isPortFree,
307
333
  processRequest
308
334
  };
@@ -30,6 +30,8 @@ let fileTypes = [
30
30
  'mp4'
31
31
  ];
32
32
 
33
+ let apiCache = { };
34
+
33
35
  function middlewareFile(packet, file) {
34
36
 
35
37
  if(!fileTypes.includes(file.type) || file.type == "folder")
@@ -65,7 +67,14 @@ function middlewareJS(packet, file) {
65
67
 
66
68
  try {
67
69
 
68
- let response = use(file.file)(packet);
70
+ apiCache[file.file] =
71
+ apiCache[file.file] != null ?
72
+ apiCache[file.file] :
73
+ use(
74
+ virtualSystem.getResource(file.file), { dynamic: true }
75
+ );
76
+
77
+ let response = apiCache[file.file](packet);
69
78
 
70
79
  return response != null ? response : { };
71
80
  }
package/telosServer.js CHANGED
@@ -155,14 +155,20 @@ var telosServer = {
155
155
  let options = packet.content.options.options;
156
156
 
157
157
  if(options.port != false) {
158
+
159
+ let port =
160
+ process.env.PORT || (options.port != null ? options.port : 80);
158
161
 
159
- telosServer.server = http.createServer(telosServer.process);
162
+ serverUtils.isPortFree(port).then((free) => {
160
163
 
161
- telosServer.server.listen(
162
- process.env.PORT || (options.port != null ? options.port : 80)
163
- );
164
+ if(!free)
165
+ return;
164
166
 
165
- console.log("TELOS SERVER ON!");
167
+ telosServer.server = http.createServer(telosServer.process);
168
+ telosServer.server.listen(port);
169
+
170
+ console.log("TELOS SERVER ON!");
171
+ });
166
172
  }
167
173
  },
168
174
  server: null,