telos-server 1.0.12 → 1.0.14
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 +1 -1
- package/serverUtils.js +87 -28
- package/telosEngine.js +40 -0
- package/telosMiddleware.js +15 -21
- package/telosRouter.js +50 -1
- package/telosServer.js +3 -0
- package/telosServer.json +6 -0
package/package.json
CHANGED
package/serverUtils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var fs = require("fs");
|
|
2
1
|
var path = require("path");
|
|
2
|
+
var virtualSystem = require("virtual-system");
|
|
3
3
|
|
|
4
4
|
var extensionTypes = {
|
|
5
5
|
'txt': 'text/plain',
|
|
@@ -30,6 +30,40 @@ var fileTypes = [
|
|
|
30
30
|
'mp4'
|
|
31
31
|
];
|
|
32
32
|
|
|
33
|
+
function getAllFiles(directory) {
|
|
34
|
+
|
|
35
|
+
let items = { };
|
|
36
|
+
|
|
37
|
+
if(Array.isArray(directory)) {
|
|
38
|
+
|
|
39
|
+
directory.forEach(value => {
|
|
40
|
+
Object.assign(items, getAllFiles(value));
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
return items;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
directory = directory.split(":\\").join("://").split("\\").join("/");
|
|
47
|
+
|
|
48
|
+
let contents = virtualSystem.getResource(directory);
|
|
49
|
+
|
|
50
|
+
if(!Array.isArray(contents))
|
|
51
|
+
return;
|
|
52
|
+
|
|
53
|
+
contents[0].forEach(item => {
|
|
54
|
+
Object.assign(items, getAllFiles(directory + path.sep + item));
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
contents[1].forEach(item => {
|
|
58
|
+
|
|
59
|
+
item = directory + path.sep + item;
|
|
60
|
+
|
|
61
|
+
items[item] = getFileData(item);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
return items;
|
|
65
|
+
}
|
|
66
|
+
|
|
33
67
|
function getFile(uri, directories) {
|
|
34
68
|
|
|
35
69
|
try {
|
|
@@ -47,37 +81,42 @@ function getFile(uri, directories) {
|
|
|
47
81
|
directories
|
|
48
82
|
).map(file => {
|
|
49
83
|
|
|
50
|
-
let
|
|
51
|
-
file.substring(file.lastIndexOf(".") + 1) : null;
|
|
84
|
+
let data = getFileData(file);
|
|
52
85
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
meta: file.split(/[\/\\]/).map(item =>
|
|
57
|
-
item.split(".").slice(1).reduce(
|
|
58
|
-
(value, item) => {
|
|
86
|
+
return data.meta.private == null ? data : null;
|
|
87
|
+
})[0];
|
|
88
|
+
}
|
|
59
89
|
|
|
60
|
-
|
|
90
|
+
catch(error) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
61
94
|
|
|
62
|
-
|
|
95
|
+
function getFileData(file) {
|
|
63
96
|
|
|
64
|
-
|
|
65
|
-
|
|
97
|
+
let type = file.includes(".") ?
|
|
98
|
+
file.substring(file.lastIndexOf(".") + 1) : null;
|
|
66
99
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
100
|
+
return {
|
|
101
|
+
file: file,
|
|
102
|
+
folder: Array.isArray(virtualSystem.getResource(file)),
|
|
103
|
+
meta: file.split(/[\/\\]/).map(item =>
|
|
104
|
+
item.split(".").slice(1).reduce(
|
|
105
|
+
(value, item) => {
|
|
74
106
|
|
|
75
|
-
|
|
76
|
-
})[0];
|
|
77
|
-
}
|
|
107
|
+
item = item.split("-");
|
|
78
108
|
|
|
79
|
-
|
|
80
|
-
|
|
109
|
+
let key = item[0].toLowerCase()
|
|
110
|
+
|
|
111
|
+
if(key != type)
|
|
112
|
+
value[key] = item.slice(1).join("-");
|
|
113
|
+
|
|
114
|
+
return value;
|
|
115
|
+
},
|
|
116
|
+
{ }
|
|
117
|
+
)
|
|
118
|
+
).reduce((value, item) => Object.assign(value, item), { }),
|
|
119
|
+
type: type
|
|
81
120
|
}
|
|
82
121
|
}
|
|
83
122
|
|
|
@@ -95,7 +134,16 @@ function getFiles(items, paths) {
|
|
|
95
134
|
|
|
96
135
|
try {
|
|
97
136
|
|
|
98
|
-
|
|
137
|
+
file = file.split(":\\").join("://").split("\\").join("/");
|
|
138
|
+
|
|
139
|
+
let contents = virtualSystem.getResource(file);
|
|
140
|
+
|
|
141
|
+
if(!Array.isArray(contents))
|
|
142
|
+
return;
|
|
143
|
+
|
|
144
|
+
contents = contents[0].concat(contents[1]);
|
|
145
|
+
|
|
146
|
+
contents.forEach(item => {
|
|
99
147
|
|
|
100
148
|
if(item.toLowerCase().startsWith(alias.toLowerCase()))
|
|
101
149
|
files.push(file + path.sep + item);
|
|
@@ -113,8 +161,17 @@ function getFiles(items, paths) {
|
|
|
113
161
|
paths.forEach(file => {
|
|
114
162
|
|
|
115
163
|
try {
|
|
116
|
-
|
|
117
|
-
|
|
164
|
+
|
|
165
|
+
file = file.split(":\\").join("://").split("\\").join("/");
|
|
166
|
+
|
|
167
|
+
let contents = virtualSystem.getResource(file);
|
|
168
|
+
|
|
169
|
+
if(!Array.isArray(contents))
|
|
170
|
+
return;
|
|
171
|
+
|
|
172
|
+
contents = contents[0].concat(contents[1]);
|
|
173
|
+
|
|
174
|
+
contents.forEach(item => {
|
|
118
175
|
|
|
119
176
|
if(item.toLowerCase().startsWith("index"))
|
|
120
177
|
files.push(file + path.sep + item);
|
|
@@ -242,7 +299,9 @@ function processRequest(request, protocol, callback) {
|
|
|
242
299
|
module.exports = {
|
|
243
300
|
extensionTypes,
|
|
244
301
|
fileTypes,
|
|
302
|
+
getAllFiles,
|
|
245
303
|
getFile,
|
|
304
|
+
getFileData,
|
|
246
305
|
getFiles,
|
|
247
306
|
isHTTPJSON,
|
|
248
307
|
processRequest
|
package/telosEngine.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var busNet = use("bus-net");
|
|
2
|
+
|
|
3
|
+
var telosEngine = {
|
|
4
|
+
initialization: null,
|
|
5
|
+
interval: null,
|
|
6
|
+
query: (packet) => {
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
|
|
10
|
+
packet = JSON.parse(packet);
|
|
11
|
+
|
|
12
|
+
if(packet.tags.includes("telos-origin") &&
|
|
13
|
+
packet.tags.includes("initialize")) {
|
|
14
|
+
|
|
15
|
+
telosEngine.initialization = packet;
|
|
16
|
+
|
|
17
|
+
telosEngine.interval = setInterval(
|
|
18
|
+
() => { busNet.call(`{"tags":["telos-engine"]}`); },
|
|
19
|
+
1000 / 60
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if(packet.tags.includes("telos-configuration") &&
|
|
26
|
+
packet.tags.length == 1) {
|
|
27
|
+
|
|
28
|
+
return telosEngine.initialization = packet;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
catch(error) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
tags: ["telos-origin", "telos-engine"]
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if(typeof module == "object")
|
|
40
|
+
module.exports = telosEngine;
|
package/telosMiddleware.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
var fs = use("fs");
|
|
2
|
-
var path = use("path");
|
|
3
1
|
var pup = require("universal-preprocessor");
|
|
2
|
+
var virtualSystem = require("virtual-system");
|
|
4
3
|
|
|
5
4
|
let extensionTypes = {
|
|
6
5
|
'txt': 'text/plain',
|
|
@@ -49,23 +48,14 @@ function middlewareFolder(packet, file) {
|
|
|
49
48
|
|
|
50
49
|
if(file.type != "folder")
|
|
51
50
|
return;
|
|
52
|
-
|
|
53
|
-
let result = [[], []];
|
|
54
|
-
|
|
55
|
-
fs.readdirSync(file.file).forEach(item => {
|
|
56
|
-
|
|
57
|
-
result[
|
|
58
|
-
fs.lstatSync(
|
|
59
|
-
file.file + path.sep + item
|
|
60
|
-
).isDirectory() ? 0 : 1
|
|
61
|
-
].push(item);
|
|
62
|
-
})
|
|
63
51
|
|
|
64
52
|
return {
|
|
65
53
|
headers: {
|
|
66
54
|
"Content-Type": "text/json"
|
|
67
55
|
},
|
|
68
|
-
body: JSON.stringify(
|
|
56
|
+
body: JSON.stringify(
|
|
57
|
+
virtualSystem.getResource(file.file), null, "\t"
|
|
58
|
+
)
|
|
69
59
|
}
|
|
70
60
|
}
|
|
71
61
|
|
|
@@ -109,7 +99,10 @@ function middlewareJS(packet, file) {
|
|
|
109
99
|
<script>
|
|
110
100
|
|
|
111
101
|
${preprocess(
|
|
112
|
-
|
|
102
|
+
virtualSystem.getResource(
|
|
103
|
+
file.file.
|
|
104
|
+
split(":\\").join("://").split("\\").join("/")
|
|
105
|
+
)
|
|
113
106
|
)}
|
|
114
107
|
|
|
115
108
|
</script>
|
|
@@ -129,11 +122,10 @@ function middlewareJS(packet, file) {
|
|
|
129
122
|
var vision = use("kaeon-united")("vision");
|
|
130
123
|
|
|
131
124
|
vision.extend(JSON.parse("${
|
|
132
|
-
JSON.stringify(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
)
|
|
125
|
+
JSON.stringify(preprocess(virtualSystem.getResource(
|
|
126
|
+
file.file.
|
|
127
|
+
split(":\\").join("://").split("\\").join("/")
|
|
128
|
+
)))
|
|
137
129
|
}");
|
|
138
130
|
|
|
139
131
|
</script>
|
|
@@ -152,7 +144,9 @@ function middlewareText(packet, file) {
|
|
|
152
144
|
"Content-Type": extensionTypes[file.type]
|
|
153
145
|
},
|
|
154
146
|
body: preprocess(
|
|
155
|
-
|
|
147
|
+
virtualSystem.getResource(
|
|
148
|
+
file.file.split(":\\").join("://").split("\\").join("/")
|
|
149
|
+
)
|
|
156
150
|
)
|
|
157
151
|
}
|
|
158
152
|
}
|
package/telosRouter.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var apint = require("apint");
|
|
2
2
|
var path = require("path");
|
|
3
3
|
var serverUtils = require("./serverUtils.js");
|
|
4
|
+
var virtualSystem = require("virtual-system");
|
|
4
5
|
|
|
5
6
|
var telosRouter = {
|
|
6
7
|
config: {
|
|
@@ -16,6 +17,53 @@ var telosRouter = {
|
|
|
16
17
|
|
|
17
18
|
packet = JSON.parse(packet);
|
|
18
19
|
|
|
20
|
+
if(packet.tags != null) {
|
|
21
|
+
|
|
22
|
+
if(packet.tags.length == 1 &&
|
|
23
|
+
(packet.tags[0] == "telos-engine" ||
|
|
24
|
+
packet.tags[0] == "telos-engine-refresh")) {
|
|
25
|
+
|
|
26
|
+
telosRouter.tasks = (
|
|
27
|
+
telosRouter.tasks != null &&
|
|
28
|
+
packet.tags[0] == "telos-engine"
|
|
29
|
+
) ?
|
|
30
|
+
telosRouter.tasks :
|
|
31
|
+
Object.values(
|
|
32
|
+
serverUtils.getAllFiles(
|
|
33
|
+
telosRouter.config.directories
|
|
34
|
+
)
|
|
35
|
+
).filter(
|
|
36
|
+
item => item != null
|
|
37
|
+
).filter(
|
|
38
|
+
item =>
|
|
39
|
+
Object.keys(item.meta).includes("task") &&
|
|
40
|
+
item.type == "js"
|
|
41
|
+
).map(
|
|
42
|
+
item => item.file
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
if(packet.tags[0] == "telos-engine-refresh")
|
|
46
|
+
return;
|
|
47
|
+
|
|
48
|
+
telosRouter.tasks.forEach(item => {
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
|
|
52
|
+
use(
|
|
53
|
+
virtualSystem.getResource(item),
|
|
54
|
+
{ dynamic: true }
|
|
55
|
+
)();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
catch(error) {
|
|
59
|
+
console.log(error);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
19
67
|
let middleware = [];
|
|
20
68
|
|
|
21
69
|
apint.queryUtilities(
|
|
@@ -58,7 +106,7 @@ var telosRouter = {
|
|
|
58
106
|
}
|
|
59
107
|
|
|
60
108
|
catch(error) {
|
|
61
|
-
|
|
109
|
+
console.log(error);
|
|
62
110
|
}
|
|
63
111
|
}
|
|
64
112
|
|
|
@@ -119,6 +167,7 @@ var telosRouter = {
|
|
|
119
167
|
`
|
|
120
168
|
};
|
|
121
169
|
},
|
|
170
|
+
tasks: null,
|
|
122
171
|
tags: ["telos-origin", "telos-router"]
|
|
123
172
|
};
|
|
124
173
|
|
package/telosServer.js
CHANGED
|
@@ -3,6 +3,7 @@ var fs = require("fs");
|
|
|
3
3
|
var http = require("http");
|
|
4
4
|
var https = require("https");
|
|
5
5
|
var busNet = use("bus-net");
|
|
6
|
+
var virtualSystem = require("virtual-system");
|
|
6
7
|
|
|
7
8
|
var telosServer = {
|
|
8
9
|
process: ((request, response) => {
|
|
@@ -149,6 +150,8 @@ var telosServer = {
|
|
|
149
150
|
return;
|
|
150
151
|
}
|
|
151
152
|
|
|
153
|
+
virtualSystem.initiateVirtualSystemDefault();
|
|
154
|
+
|
|
152
155
|
let options = packet.content.options.options;
|
|
153
156
|
|
|
154
157
|
if(options.port != false) {
|