350 lines
11 KiB
JavaScript
350 lines
11 KiB
JavaScript
const fs = require("fs");
|
|
const http = require("http");
|
|
|
|
const detectSerialNumber = async (fileName) => {
|
|
try {
|
|
let output = [];
|
|
const filetemp = fs.createWriteStream("./public/tempFolder/" + fileName);
|
|
const request = http.get(
|
|
"http://192.168.5.7:8080/" + fileName,
|
|
(response) => {
|
|
response.pipe(filetemp);
|
|
response.on("close", () => {
|
|
const data = fs.readFileSync(
|
|
"./public/tempFolder/" + fileName,
|
|
"utf8"
|
|
);
|
|
const arrayLine = data.split("\n");
|
|
for (let i = 0; i < arrayLine.length; i++) {
|
|
if (
|
|
arrayLine[i].search("PID:") !== -1 &&
|
|
arrayLine[i].search("SN:") !== -1
|
|
) {
|
|
if (
|
|
output.some(
|
|
(u) =>
|
|
u.SN ===
|
|
arrayLine[i]
|
|
?.split(",")[2]
|
|
.split(":")[1]
|
|
.replace("\r", "")
|
|
.trim()
|
|
)
|
|
) {
|
|
output.map((u, index) => {
|
|
if (
|
|
u.SN === arrayLine[i]?.split(",")[2].split(":")[1].trim()
|
|
) {
|
|
output[index].line = output[index].line.concat([i + 1]);
|
|
}
|
|
});
|
|
} else {
|
|
output.push({
|
|
PID:
|
|
arrayLine[i].split(",")[0] !== undefined
|
|
? arrayLine[i].split(",")[0].split(":")[1].trim()
|
|
: "",
|
|
SN:
|
|
arrayLine[i].split(",")[1] !== undefined
|
|
? arrayLine[i]
|
|
.split(",")[2]
|
|
.split(":")[1]
|
|
.replace("\r", "")
|
|
.trim()
|
|
: "",
|
|
line: [i + 1],
|
|
fileName: fileName,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
console.log(output);
|
|
return output;
|
|
});
|
|
}
|
|
);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
};
|
|
|
|
const getParagraph = (fileName, line, range) => {
|
|
try {
|
|
const file = fs.createWriteStream("logFile.log");
|
|
const request = http.get(
|
|
"http://192.168.5.7:8080/" + fileName,
|
|
(response) => {
|
|
response.pipe(file);
|
|
response.on("close", () => {
|
|
const data = fs.readFileSync("logFile.log", "utf8");
|
|
const arrayLine = data.split("\n");
|
|
console.log(
|
|
arrayLine.slice(line - range - 1, line + range).join("\n")
|
|
);
|
|
});
|
|
}
|
|
);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
};
|
|
|
|
const getListLog = async () => {
|
|
try {
|
|
let listLog = [];
|
|
const file = fs.createWriteStream("listFile.log");
|
|
const request = http.get("http://192.168.5.7:8080/", (response) => {
|
|
response.pipe(file);
|
|
response.on("close", () => {
|
|
const data = fs.readFileSync("listFile.log", "utf8");
|
|
const arrayLine = data
|
|
.split("\n")
|
|
.filter(
|
|
(i) =>
|
|
i.search("<a href") !== -1 &&
|
|
i.search(".log") !== -1 &&
|
|
i.search("2016") !== -1
|
|
);
|
|
arrayLine.map((u) => {
|
|
let temp = u
|
|
.slice(u.search("<a ") + 9, u.search("</a>"))
|
|
.split(">")[1];
|
|
listLog.push(
|
|
"http://192.168.5.7:8080/" +
|
|
u
|
|
.slice(u.search("<a ") + 9, u.search("</a>"))
|
|
.split(">")[1]+" "
|
|
);
|
|
});
|
|
fs.writeFile(
|
|
"listFile.log",
|
|
listLog.slice(1).join("\n"),
|
|
function (err) {
|
|
if (err) {
|
|
return console.error(err);
|
|
}
|
|
console.log("Write log !");
|
|
}
|
|
);
|
|
});
|
|
});
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
};
|
|
|
|
const test = async () => {
|
|
try {
|
|
let report = [];
|
|
const data = fs.readFileSync("listFile.log", "utf8");
|
|
const arrayLine1 = data.split("\n");
|
|
arrayLine1.map(async (file, index) => {
|
|
let output = [];
|
|
const old_data = fs.readFileSync("indexSN", "utf8");
|
|
|
|
// setTimeout(() => {
|
|
const filetemp = fs.createWriteStream("./public/tempFolder/" + file);
|
|
const request = http.get(
|
|
"http://192.168.5.7:8080/" + file,
|
|
(response) => {
|
|
response.pipe(filetemp);
|
|
// response.on
|
|
}
|
|
);
|
|
request.setTimeout(30000);
|
|
setTimeout(() => {
|
|
request.end();
|
|
// request.on("close", () => {
|
|
const data = fs.readFileSync("./public/tempFolder/" + file, "utf8");
|
|
const arrayLine = data.split("\n");
|
|
for (let i = 0; i < arrayLine.length; i++) {
|
|
if (
|
|
arrayLine[i].search("PID:") !== -1 &&
|
|
arrayLine[i].search("SN:") !== -1 &&
|
|
arrayLine[i]?.split(",")[2] !== undefined
|
|
) {
|
|
if (
|
|
output.some(
|
|
(u) =>
|
|
u.SN ===
|
|
arrayLine[i]
|
|
?.split(",")[2]
|
|
.split(":")[1]
|
|
.replace("\r", "")
|
|
.trim()
|
|
)
|
|
) {
|
|
output.map((u, index) => {
|
|
if (u.SN === arrayLine[i]?.split(",")[2].split(":")[1].trim()) {
|
|
output[index].line = output[index].line.concat([i + 1]);
|
|
}
|
|
});
|
|
} else {
|
|
output.push({
|
|
PID:
|
|
arrayLine[i].split(",")[0] !== undefined
|
|
? arrayLine[i].split(",")[0].split(":")[1].trim()
|
|
: "",
|
|
SN:
|
|
arrayLine[i].split(",")[1] !== undefined
|
|
? arrayLine[i]
|
|
.split(",")[2]
|
|
.split(":")[1]
|
|
.replace("\r", "")
|
|
.trim()
|
|
: "",
|
|
line: [i + 1],
|
|
fileName: file,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
fs.unlink("./public/tempFolder/" + file, (err) => {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
|
|
console.log("File is deleted.");
|
|
});
|
|
});
|
|
console.log(output);
|
|
report = report.concat(output);
|
|
}, 200);
|
|
|
|
console.log(index);
|
|
// }, 300);
|
|
// })
|
|
|
|
setTimeout(() => {
|
|
fs.writeFile(
|
|
"indexSN",
|
|
JSON.stringify(report).replace(/,{/g, "\n,{"),
|
|
function (err) {
|
|
if (err) {
|
|
return console.error(err);
|
|
}
|
|
console.log("Write log !");
|
|
}
|
|
);
|
|
}, 45000);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
};
|
|
// getParagraph("20170626-TEST02-Session.NT8-192.168.5.20.log", 889779, 1);
|
|
// detectSerialNumber("20170404-TEST01-Session.NT3-192.168.5.20.log")
|
|
// test()
|
|
//47538 ;
|
|
// getListLog();
|
|
|
|
// const http = require('http');
|
|
const axios = require("axios");
|
|
|
|
const fetchFiles = async () => {
|
|
try {
|
|
await getListLog();
|
|
setTimeout(async () => {
|
|
const data = fs.readFileSync("listFile.log", "utf8");
|
|
const urls = data.split("\n");
|
|
console.log(urls.length);
|
|
let report = [];
|
|
const fileContents = await Promise.all(
|
|
urls.map(async (url) => {
|
|
const maxRetries = 10;
|
|
let retries = 0;
|
|
while (retries < maxRetries) {
|
|
try {
|
|
const response = await axios.get(url?.split(" ")[0]);
|
|
return response.data;
|
|
} catch (error) {
|
|
if (error.code !== "") {
|
|
//=== "ETIMEDOUT" || error.code === "ECONNRESET"
|
|
console.log("Connection timed out. Retrying...");
|
|
retries++;
|
|
} else {
|
|
console.error("Error fetching file:", error);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
})
|
|
);
|
|
|
|
// Handle the file contents
|
|
fileContents.forEach((content, index) => {
|
|
console.log(`Content of file ${index + 1}:`, content?.slice(500, 570));
|
|
const arrayLine = content?.split("\n");
|
|
let output = [];
|
|
for (let i = 0; i < arrayLine.length; i++) {
|
|
if (
|
|
arrayLine[i].search("PID:") !== -1 &&
|
|
arrayLine[i].search("SN:") !== -1 &&
|
|
arrayLine[i]
|
|
?.split(",")[2]
|
|
?.split(":")[1]
|
|
?.replace("\r", "")
|
|
.trim() !== ""
|
|
) {
|
|
// console.log(output)
|
|
// console.log(Array(arrayLine[i]?.split(",")[2].split(":")[1].replace("\r", "").trim()))
|
|
if (
|
|
output.some(
|
|
(u) =>
|
|
u.SN ===
|
|
arrayLine[i]
|
|
?.split(",")[2]
|
|
?.split(":")[1]
|
|
.replace("\r", "")
|
|
.trim()
|
|
)
|
|
) {
|
|
output.map((u, index) => {
|
|
if (u.SN === arrayLine[i]?.split(",")[2].split(":")[1].trim()) {
|
|
output[index].line = output[index].line.concat([i + 1]);
|
|
}
|
|
});
|
|
} else {
|
|
output.push({
|
|
PID:
|
|
arrayLine[i]?.split(",")[0] !== undefined
|
|
? arrayLine[i]?.split(",")[0]?.split(":")[1] !== undefined
|
|
? arrayLine[i]?.split(",")[0]?.split(":")[1]?.trim()
|
|
: ""
|
|
: "",
|
|
SN:
|
|
arrayLine[i].split(",")[1] !== undefined
|
|
? arrayLine[i]
|
|
?.split(",")[2]
|
|
?.split(":")[1]
|
|
?.replace("\r", "")
|
|
.trim()
|
|
: "",
|
|
line: [i + 1],
|
|
fileName: urls[index],
|
|
});
|
|
}
|
|
}
|
|
}
|
|
report = report.concat(output);
|
|
|
|
if (index + 1 === urls.length) {
|
|
fs.writeFile(
|
|
"indexSN",
|
|
JSON.stringify(report).replace(/,{/g, "\n,{"),
|
|
function (err) {
|
|
if (err) {
|
|
return console.error(err);
|
|
}
|
|
console.log("Write log !");
|
|
}
|
|
);
|
|
}
|
|
});
|
|
}, 10000);
|
|
} catch (error) {
|
|
console.error("Error fetching files:", error);
|
|
}
|
|
};
|
|
|
|
fetchFiles();
|