webfast 0.1.35 → 0.1.38
Sign up to get free protection for your applications and to get access to all the features.
- package/app/content/js/webfast.js +148 -16
- package/example/content/js/test.js +2 -0
- package/example.js +6 -1
- package/modules/bots/applications/telegram/middleware/message/location.js +4 -0
- package/modules/bots/applications/telegram/middleware/message/photo.js +8 -4
- package/modules/bots/applications/telegram/scripts/function.js +1 -0
- package/modules/express/init.js +75 -11
- package/package.json +1 -1
@@ -1,6 +1,34 @@
|
|
1
1
|
console.log(`WebFast!`);
|
2
|
-
|
3
|
-
|
2
|
+
let web= {};
|
3
|
+
web.fast = {
|
4
|
+
ts : Date.now(),
|
5
|
+
action : function(data,ell) {
|
6
|
+
console.log(`Action Function`,data,ell);
|
7
|
+
},
|
8
|
+
functions : {
|
9
|
+
form : function(data,ell) {
|
10
|
+
console.log(`Handle Form Function`);
|
11
|
+
}
|
12
|
+
},
|
13
|
+
que : {
|
14
|
+
list : [],
|
15
|
+
state : false,
|
16
|
+
run : function(count){
|
17
|
+
// Grab first before sending
|
18
|
+
item = web.fast.que.list[0];
|
19
|
+
if (item != undefined) {
|
20
|
+
delete web.fast.que.list[0];
|
21
|
+
web.fast.que.list.slice(1);
|
22
|
+
console.log(`Sending Item`,item);
|
23
|
+
|
24
|
+
web.fast.socket.send(JSON.stringify(item)); // Send data to the server
|
25
|
+
}
|
26
|
+
}
|
27
|
+
},
|
28
|
+
tmp : {
|
29
|
+
int : {}
|
30
|
+
},
|
31
|
+
socket : undefined
|
4
32
|
}
|
5
33
|
// Connect to the Socket.IO server
|
6
34
|
const telegram = window.Telegram.WebApp;
|
@@ -18,25 +46,129 @@ if (telegram.initData == ``) {
|
|
18
46
|
|
19
47
|
const socketURL = `wss://${webfastSocket.replace(`https://`,``)}socket.io/?qbt=${setData}`;
|
20
48
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
49
|
+
// Assuming you have a variable `socketURL` containing your WebSocket URL
|
50
|
+
web.fast.connectWebSocket = function(socketURL,maxRetries = 40, retries = 0) {
|
51
|
+
web.fast.createWebSocket = function(socketURL, maxRetries, retries) {
|
52
|
+
const ws = new WebSocket(socketURL);
|
53
|
+
web.fast.socket = ws;
|
54
|
+
ws.onopen = () => {
|
55
|
+
console.log('WebSocket connected');
|
56
|
+
// Start other things (e.g., send initial data)
|
57
|
+
web.fast.que.state = true;
|
58
|
+
};
|
59
|
+
|
60
|
+
ws.onmessage = (event) => {
|
61
|
+
console.log('Received:', event.data);
|
62
|
+
// Handle received data
|
63
|
+
web.fast.que.state = Date.now();
|
64
|
+
web.fast.receive(`socket`,event.data); // Placeholder for processing response
|
65
|
+
};
|
66
|
+
|
67
|
+
ws.onclose = (event) => {
|
68
|
+
web.fast.que.state = false;
|
69
|
+
if (retries < maxRetries) {
|
70
|
+
retries++;
|
71
|
+
console.log(`WebSocket closed. Retrying in 10 seconds...`);
|
72
|
+
setTimeout(web.fast.createWebSocket(socketURL,maxRetries,retries), 10000); // Retry after 10 seconds
|
73
|
+
} else {
|
74
|
+
console.log(`WebSocket connection failed after ${maxRetries} attempts.`);
|
75
|
+
// Handle failure (e.g., show an error message)
|
76
|
+
}
|
77
|
+
};
|
78
|
+
|
79
|
+
ws.onerror = (error) => {
|
80
|
+
console.error('WebSocket error:', error);
|
81
|
+
// Handle error (e.g., show an error message)
|
82
|
+
web.fast.que.state = false;
|
83
|
+
};
|
84
|
+
|
85
|
+
// Send message to path for example api.example.event
|
86
|
+
web.fast.sendMessage = function(path,message) {
|
87
|
+
// Add to que
|
88
|
+
web.fast.que.list.push({
|
89
|
+
path : path,
|
90
|
+
message : message});
|
91
|
+
}
|
92
|
+
};
|
93
|
+
|
94
|
+
web.fast.createWebSocket(socketURL, maxRetries, retries); // Initial connection
|
95
|
+
}
|
25
96
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
97
|
+
// Call the function to start the WebSocket connection
|
98
|
+
web.fast.connectWebSocket(socketURL);
|
99
|
+
web.fast.receive = function(data) {
|
100
|
+
// Placeholder for processing the received data
|
101
|
+
// Implement your logic here (e.g., update UI, handle specific messages)
|
102
|
+
console.log('Processing received data:', data);
|
31
103
|
}
|
32
104
|
|
33
105
|
// On Ready desable all forms with jquery
|
34
106
|
jQuery(document).ready(function() {
|
35
|
-
|
36
|
-
|
107
|
+
|
108
|
+
// Make function
|
109
|
+
web.fast.tmp.int.que = setInterval(function(){
|
110
|
+
// This is the function
|
111
|
+
if (web.fast.que.state != false && web.fast.que.list.length > 0) {
|
112
|
+
// State check
|
113
|
+
web.fast.que.run();
|
114
|
+
}
|
115
|
+
},10);
|
116
|
+
|
117
|
+
// Scan for all webfast ellements
|
118
|
+
jQuery(`[webfast]`).each(function() {
|
119
|
+
let elementType = jQuery(this).prop('nodeName');
|
120
|
+
console.log('Element type:', elementType);
|
121
|
+
|
122
|
+
// Get now the data
|
123
|
+
let webAction = jQuery(this).attr(`webfast`);
|
124
|
+
let action = jQuery(this).attr(`webfast-${webAction}`);
|
125
|
+
console.log(`Data Actions webAction, action`,webAction,action);
|
126
|
+
|
127
|
+
// Create action runner
|
128
|
+
// Check if id
|
129
|
+
if (jQuery(this).attr(`id`) == undefined) {
|
130
|
+
const array = new Uint32Array(1);
|
131
|
+
window.crypto.getRandomValues(array);
|
132
|
+
const randomValue = array[0];
|
133
|
+
|
134
|
+
console.log(`Set UUID: ${randomValue}`);
|
135
|
+
jQuery(this).attr(`id`,randomValue);
|
136
|
+
}
|
37
137
|
|
38
|
-
|
39
|
-
|
40
|
-
|
138
|
+
switch (elementType) {
|
139
|
+
case "FORM":
|
140
|
+
jQuery(this).submit(function(e) {
|
141
|
+
e.preventDefault(); // Prevent the default form submission
|
142
|
+
|
143
|
+
// Check what to do like socketpath
|
144
|
+
web.fast.action(action,this,e);
|
145
|
+
return false;
|
146
|
+
});
|
147
|
+
break;
|
148
|
+
case "DIV":
|
149
|
+
// We will do the div element part
|
150
|
+
// check whyt type etc
|
151
|
+
// Make request to server with websocket thingy
|
152
|
+
// Set in QUE
|
153
|
+
let other;
|
154
|
+
if (action == `list`) {
|
155
|
+
other = {
|
156
|
+
type : action,
|
157
|
+
html : jQuery(this).html()
|
158
|
+
}
|
159
|
+
}
|
160
|
+
web.fast.sendMessage(`socket.api.${webAction}`,{
|
161
|
+
ts : Date.now(),
|
162
|
+
ell : jQuery(this).attr(`id`),
|
163
|
+
other : other
|
164
|
+
})
|
165
|
+
break;
|
166
|
+
case "BUTTON":
|
167
|
+
// Check button interaction
|
168
|
+
console.error(`SETUP BUTTON INTERACTION`);
|
169
|
+
break;
|
170
|
+
default:
|
171
|
+
console.error(`No Action for : ${elementType}`);
|
172
|
+
}
|
41
173
|
});
|
42
174
|
});
|
package/example.js
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
const path = require(`path`);
|
2
|
+
const contentPath = path.join(__dirname,`example`,`content`)
|
2
3
|
let program = require(path.join(__dirname,`index.js`))({
|
3
|
-
wget : '/usr/local/bin/wget'
|
4
|
+
wget : '/usr/local/bin/wget',
|
5
|
+
process : {
|
6
|
+
ts : Date.now()
|
7
|
+
},
|
8
|
+
contentPath : contentPath
|
4
9
|
});
|
5
10
|
console.log(`Required`);
|
@@ -5,6 +5,10 @@ module.exports = async function(req,res,body,params,command,middleValue) {
|
|
5
5
|
if (middleValue.location != undefined) {
|
6
6
|
locSendMessage = `Thank you for sending your location\n ${middleValue.location.longitude}\n${middleValue.location.latitude}`;
|
7
7
|
}
|
8
|
+
|
9
|
+
const scripting = await program.modules.telegram.script.function.check(program,command,middleValue.chat.id,middleValue,body);
|
10
|
+
console.log(scripting);
|
11
|
+
|
8
12
|
return {
|
9
13
|
message : locSendMessage,
|
10
14
|
response : {
|
@@ -49,11 +49,15 @@ module.exports = async function(program,req,res,body,params,command,middleValue)
|
|
49
49
|
console.log(scripting);
|
50
50
|
|
51
51
|
// Send back
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
if (scripting == true) {
|
53
|
+
return true;
|
54
|
+
} else {
|
55
|
+
return {
|
55
56
|
message : locSendMessage,
|
56
|
-
|
57
|
+
response : {
|
58
|
+
message : locSendMessage,
|
59
|
+
uuid : uuid
|
60
|
+
}
|
57
61
|
}
|
58
62
|
}
|
59
63
|
}
|
package/modules/express/init.js
CHANGED
@@ -2,6 +2,7 @@ module.exports = async function (program) {
|
|
2
2
|
console.log(`Starting UP Express`);
|
3
3
|
program.express = {
|
4
4
|
ts: Date.now(),
|
5
|
+
process : program.set.process
|
5
6
|
};
|
6
7
|
|
7
8
|
const express = require('express');
|
@@ -138,12 +139,18 @@ module.exports = async function (program) {
|
|
138
139
|
|
139
140
|
// Check if minify at the end
|
140
141
|
const fileName = req.params.file;
|
141
|
-
const
|
142
|
+
const isExtend = /-extend\.js$/.test(fileName);
|
142
143
|
|
143
|
-
if
|
144
|
-
|
145
|
-
|
144
|
+
// Check if extending
|
145
|
+
if (isExtend) {
|
146
|
+
console.log(`${fileName} ends with -extend.js`);
|
147
|
+
// IS extended file include loading in
|
148
|
+
|
149
|
+
const toRequestFile = req.params.file.replace(`-extend.js`, `.js`);
|
146
150
|
contentFolder = program.path.join(__dirname, `..`, `..`, `app`, `content`, req.params.type, toRequestFile);
|
151
|
+
// check if file exists in process, if not make it before giving out
|
152
|
+
// Check i
|
153
|
+
console.log(`Content Folder`);
|
147
154
|
} else {
|
148
155
|
console.log(`${fileName} does not end with -min.js`);
|
149
156
|
}
|
@@ -155,6 +162,33 @@ module.exports = async function (program) {
|
|
155
162
|
}
|
156
163
|
})
|
157
164
|
|
165
|
+
// Walkt through for paths to be open
|
166
|
+
if (program.set.contentPath != undefined) {
|
167
|
+
// Loop Through
|
168
|
+
const readDir = program.fs.readdirSync(program.set.contentPath);
|
169
|
+
|
170
|
+
// Create request app path for it
|
171
|
+
//loop through
|
172
|
+
for (let rdi in readDir) {
|
173
|
+
// Loop
|
174
|
+
const dirItem = readDir[rdi];
|
175
|
+
const dirPath = program.path.join(program.set.contentPath,dirItem);
|
176
|
+
// Now read the dir
|
177
|
+
// Create app.get
|
178
|
+
try {
|
179
|
+
const theRoute = `/inc/${dirItem}/*`;
|
180
|
+
app.get(theRoute, async (req, res) => {
|
181
|
+
const params = req.params;
|
182
|
+
console.log(`The Route is there`, theRoute);
|
183
|
+
});
|
184
|
+
|
185
|
+
} catch (err) {
|
186
|
+
console.error(`Errro for path read dir including something`, diritem);
|
187
|
+
}
|
188
|
+
}
|
189
|
+
console.log(`We have directory`);
|
190
|
+
}
|
191
|
+
|
158
192
|
app.listen(port, () => {
|
159
193
|
console.log(`Server Listening`, port, basePath);
|
160
194
|
});
|
@@ -267,16 +301,46 @@ module.exports = async function (program) {
|
|
267
301
|
});
|
268
302
|
|
269
303
|
// WebSocket on message event
|
270
|
-
ws.on('message', (message) => {
|
304
|
+
ws.on('message', async (message) => {
|
271
305
|
console.log(`Received message from ${clientId}: ${message}`);
|
272
306
|
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
307
|
+
try {
|
308
|
+
// Check for function
|
309
|
+
const json = JSON.parse(message.toString(`utf-8`));
|
310
|
+
const data = json.message;
|
311
|
+
const path = json.path;
|
312
|
+
const split = path.split(".")
|
313
|
+
|
314
|
+
// Check if function is running in program modules that you can add in the init scirpt when using remote
|
315
|
+
if (program.express.process != undefined) {
|
316
|
+
try {
|
317
|
+
let resp = await program.express.process[split[0]][split[1]][split[2]](program,ws,json,data,path);
|
318
|
+
if (resp != false) {
|
319
|
+
ws.send(JSON.stringify(resp));
|
320
|
+
}
|
321
|
+
} catch (err) {
|
322
|
+
console.error(`Error Running program.express.process for `,split[0],split[1],split[2]);
|
323
|
+
ws.send(JSON.stringify({
|
324
|
+
ts : Date.now(),
|
325
|
+
error : true,
|
326
|
+
message : `Error Event Program receive`
|
327
|
+
}));
|
328
|
+
}
|
278
329
|
}
|
279
|
-
|
330
|
+
|
331
|
+
// Add your custom on message logic here
|
332
|
+
// For example, you can broadcast the message to all connected clients
|
333
|
+
clients.forEach((client, id) => {
|
334
|
+
if (client.readyState === WebSocket.OPEN && id !== clientId) {
|
335
|
+
//ws.send(`Broadcast from ${clientId}: ${message}`);
|
336
|
+
}
|
337
|
+
});
|
338
|
+
|
339
|
+
// Check if
|
340
|
+
} catch(err) {
|
341
|
+
console.error(`Error Something`);
|
342
|
+
|
343
|
+
}
|
280
344
|
});
|
281
345
|
});
|
282
346
|
|