avatarciao 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.
package/FS/basics.js ADDED
@@ -0,0 +1,54 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const baseDir = __dirname;
5
+ const filePath = path.join(baseDir, 'sample.txt');
6
+ const renamedFilePath = path.join(baseDir, 'renamed.txt');
7
+ const folderPath = path.join(baseDir, 'demoFolder');
8
+ const copyFolder = path.join(baseDir, 'backups');
9
+ const copiedFilePath = path.join(copyFolder, 'copied.txt');
10
+
11
+ fs.writeFile(filePath, 'Hello FS Module', () => {
12
+ fs.appendFile(filePath, '\nAppending new data', () => {
13
+ fs.readFile(filePath, 'utf8', (_, data) => {
14
+ console.log('\nREAD FILE:\n', data);
15
+
16
+ fs.rename(filePath, renamedFilePath, () => {
17
+ if (!fs.existsSync(folderPath)) {
18
+ fs.mkdirSync(folderPath);
19
+ }
20
+
21
+ fs.copyFile(renamedFilePath, path.join(folderPath, 'inside.txt'), () => {
22
+ if (!fs.existsSync(copyFolder)) {
23
+ fs.mkdirSync(copyFolder);
24
+ }
25
+
26
+ fs.copyFile(renamedFilePath, copiedFilePath, () => {
27
+ fs.stat(renamedFilePath, (_, stats) => {
28
+ console.log('\nFILE SIZE:', stats.size);
29
+
30
+ fs.readdir(baseDir, (_, files) => {
31
+ console.log('\nDIRECTORY FILES:', files);
32
+
33
+ const readStream = fs.createReadStream(renamedFilePath, 'utf8');
34
+ const writeStream = fs.createWriteStream(path.join(baseDir, 'stream.txt'));
35
+
36
+ readStream.pipe(writeStream);
37
+
38
+ setTimeout(() => {
39
+ fs.unlink(renamedFilePath, () => {
40
+ fs.rm(folderPath, { recursive: true, force: true }, () => {
41
+ fs.rm(copyFolder, { recursive: true, force: true }, () => {
42
+ console.log('\nALL FS OPERATIONS COMPLETED');
43
+ });
44
+ });
45
+ });
46
+ }, 500);
47
+ });
48
+ });
49
+ });
50
+ });
51
+ });
52
+ });
53
+ });
54
+ });
package/FS/copyFile.js ADDED
@@ -0,0 +1,18 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const sourceFile = path.join(__dirname, 'report.pdf');
5
+ const backupDir = path.join(__dirname, 'backups');
6
+ const destinationFile = path.join(backupDir, 'report.pdf');
7
+
8
+ if (!fs.existsSync(backupDir)) {
9
+ fs.mkdirSync(backupDir);
10
+ }
11
+
12
+ fs.copyFile(sourceFile, destinationFile, (err) => {
13
+ if (err) {
14
+ console.error('Error copying file:', err.message);
15
+ } else {
16
+ console.log('File copied successfully to backups/report.pdf');
17
+ }
18
+ });
@@ -0,0 +1,30 @@
1
+ const fs = require('fs');
2
+
3
+ const fileName = 'activity.log';
4
+
5
+ function getFormattedTime() {
6
+ const now = new Date();
7
+
8
+ const year = now.getFullYear();
9
+ const month = String(now.getMonth() + 1).padStart(2, '0');
10
+ const day = String(now.getDate()).padStart(2, '0');
11
+
12
+ const hours = String(now.getHours()).padStart(2, '0');
13
+ const minutes = String(now.getMinutes()).padStart(2, '0');
14
+ const seconds = String(now.getSeconds()).padStart(2, '0');
15
+
16
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
17
+ }
18
+
19
+ setInterval(() => {
20
+ const timeStamp = getFormattedTime();
21
+ const logEntry = `log entry at ${timeStamp}\n`;
22
+
23
+ fs.appendFile(fileName, logEntry, (err) => {
24
+ if (err) {
25
+ console.error('Error writing to file:', err);
26
+ } else {
27
+ console.log('Logged:', logEntry.trim());
28
+ }
29
+ });
30
+ }, 10000);
@@ -0,0 +1,73 @@
1
+ const https = require("https");
2
+ const fs = require("fs");
3
+ const path = require("path");
4
+
5
+ const options = {
6
+ key: fs.readFileSync(path.join(__dirname, "key.pem")),
7
+ cert: fs.readFileSync(path.join(__dirname, "cert.pem"))
8
+ };
9
+
10
+ function readFileData(filePath, callback) {
11
+ fs.readFile(filePath, "utf8", callback);
12
+ }
13
+
14
+ function writeFileData(filePath, data, callback) {
15
+ fs.writeFile(filePath, data, callback);
16
+ }
17
+
18
+ function appendFileData(filePath, data, callback) {
19
+ fs.appendFile(filePath, data, callback);
20
+ }
21
+
22
+ const server = https.createServer(options, (req, res) => {
23
+ if (req.method === "GET" && req.url === "/read") {
24
+ readFileData("data.txt", (err, data) => {
25
+ if (err) {
26
+ res.writeHead(500);
27
+ res.end("Error reading file");
28
+ } else {
29
+ res.writeHead(200, { "Content-Type": "text/plain" });
30
+ res.end(data);
31
+ }
32
+ });
33
+ }
34
+
35
+ else if (req.method === "POST" && req.url === "/write") {
36
+ let body = "";
37
+ req.on("data", chunk => body += chunk);
38
+ req.on("end", () => {
39
+ writeFileData("data.txt", body, err => {
40
+ if (err) {
41
+ res.writeHead(500);
42
+ res.end("Error writing file");
43
+ } else {
44
+ res.writeHead(200);
45
+ res.end("File written");
46
+ }
47
+ });
48
+ });
49
+ }
50
+
51
+ else if (req.method === "POST" && req.url === "/append") {
52
+ let body = "";
53
+ req.on("data", chunk => body += chunk);
54
+ req.on("end", () => {
55
+ appendFileData("data.txt", body, err => {
56
+ if (err) {
57
+ res.writeHead(500);
58
+ res.end("Error appending file");
59
+ } else {
60
+ res.writeHead(200);
61
+ res.end("File appended");
62
+ }
63
+ });
64
+ });
65
+ }
66
+
67
+ else {
68
+ res.writeHead(404);
69
+ res.end("Not Found");
70
+ }
71
+ });
72
+
73
+ server.listen(3000);
@@ -0,0 +1,44 @@
1
+ const http = require("http");
2
+ const querystring = require("querystring");
3
+
4
+ const server = http.createServer((req, res) => {
5
+ if (req.url === "/form" && req.method === "GET") {
6
+ res.writeHead(200, { "Content-Type": "text/html" });
7
+ res.end(`
8
+ <h2>User Form</h2>
9
+ <form method="POST" action="/form">
10
+ <label>Name:</label><br/>
11
+ <input type="text" name="name" required /><br/><br/>
12
+
13
+ <label>Email:</label><br/>
14
+ <input type="email" name="email" required /><br/><br/>
15
+
16
+ <button type="submit">Submit</button>
17
+ </form>
18
+ `);
19
+ }
20
+
21
+ else if (req.url === "/form" && req.method === "POST") {
22
+ let body = "";
23
+ req.on("data", chunk => {
24
+ body += chunk.toString();
25
+ });
26
+
27
+ req.on("end", () => {
28
+ const parsedData = querystring.parse(body);
29
+ const { name, email } = parsedData;
30
+
31
+ res.writeHead(200, { "Content-Type": "text/plain" });
32
+ res.end(`Thank you, ${name}. Your email is ${email}.`);
33
+ });
34
+ }
35
+
36
+ else {
37
+ res.writeHead(404, { "Content-Type": "text/plain" });
38
+ res.end("404 Not Found");
39
+ }
40
+ });
41
+
42
+ server.listen(3000, () => {
43
+ console.log("Server running at http://localhost:3000/form");
44
+ });
@@ -0,0 +1,34 @@
1
+ const http = require("http");
2
+ const fs = require("fs");
3
+ const path = require("path");
4
+
5
+ const server = http.createServer((req, res) => {
6
+ if (req.url.startsWith("/public/")) {
7
+ const filePath = path.join(__dirname, req.url);
8
+
9
+ fs.readFile(filePath, (err, data) => {
10
+ if (err) {
11
+ res.writeHead(404, { "Content-Type": "text/plain" });
12
+ res.end("404 Not Found");
13
+ } else {
14
+ const ext = path.extname(filePath);
15
+ const mimeTypes = {
16
+ ".css": "text/css",
17
+ ".js": "text/javascript",
18
+ ".png": "image/png",
19
+ ".jpg": "image/jpeg",
20
+ ".jpeg": "image/jpeg",
21
+ ".gif": "image/gif",
22
+ ".html": "text/html"
23
+ };
24
+ res.writeHead(200, { "Content-Type": mimeTypes[ext] || "text/plain" });
25
+ res.end(data);
26
+ }
27
+ });
28
+ } else {
29
+ res.writeHead(404, { "Content-Type": "text/plain" });
30
+ res.end("404 Not Found");
31
+ }
32
+ });
33
+
34
+ server.listen(3000);
package/JWT/u1.js ADDED
@@ -0,0 +1,78 @@
1
+ const express = require("express");
2
+ const jwt = require("jsonwebtoken");
3
+ const cookieParser = require("cookie-parser");
4
+ const bodyParser = require("body-parser");
5
+ const fs = require("fs");
6
+
7
+ const app = express();
8
+ const PORT = 3000;
9
+ const SECRET_KEY = "mysecretkey";
10
+
11
+ app.use(bodyParser.json());
12
+ app.use(cookieParser());
13
+
14
+ const users = JSON.parse(fs.readFileSync("./users.json", "utf-8"));
15
+
16
+ app.post("/login", (req, res) => {
17
+ const { username, password } = req.body;
18
+
19
+ const user = users.find(
20
+ u => u.username === username && u.password === password
21
+ );
22
+
23
+ if (!user) {
24
+ return res.status(401).json({ message: "Invalid username or password" });
25
+ }
26
+
27
+ const token = jwt.sign(
28
+ {
29
+ username: user.username,
30
+ role: user.role,
31
+ loginTime: new Date().toISOString()
32
+ },
33
+ SECRET_KEY,
34
+ { expiresIn: "1h" }
35
+ );
36
+
37
+ res.cookie("token", token, { httpOnly: true });
38
+
39
+ res.json({
40
+ redirect: user.role === "admin" ? "/adminhome" : "/userhome"
41
+ });
42
+ });
43
+
44
+ function verifyJWT(req, res, next) {
45
+ const token = req.cookies.token;
46
+ if (!token) return res.status(403).json({ message: "No token" });
47
+
48
+ jwt.verify(token, SECRET_KEY, (err, decoded) => {
49
+ if (err) return res.status(401).json({ message: "Invalid token" });
50
+ req.user = decoded;
51
+ next();
52
+ });
53
+ }
54
+
55
+ function authorizeRole(role) {
56
+ return (req, res, next) => {
57
+ if (req.user.role !== role)
58
+ return res.status(403).json({ message: "Access denied" });
59
+ next();
60
+ };
61
+ }
62
+
63
+ app.get("/adminhome", verifyJWT, authorizeRole("admin"), (req, res) => {
64
+ res.send(`Welcome Admin ${req.user.username}`);
65
+ });
66
+
67
+ app.get("/userhome", verifyJWT, authorizeRole("user"), (req, res) => {
68
+ res.send(`Welcome User ${req.user.username}`);
69
+ });
70
+
71
+ app.get("/logout", (req, res) => {
72
+ res.clearCookie("token");
73
+ res.send("Logged out");
74
+ });
75
+
76
+ app.listen(PORT, () => {
77
+ console.log(`Server running on http://localhost:${PORT}`);
78
+ });
package/JWT/u2.js ADDED
@@ -0,0 +1,92 @@
1
+ const express = require("express");
2
+ const jwt = require("jsonwebtoken");
3
+ const cookieParser = require("cookie-parser");
4
+ const bodyParser = require("body-parser");
5
+ const fs = require("fs");
6
+
7
+ const app = express();
8
+ const PORT = 3000;
9
+ const SECRET_KEY = "mysecretkey";
10
+
11
+ app.use(bodyParser.json());
12
+ app.use(cookieParser());
13
+
14
+ const users = JSON.parse(fs.readFileSync("./users.json", "utf-8"));
15
+
16
+ app.post("/login", (req, res) => {
17
+ const { username, password } = req.body;
18
+
19
+ const user = users.find(
20
+ u => u.username === username && u.password === password
21
+ );
22
+
23
+ if (!user) {
24
+ return res.status(401).json({ message: "Invalid username or password" });
25
+ }
26
+
27
+ const token = jwt.sign(
28
+ {
29
+ username: user.username,
30
+ role: user.role,
31
+ loginTime: Date.now()
32
+ },
33
+ SECRET_KEY,
34
+ { expiresIn: "1h" }
35
+ );
36
+
37
+ res.cookie("token", token, { httpOnly: true });
38
+
39
+ res.json({
40
+ redirect: user.role === "admin" ? "/adminhome" : "/userhome"
41
+ });
42
+ });
43
+
44
+ function verifyJWT(req, res, next) {
45
+ const token = req.cookies.token;
46
+
47
+ if (!token) {
48
+ return res.redirect("/login");
49
+ }
50
+
51
+ jwt.verify(token, SECRET_KEY, (err, decoded) => {
52
+ if (err) {
53
+ return res.redirect("/login");
54
+ }
55
+ req.user = decoded;
56
+ req.token = token;
57
+ next();
58
+ });
59
+ }
60
+
61
+ app.get("/profile", verifyJWT, (req, res) => {
62
+ const timeSinceLogin = Math.floor(
63
+ (Date.now() - req.user.loginTime) / 1000
64
+ );
65
+
66
+ res.json({
67
+ username: req.user.username,
68
+ timeSinceLogin: `${timeSinceLogin} seconds`,
69
+ token: req.token
70
+ });
71
+ });
72
+
73
+ app.get("/adminhome", verifyJWT, (req, res) => {
74
+ res.send(`Welcome Admin ${req.user.username}`);
75
+ });
76
+
77
+ app.get("/userhome", verifyJWT, (req, res) => {
78
+ res.send(`Welcome User ${req.user.username}`);
79
+ });
80
+
81
+ app.get("/logout", (req, res) => {
82
+ res.clearCookie("token");
83
+ res.redirect("/login");
84
+ });
85
+
86
+ app.get("/login", (req, res) => {
87
+ res.send("Login Page");
88
+ });
89
+
90
+ app.listen(PORT, () => {
91
+ console.log(`Server running on http://localhost:${PORT}`);
92
+ });
package/JWT/u3.js ADDED
@@ -0,0 +1,97 @@
1
+ const express = require("express");
2
+ const jwt = require("jsonwebtoken");
3
+ const cookieParser = require("cookie-parser");
4
+ const bodyParser = require("body-parser");
5
+ const fs = require("fs");
6
+
7
+ const app = express();
8
+ const PORT = 3000;
9
+ const SECRET_KEY = "mysecretkey";
10
+
11
+ app.use(bodyParser.json());
12
+ app.use(cookieParser());
13
+
14
+ const users = JSON.parse(fs.readFileSync("./users.json", "utf-8"));
15
+
16
+ app.post("/login", (req, res) => {
17
+ const { username, password } = req.body;
18
+
19
+ const user = users.find(
20
+ u => u.username === username && u.password === password
21
+ );
22
+
23
+ if (!user) {
24
+ return res.status(401).json({ message: "Invalid username or password" });
25
+ }
26
+
27
+ const token = jwt.sign(
28
+ {
29
+ username: user.username,
30
+ role: user.role,
31
+ loginTime: Date.now()
32
+ },
33
+ SECRET_KEY,
34
+ { expiresIn: "30m" }
35
+ );
36
+
37
+ res.cookie("token", token, { httpOnly: true });
38
+
39
+ res.json({
40
+ redirect: user.role === "admin" ? "/adminhome" : "/userhome"
41
+ });
42
+ });
43
+
44
+ function verifyJWT(req, res, next) {
45
+ const token = req.cookies.token;
46
+
47
+ if (!token) {
48
+ return res.redirect("/login?expired=true");
49
+ }
50
+
51
+ jwt.verify(token, SECRET_KEY, (err, decoded) => {
52
+ if (err) {
53
+ res.clearCookie("token");
54
+ return res.redirect("/login?expired=true");
55
+ }
56
+
57
+ req.user = decoded;
58
+ req.token = token;
59
+ next();
60
+ });
61
+ }
62
+
63
+ app.get("/profile", verifyJWT, (req, res) => {
64
+ const timeSinceLogin = Math.floor(
65
+ (Date.now() - req.user.loginTime) / 1000
66
+ );
67
+
68
+ res.json({
69
+ username: req.user.username,
70
+ timeSinceLogin: `${timeSinceLogin} seconds`,
71
+ token: req.token
72
+ });
73
+ });
74
+
75
+ app.get("/adminhome", verifyJWT, (req, res) => {
76
+ res.send(`Welcome Admin ${req.user.username}`);
77
+ });
78
+
79
+ app.get("/userhome", verifyJWT, (req, res) => {
80
+ res.send(`Welcome User ${req.user.username}`);
81
+ });
82
+
83
+ app.get("/logout", (req, res) => {
84
+ res.clearCookie("token");
85
+ res.redirect("/login");
86
+ });
87
+
88
+ app.get("/login", (req, res) => {
89
+ if (req.query.expired) {
90
+ return res.send("Session expired. Please login again.");
91
+ }
92
+ res.send("Login Page");
93
+ });
94
+
95
+ app.listen(PORT, () => {
96
+ console.log(`Server running on http://localhost:${PORT}`);
97
+ });
package/JWT/u4.js ADDED
@@ -0,0 +1,120 @@
1
+ const express = require("express");
2
+ const jwt = require("jsonwebtoken");
3
+ const cookieParser = require("cookie-parser");
4
+ const bodyParser = require("body-parser");
5
+ const fs = require("fs");
6
+
7
+ const app = express();
8
+ const PORT = 3000;
9
+ const SECRET_KEY = "mysecretkey";
10
+
11
+ app.use(bodyParser.json());
12
+ app.use(cookieParser());
13
+
14
+ const users = JSON.parse(fs.readFileSync("./users.json", "utf-8"));
15
+ const activeTokens = new Map();
16
+
17
+ app.post("/login", (req, res) => {
18
+ const { username, password } = req.body;
19
+
20
+ const user = users.find(
21
+ u => u.username === username && u.password === password
22
+ );
23
+
24
+ if (!user) {
25
+ return res.status(401).json({ message: "Invalid username or password" });
26
+ }
27
+
28
+ const issuedAt = Date.now();
29
+ const expiresAt = issuedAt + 30 * 60 * 1000;
30
+
31
+ const token = jwt.sign(
32
+ {
33
+ username: user.username,
34
+ role: user.role,
35
+ loginTime: issuedAt
36
+ },
37
+ SECRET_KEY,
38
+ { expiresIn: "30m" }
39
+ );
40
+
41
+ activeTokens.set(token, {
42
+ username: user.username,
43
+ issuedAt,
44
+ expiresAt
45
+ });
46
+
47
+ res.cookie("token", token, { httpOnly: true });
48
+
49
+ res.json({
50
+ redirect: user.role === "admin" ? "/adminhome" : "/userhome"
51
+ });
52
+ });
53
+
54
+ function verifyJWT(req, res, next) {
55
+ const token = req.cookies.token;
56
+
57
+ if (!token) {
58
+ return res.redirect("/login?expired=true");
59
+ }
60
+
61
+ jwt.verify(token, SECRET_KEY, (err, decoded) => {
62
+ if (err) {
63
+ activeTokens.delete(token);
64
+ res.clearCookie("token");
65
+ return res.redirect("/login?expired=true");
66
+ }
67
+
68
+ req.user = decoded;
69
+ req.token = token;
70
+ next();
71
+ });
72
+ }
73
+
74
+ function authorizeRole(role) {
75
+ return (req, res, next) => {
76
+ if (req.user.role !== role) {
77
+ return res.status(403).json({ message: "Access denied" });
78
+ }
79
+ next();
80
+ };
81
+ }
82
+
83
+ app.get("/admin/panel", verifyJWT, authorizeRole("admin"), (req, res) => {
84
+ const data = [];
85
+
86
+ for (const [token, info] of activeTokens.entries()) {
87
+ data.push({
88
+ username: info.username,
89
+ issuedAt: new Date(info.issuedAt).toISOString(),
90
+ expiresAt: new Date(info.expiresAt).toISOString()
91
+ });
92
+ }
93
+
94
+ res.json(data);
95
+ });
96
+
97
+ app.get("/adminhome", verifyJWT, authorizeRole("admin"), (req, res) => {
98
+ res.send("Admin Home");
99
+ });
100
+
101
+ app.get("/userhome", verifyJWT, authorizeRole("user"), (req, res) => {
102
+ res.send("User Home");
103
+ });
104
+
105
+ app.get("/logout", verifyJWT, (req, res) => {
106
+ activeTokens.delete(req.token);
107
+ res.clearCookie("token");
108
+ res.redirect("/login");
109
+ });
110
+
111
+ app.get("/login", (req, res) => {
112
+ if (req.query.expired) {
113
+ return res.send("Session expired. Please login again.");
114
+ }
115
+ res.send("Login Page");
116
+ });
117
+
118
+ app.listen(PORT, () => {
119
+ console.log(`Server running on http://localhost:${PORT}`);
120
+ });