tinny-backend 1.0.0

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.
Files changed (86) hide show
  1. package/README.md +207 -0
  2. package/dist/admin/auth.d.ts +2 -0
  3. package/dist/admin/auth.d.ts.map +1 -0
  4. package/dist/admin/auth.js +2 -0
  5. package/dist/admin/auth.js.map +1 -0
  6. package/dist/admin/monitor.d.ts +2 -0
  7. package/dist/admin/monitor.d.ts.map +1 -0
  8. package/dist/admin/monitor.js +2 -0
  9. package/dist/admin/monitor.js.map +1 -0
  10. package/dist/admin/routes.d.ts +2 -0
  11. package/dist/admin/routes.d.ts.map +1 -0
  12. package/dist/admin/routes.js +2 -0
  13. package/dist/admin/routes.js.map +1 -0
  14. package/dist/app/index.d.ts +2 -0
  15. package/dist/app/index.d.ts.map +1 -0
  16. package/dist/app/index.js +19 -0
  17. package/dist/app/index.js.map +1 -0
  18. package/dist/core/Request.d.ts +4 -0
  19. package/dist/core/Request.d.ts.map +1 -0
  20. package/dist/core/Request.js +24 -0
  21. package/dist/core/Request.js.map +1 -0
  22. package/dist/core/Response.d.ts +4 -0
  23. package/dist/core/Response.d.ts.map +1 -0
  24. package/dist/core/Response.js +78 -0
  25. package/dist/core/Response.js.map +1 -0
  26. package/dist/core/Server.d.ts +30 -0
  27. package/dist/core/Server.d.ts.map +1 -0
  28. package/dist/core/Server.js +533 -0
  29. package/dist/core/Server.js.map +1 -0
  30. package/dist/core/types.d.ts +89 -0
  31. package/dist/core/types.d.ts.map +1 -0
  32. package/dist/core/types.js +3 -0
  33. package/dist/core/types.js.map +1 -0
  34. package/dist/examples/example.d.ts +2 -0
  35. package/dist/examples/example.d.ts.map +1 -0
  36. package/dist/examples/example.js +11 -0
  37. package/dist/examples/example.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +11 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/server.d.ts +127 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +625 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/src/admin/auth.d.ts +13 -0
  47. package/dist/src/admin/auth.d.ts.map +1 -0
  48. package/dist/src/admin/auth.js +60 -0
  49. package/dist/src/admin/auth.js.map +1 -0
  50. package/dist/src/admin/monitor.d.ts +3 -0
  51. package/dist/src/admin/monitor.d.ts.map +1 -0
  52. package/dist/src/admin/monitor.js +83 -0
  53. package/dist/src/admin/monitor.js.map +1 -0
  54. package/dist/src/admin/routes.d.ts +14 -0
  55. package/dist/src/admin/routes.d.ts.map +1 -0
  56. package/dist/src/admin/routes.js +150 -0
  57. package/dist/src/admin/routes.js.map +1 -0
  58. package/dist/src/core/Request.d.ts +4 -0
  59. package/dist/src/core/Request.d.ts.map +1 -0
  60. package/dist/src/core/Request.js +24 -0
  61. package/dist/src/core/Request.js.map +1 -0
  62. package/dist/src/core/Response.d.ts +4 -0
  63. package/dist/src/core/Response.d.ts.map +1 -0
  64. package/dist/src/core/Response.js +78 -0
  65. package/dist/src/core/Response.js.map +1 -0
  66. package/dist/src/core/Server.d.ts +34 -0
  67. package/dist/src/core/Server.d.ts.map +1 -0
  68. package/dist/src/core/Server.js +290 -0
  69. package/dist/src/core/Server.js.map +1 -0
  70. package/dist/src/core/types.d.ts +89 -0
  71. package/dist/src/core/types.d.ts.map +1 -0
  72. package/dist/src/core/types.js +3 -0
  73. package/dist/src/core/types.js.map +1 -0
  74. package/dist/src/index.d.ts +16 -0
  75. package/dist/src/index.d.ts.map +1 -0
  76. package/dist/src/index.js +17 -0
  77. package/dist/src/index.js.map +1 -0
  78. package/dist/src/utils/constants.d.ts +12 -0
  79. package/dist/src/utils/constants.d.ts.map +1 -0
  80. package/dist/src/utils/constants.js +12 -0
  81. package/dist/src/utils/constants.js.map +1 -0
  82. package/dist/utils/constants.d.ts +12 -0
  83. package/dist/utils/constants.d.ts.map +1 -0
  84. package/dist/utils/constants.js +12 -0
  85. package/dist/utils/constants.js.map +1 -0
  86. package/package.json +89 -0
@@ -0,0 +1,533 @@
1
+ import { colors } from "../utils/constants.js";
2
+ import { randomBytes } from "crypto";
3
+ import fs from "fs";
4
+ import path, { join } from "path";
5
+ import * as http from "http";
6
+ import * as net from "net";
7
+ import { fileURLToPath } from 'url';
8
+ import { readdir } from 'node:fs/promises';
9
+ import * as os from "node:os";
10
+ import * as JWT from "jsonwebtoken";
11
+ import * as DOTENV from "dotenv";
12
+ import RequestParser from "./Request.js";
13
+ import ResponseParser from "./Response.js";
14
+ export default class Server {
15
+ PORT;
16
+ hostname;
17
+ methodHandler;
18
+ decorators;
19
+ server;
20
+ sessions;
21
+ uptime;
22
+ reqCount;
23
+ logs;
24
+ ServerName;
25
+ defaultHandler;
26
+ generateKey() {
27
+ return randomBytes(16).toString('hex');
28
+ }
29
+ generateSession(ip) {
30
+ const session = {
31
+ ip,
32
+ lastReq: Date.now(),
33
+ reqCount: 0,
34
+ key: this.generateKey(),
35
+ banInterval: 60000
36
+ };
37
+ this.sessions.push(session);
38
+ return session;
39
+ }
40
+ getSession(ip) {
41
+ return this.sessions.filter((ses) => ses.ip === ip)[0];
42
+ }
43
+ getHost() {
44
+ return this.hostname;
45
+ }
46
+ getPort() {
47
+ return this.PORT;
48
+ }
49
+ add(opt) {
50
+ const newPath = opt.path.replace(/(?<=.)\/+$/, "");
51
+ const paramNames = [];
52
+ const parsedPath = newPath.replace(/:([^\/]+)/g, (_, paramName) => {
53
+ paramNames.push(paramName);
54
+ return "([^/]+)";
55
+ });
56
+ this.methodHandler.push({
57
+ method: opt.method,
58
+ handler: opt.handler,
59
+ regex: new RegExp(`^${parsedPath}$`),
60
+ path: newPath,
61
+ paramNames,
62
+ middelWares: opt.middelWares,
63
+ next: opt.next
64
+ });
65
+ this.log(`Setting a handler for ${opt.method} ${this.hostname}:${this.PORT}${opt.path.replace(/(?<=.)\/+$/, "")} [${opt.path.replace(/(?<=.)\/+$/, "")}]`);
66
+ }
67
+ decorate(name, data) {
68
+ this.decorators.push({
69
+ name,
70
+ data
71
+ });
72
+ }
73
+ useDecorator(name) {
74
+ if (this.decorators.length == 0)
75
+ return null;
76
+ return this.decorators.filter((dec) => dec.name === name)[0];
77
+ }
78
+ async readDir(DIR, prefix) {
79
+ try {
80
+ const entries = await readdir(DIR, { recursive: true, withFileTypes: true });
81
+ const result = { files: [] };
82
+ for (const entry of entries)
83
+ if (!entry.isDirectory())
84
+ result.files.push({ FileName: join(entry.parentPath, entry.name), prefix: join(prefix, entry.name) });
85
+ return result;
86
+ }
87
+ catch (error) {
88
+ this.log(`Error reading directory: ${DIR} error ${error}`, "error");
89
+ }
90
+ return null;
91
+ }
92
+ async servDir(DIR, pref, middelWares) {
93
+ let files = null;
94
+ try {
95
+ files = await this.readDir(DIR, pref);
96
+ }
97
+ catch {
98
+ this.log("an error happens when try to server a dir", "error");
99
+ }
100
+ if (!files) {
101
+ this.log("Failed to serve this dir", "error");
102
+ return;
103
+ }
104
+ let index = false;
105
+ for (let i = 0; i < files.files.length; i++) {
106
+ const filename = files.files[i]?.FileName.replace(/^\/+/, "/");
107
+ const prefix = files.files[i]?.prefix.replace(/^\/+/, "/");
108
+ if (!filename || !prefix)
109
+ break;
110
+ if ((path.basename(filename).startsWith("index") && path.dirname(filename) == DIR.replace(/\.\//g, '')) && !index) {
111
+ this.log(`setting ${filename} as default page for ${DIR}`);
112
+ this.add({
113
+ method: "GET",
114
+ path: `/${path.dirname(prefix)}`,
115
+ handler: (req, res) => {
116
+ this.SendFile(res, filename, 200);
117
+ return;
118
+ },
119
+ middelWares
120
+ });
121
+ index = true;
122
+ }
123
+ this.add({
124
+ method: "GET",
125
+ path: `/${prefix}`,
126
+ handler: async (req, res) => {
127
+ await this.SendFile(res, filename, 200);
128
+ return;
129
+ },
130
+ middelWares
131
+ });
132
+ }
133
+ if (!index) {
134
+ this.add({
135
+ method: "GET",
136
+ path: `/${pref}`,
137
+ handler: async (req, res) => {
138
+ res.send(200, {
139
+ ...files.files.map((file) => {
140
+ return {
141
+ "name": path.basename(file.FileName),
142
+ "url": `http://${this.hostname}:${this.PORT}/${file.prefix}`
143
+ };
144
+ })
145
+ });
146
+ },
147
+ middelWares
148
+ });
149
+ }
150
+ }
151
+ async SendFile(res, FILE, status) {
152
+ const __filename = fileURLToPath(import.meta.url);
153
+ const projectRoot = path.resolve(__filename, '..', '..');
154
+ const __dirname = projectRoot;
155
+ const filePath = path.join(__dirname, FILE);
156
+ const extName = String(path.extname(filePath)).toLowerCase();
157
+ const mimeTypes = {
158
+ '.txt': 'text/plain',
159
+ '.html': 'text/html',
160
+ '.css': 'text/css',
161
+ '.js': 'text/javascript',
162
+ '.png': 'image/png',
163
+ '.jpg': 'image/jpeg',
164
+ '.json': 'application/json',
165
+ '.mp4': 'video/mp4',
166
+ '.webm': 'video/webm',
167
+ '.ogg': 'video/ogg',
168
+ '.avi': 'video/x-msvideo'
169
+ };
170
+ const contentType = mimeTypes[extName] || 'application/octet-stream';
171
+ try {
172
+ await fs.promises.access(filePath, fs.constants.F_OK);
173
+ res.server.log(`sending file ${FILE} to ${res.ip}`, (status == 404 || status == 401) ? "error" : "message");
174
+ return res.sendFile(status, contentType, { PATH: filePath });
175
+ }
176
+ catch {
177
+ const errorPagePath = path.join(__dirname, 'public', 'stauts/404.html');
178
+ res.server.log(`cannot find ${FILE} to send to ${res.ip}`, "error");
179
+ return res.sendFile(404, 'text/html', { PATH: errorPagePath });
180
+ }
181
+ }
182
+ log(message, type) {
183
+ const DateObj = new Date();
184
+ const date = `${DateObj.toDateString() + " " + DateObj.toLocaleTimeString()}`;
185
+ const newType = type ?? message;
186
+ console.log(`[${colors.green}${date}${colors.reset}]`, `[${colors.yellow}${this.ServerName}${colors.reset}] =>`, `${(type == "error" ? colors.red : colors.white)}${message}${colors.reset}`);
187
+ if (this.logs.length > 100)
188
+ this.logs.shift();
189
+ this.logs.push({
190
+ message,
191
+ type: type ?? "message",
192
+ date
193
+ });
194
+ }
195
+ constructor(args) {
196
+ this.sessions = [];
197
+ this.decorators = [];
198
+ this.methodHandler = [];
199
+ this.hostname = args.hostname ?? "localhost";
200
+ this.PORT = args.port ?? 3000;
201
+ this.uptime = Date.now();
202
+ this.reqCount = 0;
203
+ this.logs = [];
204
+ this.ServerName = args.ServerName ?? "Server";
205
+ this.defaultHandler = args.DefaultHandler ?? (async (req, res) => {
206
+ this.log(`Sending defualt of this route ${req.ReqUrl?.pathname}`);
207
+ await this.SendFile(res, "public/status/404.html", 404);
208
+ });
209
+ this.server = http.createServer((req, res) => {
210
+ let body = "";
211
+ this.reqCount++;
212
+ const Req = RequestParser(req, this);
213
+ const Res = ResponseParser(res, Req, this);
214
+ req.on("data", (chunk) => {
215
+ body += chunk.toString();
216
+ });
217
+ req.on("end", async () => {
218
+ Req.body = body ? JSON.parse(body) : null;
219
+ body = "";
220
+ let handlersCount = 0;
221
+ for (let i = 0; i < this.methodHandler.length; i++) {
222
+ const match = Req.ReqUrl?.pathname.match(this.methodHandler[i]?.regex ?? "");
223
+ if (this.methodHandler[i]?.method == req.method
224
+ && match) {
225
+ Req.params = {};
226
+ this.methodHandler[i]?.paramNames.forEach((name, index) => {
227
+ Req.params[name] = match[index + 1] || "";
228
+ });
229
+ if (!Res.isClosed) {
230
+ if (this.methodHandler[i]?.middelWares && typeof this.methodHandler[i]?.middelWares != "undefined") {
231
+ for (const middelware of this.methodHandler[i]?.middelWares ?? []) {
232
+ await middelware(Req, Res);
233
+ if (Res.isClosed)
234
+ break;
235
+ }
236
+ }
237
+ if (!Res.isClosed)
238
+ await this.methodHandler[i]?.handler(req, res);
239
+ const nextFn = this.methodHandler[i]?.next;
240
+ if (typeof nextFn === "function")
241
+ await nextFn(Req, Res);
242
+ handlersCount++;
243
+ }
244
+ }
245
+ }
246
+ if (!handlersCount) {
247
+ this.defaultHandler(Req, Res);
248
+ }
249
+ });
250
+ });
251
+ this.server.on("connection", (socket) => {
252
+ const IP = socket.remoteAddress?.replace(/^.*:/, '') ?? "INVALID IP";
253
+ const RPORT = socket.remotePort ?? this.PORT;
254
+ this.log(`New connention recieved ip ${IP} on port ${RPORT}`);
255
+ socket.on("close", (hadError) => {
256
+ this.log(`Client has drop the connection ${IP}`, hadError ? "error" : "message");
257
+ });
258
+ socket.on("error", (err) => {
259
+ this.log(`Connection failed with ${IP}, cause : ${err.message}`, "error");
260
+ });
261
+ });
262
+ this.server.on("close", () => {
263
+ this.log(`Server has successfully stopped accepting connections`);
264
+ });
265
+ this.server.on("error", (err) => {
266
+ this.log(err.message, "error");
267
+ });
268
+ }
269
+ monitor(server) {
270
+ DOTENV.config();
271
+ let username = process.env.ADMIN_USERNAME || "";
272
+ let password = process.env.ADMIN_PASSWORD || "";
273
+ const key = process.env.ADMIN_KEY || "";
274
+ const sessions = [];
275
+ if (key === "" || username === "" || password === "") {
276
+ server.log(`cannot set ${key === "" ? "ADMIN_KEY" : username === "" ? "ADMIN_USERnAME" : password === "" ? "ADMIN_PASSWORD" : ""} as empty in .env, read tinny-backend doc`, "error");
277
+ return;
278
+ }
279
+ const isAuthed = (res) => {
280
+ const TOKEN = res.getCookie("token");
281
+ if (!TOKEN)
282
+ return false;
283
+ try {
284
+ const decoded = JWT.default.verify(TOKEN.value, key);
285
+ if (typeof decoded.id === undefined)
286
+ throw new Error("None valid token");
287
+ for (let i = 0; i < sessions.length; i++) {
288
+ if (sessions[i]?.id === decoded.id) {
289
+ if (!sessions[i]?.isValid)
290
+ throw new Error("None valid token");
291
+ sessions[i].request += 1;
292
+ res.currentID = decoded.id;
293
+ return true;
294
+ }
295
+ }
296
+ throw new Error("None valid UUID");
297
+ }
298
+ catch {
299
+ server.log("a user try to login to admin panel using none valid token", "error");
300
+ return false;
301
+ }
302
+ return true;
303
+ };
304
+ const Login = async (req, res) => {
305
+ let token;
306
+ try {
307
+ if (!req.body.username || req.body.username !== username || !req.body.password || req.body.password !== password)
308
+ throw new Error("User has entred a none valid cridentials");
309
+ const SESSION_ID = crypto.randomUUID();
310
+ token = JWT.default.sign({ id: SESSION_ID }, key, { expiresIn: "1h" });
311
+ res.addCookie("token", token);
312
+ sessions.push({
313
+ id: SESSION_ID,
314
+ isValid: true,
315
+ creation: Date.now(),
316
+ userAgent: req.headers["user-agent"] ?? "DEVICE",
317
+ ip: req.ip ?? "UNKNOWN",
318
+ request: 0
319
+ });
320
+ res.send(200, "./public/admin/index.html", { "set-cookie": `token=${token}; Path=/; SameSite=Lax; HttpOnly` });
321
+ }
322
+ catch (err) {
323
+ server.log(err.message, "error");
324
+ server.log("A user entred a none valid cridentionl", "error");
325
+ res.send(403, { "Error": "Access Denied" });
326
+ }
327
+ };
328
+ const Logout = async (req, res) => {
329
+ let payloud;
330
+ const TOKEN = res.getCookie("token");
331
+ if (!TOKEN)
332
+ return server.SendFile(res, "public/login/index.html", 401);
333
+ try {
334
+ payloud = JWT.default.verify(TOKEN.value, key);
335
+ if (typeof payloud.id === "undefined")
336
+ throw new Error("an Error is happens");
337
+ for (let i = 0; i < sessions.length; i++) {
338
+ if (sessions[i]?.id === payloud.id) {
339
+ if (!sessions[i]?.isValid)
340
+ throw new Error("None valid token");
341
+ sessions[i].request += 1;
342
+ sessions[i].isValid = false;
343
+ break;
344
+ }
345
+ }
346
+ return await server.SendFile(res, "public/login/index.html", 200);
347
+ }
348
+ catch (err) {
349
+ server.log(err.message, "error");
350
+ res.send(403, { "Error": "Access Denied" });
351
+ }
352
+ };
353
+ const Auth = async (req, res) => {
354
+ if (!isAuthed(res)) {
355
+ if (req.ReqUrl?.pathname == "/")
356
+ return await server.SendFile(res, "public/login/index.html", 401);
357
+ return await server.SendFile(res, "public/status/401.html", 401);
358
+ }
359
+ if (req.ReqUrl?.pathname == "/")
360
+ return await server.SendFile(res, "public/admin/index.html", 200);
361
+ };
362
+ server.add({
363
+ method: "POST",
364
+ handler: Login,
365
+ path: "/api/login"
366
+ });
367
+ server.add({
368
+ method: "GET",
369
+ middelWares: [Auth],
370
+ handler: async (req, res) => {
371
+ return await server.SendFile(res, "public/login/index.html", 200);
372
+ },
373
+ path: "/"
374
+ });
375
+ server.add({
376
+ method: "GET",
377
+ middelWares: [Auth],
378
+ handler: Logout,
379
+ path: "/api/logout"
380
+ });
381
+ server.add({
382
+ method: "GET",
383
+ middelWares: [Auth],
384
+ path: "/admin/status",
385
+ handler: async (req, res) => {
386
+ const now = Date.now();
387
+ res.send(200, {
388
+ "Machin uptime": `${Math.floor(os.uptime() / 86400)}d ${Math.floor((os.uptime() % 86400) / 3600)}h ${Math.floor((os.uptime() % 3600) / 60)}m`,
389
+ "Server uptime": `${Math.floor((now - this.uptime) / (1000 * 60 * 60 * 24)) % 60}D ${Math.floor((now - this.uptime) / (1000 * 60 * 60)) % 60}H ${Math.floor((now - this.uptime) / (1000 * 60)) % 60}M ${Math.floor((now - this.uptime) / 1000) % 60}S`,
390
+ "Arch": os.arch(),
391
+ "Platform": os.platform(),
392
+ "Memory": `${(os.totalmem() / (1024 ** 3)).toFixed(2)} GB`,
393
+ "Used Memory": `${((os.totalmem() - os.freemem()) / (1024 ** 3)).toFixed(2)} GB`,
394
+ "Free Memory": `${(os.freemem() / (1024 ** 3)).toFixed(2)} GB`,
395
+ "Cpu": os.cpus()[0],
396
+ "Connected clients": this.sessions.length,
397
+ "Total requests": this.reqCount,
398
+ "Currnet-session": res.currentID,
399
+ "sessions": sessions,
400
+ "routes": this.methodHandler,
401
+ "logs": this.logs
402
+ });
403
+ }
404
+ });
405
+ server.add({
406
+ method: "GET",
407
+ middelWares: [Auth],
408
+ path: "/messages",
409
+ handler: async (req, res) => {
410
+ res.send(200, {
411
+ "logs": this.logs
412
+ });
413
+ }
414
+ });
415
+ server.add({
416
+ method: "GET",
417
+ path: "/passwd",
418
+ handler: async (req, res) => {
419
+ return await this.SendFile(res, "./public/login/new-password.html", 200);
420
+ }
421
+ });
422
+ server.add({
423
+ method: "GET",
424
+ path: "/api/passwd/:username",
425
+ handler: async (req, res) => {
426
+ let userName = req.params.username;
427
+ if (typeof username === undefined)
428
+ return res.send(404, { "user": userName, status: "not found" });
429
+ if (userName === username)
430
+ return res.send(200, { "user": userName, status: "found" });
431
+ return res.send(404, { "user": userName, status: "not found" });
432
+ }
433
+ });
434
+ server.add({
435
+ method: "POST",
436
+ path: "/api/passwd/change",
437
+ handler: async (req, res) => {
438
+ try {
439
+ const { userName, oldpwd, newpwd } = req.body;
440
+ console.log(req.body);
441
+ if (!userName || !oldpwd || !newpwd)
442
+ return res.send(400, { "user": userName || 'unknown', status: 'missing fields', message: 'Username, old password, and new password are required' });
443
+ if (userName !== username)
444
+ return res.send(404, { "user": userName, status: 'this username not found', message: `${userName} not found` });
445
+ if (oldpwd !== password)
446
+ return res.send(401, { "user": userName, status: 'password not corect', message: `Password not corect for ${userName}` });
447
+ if (newpwd.length < 8)
448
+ return res.send(400, { "user": userName, status: 'password must be 8 char +' });
449
+ if (oldpwd === newpwd || newpwd === password)
450
+ return res.send(400, { "user": userName, status: 'new password must be different', message: 'New password must be different from current password' });
451
+ password = newpwd;
452
+ return res.send(200, { "user": userName, status: 'password changed', message: 'Password updated successfully' });
453
+ }
454
+ catch (error) {
455
+ server.log(`Password change error: ${error}`, "error");
456
+ return res.send(500, { "user": req.body?.username || 'unknown', status: 'error', message: 'Internal server error' });
457
+ }
458
+ }
459
+ });
460
+ server.add({
461
+ method: "POST",
462
+ middelWares: [Auth],
463
+ path: "/api/logout/:SessionId",
464
+ handler: async (req, res) => {
465
+ let SessionID = req.params.SessionId;
466
+ if (typeof SessionID === undefined)
467
+ return res.send(404, { status: "not found" });
468
+ for (let i = 0; i < sessions.length; i++) {
469
+ if (SessionID === sessions[i]?.id) {
470
+ sessions[i].isValid = false;
471
+ return res.send(200, { status: `session ${SessionID} logouted` });
472
+ }
473
+ }
474
+ return res.send(404, { status: "not found" });
475
+ }
476
+ });
477
+ server.add({
478
+ method: "POST",
479
+ middelWares: [Auth],
480
+ path: "/passwd/change/auth",
481
+ handler: async (req, res) => {
482
+ try {
483
+ const { oldpwd, newpwd } = req.body;
484
+ if (!oldpwd || !newpwd)
485
+ return res.send(401, { status: "all field are required !" });
486
+ if (oldpwd !== password)
487
+ return res.send(401, { status: "incorect password" });
488
+ if (oldpwd === newpwd)
489
+ return res.send(400, { status: "old pwd must be defrent from new one" });
490
+ password = newpwd;
491
+ return res.send(200, { status: "password changed with secc" });
492
+ }
493
+ catch {
494
+ res.send(500, { status: "internal server error" });
495
+ }
496
+ return res.send(401, { status: "?" });
497
+ }
498
+ });
499
+ server.add({
500
+ method: "POST",
501
+ middelWares: [Auth],
502
+ path: "/api/user/change",
503
+ handler: async (req, res) => {
504
+ try {
505
+ const { userName } = req.body;
506
+ if (!userName)
507
+ return res.send(401, { status: "all field are required !" });
508
+ if (userName.length <= 3 || userName.length >= 20)
509
+ return res.send(400, { status: "username must be between 4-19" });
510
+ username = userName;
511
+ return res.send(200, { status: "username changed with secc" });
512
+ }
513
+ catch {
514
+ res.send(500, { status: "internal server error" });
515
+ }
516
+ return res.send(401, { status: "?" });
517
+ }
518
+ });
519
+ server.servDir("./public/doc", "docs");
520
+ server.servDir("./public/imgs", "imgs");
521
+ server.servDir("./public/login", "/", [Auth]);
522
+ server.servDir("./public/admin", "admin", [Auth]);
523
+ server.listen(false);
524
+ }
525
+ listen(enableMon, callback) {
526
+ if (enableMon)
527
+ this.monitor(new Server({ port: this.PORT + 1, ServerName: "Monitor" }));
528
+ this.server.listen(this.PORT, callback ?? (() => {
529
+ this.log(`start listening in http://${this.hostname}:${this.PORT}`);
530
+ }));
531
+ }
532
+ }
533
+ //# sourceMappingURL=Server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/core/Server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import * as http from "http";
2
+ import Server from "./Server.js";
3
+ export type HandlerFun = (req: ServerReq, res: ServerRes) => void | Promise<void>;
4
+ export type AddOption = {
5
+ method: Methods;
6
+ path: string;
7
+ handler: HandlerFun;
8
+ middelWares?: HandlerFun[] | undefined;
9
+ next?: HandlerFun;
10
+ };
11
+ export type Logs = {
12
+ message: string;
13
+ type: "message" | "error";
14
+ date: string;
15
+ };
16
+ export type Headers = {
17
+ key: string;
18
+ value: string;
19
+ };
20
+ export type Cookie = {
21
+ key: string;
22
+ value: string;
23
+ };
24
+ export type ServerOptions = {
25
+ port?: number;
26
+ hostname?: string;
27
+ reqPerMinute?: number;
28
+ DefaultHandler?: HandlerFun;
29
+ ServerName?: string;
30
+ };
31
+ export type ServerReq = http.IncomingMessage & {
32
+ ReqUrl: URL | null;
33
+ Query: URLSearchParams;
34
+ queries: object;
35
+ body?: any;
36
+ ip: string;
37
+ server: Server;
38
+ params: Record<string, string>;
39
+ };
40
+ export type ServFiles = {
41
+ FileName: string;
42
+ prefix: string;
43
+ };
44
+ export type DirFiles = {
45
+ files: ServFiles[];
46
+ };
47
+ export type ServerRes = http.ServerResponse & {
48
+ body?: any;
49
+ ip: string;
50
+ send: (status: number, data?: any, headers?: object) => void;
51
+ sendFile: (status: number, ContentType: string, data?: any, headers?: object) => void;
52
+ isClosed: boolean;
53
+ server: Server;
54
+ coockie: (key: string, value: string) => string;
55
+ getAllCookies: () => string[];
56
+ setCookie: (name: string, value: string) => void;
57
+ getCookie: (name: string) => Cookie | null;
58
+ addCookie: (name: string, value: string) => void;
59
+ };
60
+ export type Methods = "POST" | "GET" | "PUT" | "DELETE";
61
+ export type Handlers = {
62
+ method: Methods;
63
+ path: string;
64
+ paramNames: string[];
65
+ handler: Function;
66
+ regex: RegExp;
67
+ middelWares?: HandlerFun[] | undefined;
68
+ next?: HandlerFun | undefined;
69
+ };
70
+ export type Decorator = {
71
+ name: string;
72
+ data: any;
73
+ };
74
+ export type Session = {
75
+ ip: string;
76
+ lastReq: number;
77
+ reqCount: number;
78
+ key: string;
79
+ banInterval: number;
80
+ };
81
+ export type AdminSessions = {
82
+ id: string;
83
+ ip: string;
84
+ userAgent: string;
85
+ creation: number;
86
+ isValid: boolean;
87
+ request: number;
88
+ };
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}