diff --git a/app/utils/checkIndexSN.ts b/app/utils/checkIndexSN.ts
index bec3225..af7ae73 100644
--- a/app/utils/checkIndexSN.ts
+++ b/app/utils/checkIndexSN.ts
@@ -187,7 +187,7 @@ export const checkIndexSN = async (content, beginLine, nameF) => {
{ headers: { Authorization: "Bearer " + token } }
);
- if (Env.get("RUN_ENV") !== "prod") {
+ if (Env.get("RUN_ENV") === "prod") {
const response_int = await axios.post(
"https://int.ipsupply.com.au/api/transferPostData",
data,
diff --git a/app/utils/runtimeCheckLogs.ts b/app/utils/runtimeCheckLogs.ts
index bc09fbb..2b29ecd 100644
--- a/app/utils/runtimeCheckLogs.ts
+++ b/app/utils/runtimeCheckLogs.ts
@@ -38,9 +38,9 @@ export async function runtimeCheckLogs(folderPath) {
try {
const regex = /\(CAT3K_CAA-UNIVERSALK9-M\), Version 16\.9\.[2-9]/;
const regex1 =
- /\(CAT3K_CAA-UNIVERSALK9-M\), Version 1[7-9]\.[0-9]\.[2-9]/;
+ /\(CAT3K_CAA-UNIVERSALK9-M\), Version 1[7-9]\.[0-9]\.[0-9]/;
const regex2 =
- /\(CAT3K_CAA-UNIVERSALK9-M\), Version [2-9][0-9]\.[0-9]\.[2-9]/;
+ /\(CAT3K_CAA-UNIVERSALK9-M\), Version [2-9][0-9]\.[0-9]\.[0-9]/;
// Use the regular expression to find the match
const match = paragraph.match(regex);
const match1 = paragraph.match(regex1);
diff --git a/app/utils/sendDeviceInfor.ts b/app/utils/sendDeviceInfor.ts
new file mode 100644
index 0000000..162c7c8
--- /dev/null
+++ b/app/utils/sendDeviceInfor.ts
@@ -0,0 +1,314 @@
+import Env from "@ioc:Adonis/Core/Env";
+import fs from "fs";
+import moment from "moment/moment";
+import dotenv from "dotenv";
+import nodeMailer from "nodemailer";
+dotenv.config();
+
+export const sendDeviceInfora = async () => {
+ try {
+ //Regex check show inventory
+ const regexInventory = /sh.*? inv.*/;
+ //Regex check show version
+ const regexVersion = /sh.*? ver.*/;
+ const regexMemory = /(\d+)K/g;
+ const date = moment(Date.now()).format("YYYYMMDD");
+ const listInformation = [];
+ let html = "";
+ //List file today
+ const listFile = fs
+ .readdirSync(Env.get("FOLDER_LOGS"))
+
+ //Configure mail
+ const transporter = nodeMailer.createTransport({
+ pool: true,
+ host: "mail.ipsupply.com.au",
+ port: 465,
+ secure: true,
+ auth: {
+ user: "admin@apactech.io",
+ pass: "BGK!dyt6upd2eax1bhz",
+ },
+ });
+
+ //Read file in listFile
+ await listFile.map((file) => {
+ fs.readFile(Env.get("FOLDER_LOGS") + "/" + file, "utf8", (err, data) => {
+ if (err) {
+ console.log(`Error reading file: ${err}`);
+ } else {
+ //Array line
+ const lines = data?.split("\n");
+ const linesInventory = [];
+ //Get index of "lines" with show inv
+ lines?.map((line, index) => {
+ if (line.match(regexInventory) !== null) {
+ linesInventory.push(index);
+ }
+ });
+ // console.log(linesInventory);
+ //cut content with content1 = [linesInventory[index],linesInventory[index+1]] ...
+ linesInventory?.map((line, index) => {
+ const deviceContent = lines?.slice(
+ linesInventory[index],
+ linesInventory[index + 1]
+ );
+ let backgroundColor = "rgb(200 200 200 / 30%)"
+ const showInventory = [];
+ let check = true;
+ let begin = 0;
+ let end = 4;
+
+ //get showInventory content
+ while (check === true) {
+ if (
+ deviceContent
+ .slice(begin, end)
+ .filter(
+ (i) =>
+ i.includes("PID:") &&
+ i.includes("VID:") &&
+ i.includes("SN:")
+ ).length > 0
+ ) {
+ showInventory.push(deviceContent.slice(begin, end).join("\n"));
+ begin = end;
+ end = end + 4;
+ } else {
+ check = false;
+ }
+ }
+
+ const showInventoryContent = showInventory
+ .join("\n")
+ .split("\n")
+ .filter(
+ (i) =>
+ i.includes("PID:") && i.includes("VID:") && i.includes("SN:")
+ );
+
+ //show version exists
+ if (
+ deviceContent.filter((line) => line.match(regexVersion) !== null)
+ .length > 0
+ ) {
+ const lineShowver = deviceContent.indexOf(
+ deviceContent.filter(
+ (line) => line.match(regexVersion) !== null
+ )[0]
+ );
+
+ const showVersion = deviceContent.slice(
+ lineShowver,
+ deviceContent.indexOf(
+ deviceContent.filter(
+ (line) => line.search("Configuration register") !== -1
+ )[0]
+ ) + 1
+ );
+
+ showInventoryContent.map((u, index) => {
+ const PID = u
+ ?.split("VID:")[0]
+ ?.split("PID:")[1]
+ ?.replace(/,/g, "")
+ .trim();
+ const VID = u
+ ?.split("VID:")[1]
+ ?.split("SN:")[0]
+ ?.replace(/,/g, "")
+ .trim();
+ const SN = u?.split("SN:")[1]?.replace(/,/g, "").trim();
+ // let memory =
+ if (index > 0) {
+ if (PID !== "" && SN !== "") {
+ // let RAM =
+ // showVersion
+ // .filter((line) => line.includes("bytes of memory"))
+ // .join("
")
+ // .match(regexMemory) !== null
+ // ? (
+ // parseInt(
+ // showVersion
+ // .filter((line) =>
+ // line.includes("bytes of memory")
+ // )
+ // .join("
")
+ // .match(regexMemory)[0]
+ // ) /
+ // 1024 /
+ // 1024
+ // ).toFixed(2) + "G"
+ // : "";
+
+ // let flash = showVersion
+ // .filter((line) =>
+ // line.toLocaleLowerCase().includes("compactflash")
+ // )
+ // .join("
");
+ listInformation.push({
+ PID: PID,
+ VID: VID,
+ SN: SN,
+ RAM: "",
+ flash: "",
+ extraItem: "yes",
+ });
+
+ html += `
| PID | \ +VID | \ +SN | \ +RAM | \ +Flash | \ +Extra Item | \ +
|---|