create function sendDeviceInfor to mail
This commit is contained in:
		
							parent
							
								
									97a270777d
								
							
						
					
					
						commit
						1aa8acc161
					
				| 
						 | 
					@ -38,9 +38,9 @@ export async function runtimeCheckLogs(folderPath) {
 | 
				
			||||||
      try {
 | 
					      try {
 | 
				
			||||||
        const regex = /\(CAT3K_CAA-UNIVERSALK9-M\), Version 16\.9\.[2-9]/;
 | 
					        const regex = /\(CAT3K_CAA-UNIVERSALK9-M\), Version 16\.9\.[2-9]/;
 | 
				
			||||||
        const regex1 =
 | 
					        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 =
 | 
					        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
 | 
					        // Use the regular expression to find the match
 | 
				
			||||||
        const match = paragraph.match(regex);
 | 
					        const match = paragraph.match(regex);
 | 
				
			||||||
        const match1 = paragraph.match(regex1);
 | 
					        const match1 = paragraph.match(regex1);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,315 @@
 | 
				
			||||||
 | 
					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'))
 | 
				
			||||||
 | 
					      .filter((f) => f.includes("TEST01"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //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]
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					            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 =
 | 
				
			||||||
 | 
					                      (
 | 
				
			||||||
 | 
					                        parseInt(
 | 
				
			||||||
 | 
					                          showVersion
 | 
				
			||||||
 | 
					                            .filter((line) => line.includes("bytes of memory"))
 | 
				
			||||||
 | 
					                            .join("<br>")
 | 
				
			||||||
 | 
					                            .match(regexMemory)[0]
 | 
				
			||||||
 | 
					                        ) /
 | 
				
			||||||
 | 
					                        1024 /
 | 
				
			||||||
 | 
					                        1024
 | 
				
			||||||
 | 
					                      ).toFixed(2) + "G";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    let flash = showVersion
 | 
				
			||||||
 | 
					                      .filter((line) =>
 | 
				
			||||||
 | 
					                        line.toLocaleLowerCase().includes("compactflash")
 | 
				
			||||||
 | 
					                      )
 | 
				
			||||||
 | 
					                      .join("<br>");
 | 
				
			||||||
 | 
					                    listInformation.push({
 | 
				
			||||||
 | 
					                      PID: PID,
 | 
				
			||||||
 | 
					                      VID: VID,
 | 
				
			||||||
 | 
					                      SN: SN,
 | 
				
			||||||
 | 
					                      RAM: RAM,
 | 
				
			||||||
 | 
					                      flash:
 | 
				
			||||||
 | 
					                        flash.match(regexMemory) !== null
 | 
				
			||||||
 | 
					                          ? (
 | 
				
			||||||
 | 
					                              parseInt(flash.match(regexMemory)[0]) /
 | 
				
			||||||
 | 
					                              1024 /
 | 
				
			||||||
 | 
					                              1024
 | 
				
			||||||
 | 
					                            ).toFixed(2) + "G"
 | 
				
			||||||
 | 
					                          : "",
 | 
				
			||||||
 | 
					                      extraItem: "yes",
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    html += `<tr><td>${PID}</td>
 | 
				
			||||||
 | 
					                  <td>${VID}</td>
 | 
				
			||||||
 | 
					                  <td>${SN}</td>
 | 
				
			||||||
 | 
					                  <td>${RAM}</td>
 | 
				
			||||||
 | 
					                  <td>${
 | 
				
			||||||
 | 
					                    flash.match(regexMemory) !== null
 | 
				
			||||||
 | 
					                      ? (
 | 
				
			||||||
 | 
					                          parseInt(flash.match(regexMemory)[0]) /
 | 
				
			||||||
 | 
					                          1024 /
 | 
				
			||||||
 | 
					                          1024
 | 
				
			||||||
 | 
					                        ).toFixed(2) + "G"
 | 
				
			||||||
 | 
					                      : ""
 | 
				
			||||||
 | 
					                  }</td>
 | 
				
			||||||
 | 
					                  <td>yes</td></tr>`;
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                  if (PID !== "" && SN !== "") {
 | 
				
			||||||
 | 
					                    let RAM =
 | 
				
			||||||
 | 
					                      (
 | 
				
			||||||
 | 
					                        parseInt(
 | 
				
			||||||
 | 
					                          showVersion
 | 
				
			||||||
 | 
					                            .filter((line) => line.includes("bytes of memory"))
 | 
				
			||||||
 | 
					                            .join("<br>")
 | 
				
			||||||
 | 
					                            .match(regexMemory)[0]
 | 
				
			||||||
 | 
					                        ) /
 | 
				
			||||||
 | 
					                        1024 /
 | 
				
			||||||
 | 
					                        1024
 | 
				
			||||||
 | 
					                      ).toFixed(2) + "G";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    let flash = showVersion
 | 
				
			||||||
 | 
					                      .filter((line) =>
 | 
				
			||||||
 | 
					                        line.toLocaleLowerCase().includes("compactflash")
 | 
				
			||||||
 | 
					                      )
 | 
				
			||||||
 | 
					                      .join("<br>");
 | 
				
			||||||
 | 
					                    listInformation.push({
 | 
				
			||||||
 | 
					                      PID: PID,
 | 
				
			||||||
 | 
					                      VID: VID,
 | 
				
			||||||
 | 
					                      SN: SN,
 | 
				
			||||||
 | 
					                      RAM: RAM,
 | 
				
			||||||
 | 
					                      flash:
 | 
				
			||||||
 | 
					                        flash.match(regexMemory) !== null
 | 
				
			||||||
 | 
					                          ? (
 | 
				
			||||||
 | 
					                              parseInt(flash.match(regexMemory)[0]) /
 | 
				
			||||||
 | 
					                              1024 /
 | 
				
			||||||
 | 
					                              1024
 | 
				
			||||||
 | 
					                            ).toFixed(2) + "G"
 | 
				
			||||||
 | 
					                          : "",
 | 
				
			||||||
 | 
					                      extraItem: "no",
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    html += `<tr><td>${PID}</td>
 | 
				
			||||||
 | 
					                  <td>${VID}</td>
 | 
				
			||||||
 | 
					                  <td>${SN}</td>
 | 
				
			||||||
 | 
					                  <td>${RAM}</td>
 | 
				
			||||||
 | 
					                  <td>${
 | 
				
			||||||
 | 
					                    flash.match(regexMemory) !== null
 | 
				
			||||||
 | 
					                      ? (
 | 
				
			||||||
 | 
					                          parseInt(flash.match(regexMemory)[0]) /
 | 
				
			||||||
 | 
					                          1024 /
 | 
				
			||||||
 | 
					                          1024
 | 
				
			||||||
 | 
					                        ).toFixed(2) + "G"
 | 
				
			||||||
 | 
					                      : ""
 | 
				
			||||||
 | 
					                  }</td>
 | 
				
			||||||
 | 
					                  <td>no</td></tr>`;
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              });
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					              //show version not exists --> RAM = N/A, Flash = N/A
 | 
				
			||||||
 | 
					              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();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (index > 0) {
 | 
				
			||||||
 | 
					                  if (PID !== "" && SN !== "") {
 | 
				
			||||||
 | 
					                    listInformation.push({
 | 
				
			||||||
 | 
					                      PID: PID,
 | 
				
			||||||
 | 
					                      VID: VID,
 | 
				
			||||||
 | 
					                      SN: SN,
 | 
				
			||||||
 | 
					                      RAM: "",
 | 
				
			||||||
 | 
					                      flash: "",
 | 
				
			||||||
 | 
					                      extraItem: "yes",
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    html += `<tr><td>${PID}</td>
 | 
				
			||||||
 | 
					                  <td>${VID}</td>
 | 
				
			||||||
 | 
					                  <td>${SN}</td>
 | 
				
			||||||
 | 
					                  <td></td>
 | 
				
			||||||
 | 
					                  <td></td>
 | 
				
			||||||
 | 
					                  <td>yes</td></tr>`;
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                  if (PID !== "" && SN !== "") {
 | 
				
			||||||
 | 
					                    listInformation.push({
 | 
				
			||||||
 | 
					                      PID: PID,
 | 
				
			||||||
 | 
					                      VID: VID,
 | 
				
			||||||
 | 
					                      SN: SN,
 | 
				
			||||||
 | 
					                      RAM: "",
 | 
				
			||||||
 | 
					                      flash: "",
 | 
				
			||||||
 | 
					                      extraItem: "no",
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    html += `<tr><td>${PID}</td>
 | 
				
			||||||
 | 
					                  <td>${VID}</td>
 | 
				
			||||||
 | 
					                  <td>${SN}</td>
 | 
				
			||||||
 | 
					                  <td></td>
 | 
				
			||||||
 | 
					                  <td></td>
 | 
				
			||||||
 | 
					                  <td>no</td></tr>`;
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setTimeout(() => {
 | 
				
			||||||
 | 
					      console.log(listInformation);
 | 
				
			||||||
 | 
					      const options = {
 | 
				
			||||||
 | 
					        from: "admin@apactech.io",
 | 
				
			||||||
 | 
					        to: "joseph@apactech.io",
 | 
				
			||||||
 | 
					        subject: "SN AUTO REPORT",
 | 
				
			||||||
 | 
					        html:
 | 
				
			||||||
 | 
					          "<table border='1'>\
 | 
				
			||||||
 | 
					          <thead>\
 | 
				
			||||||
 | 
					              <tr>\
 | 
				
			||||||
 | 
					                  <th>PID</th>\
 | 
				
			||||||
 | 
					                  <th>VID</th>\
 | 
				
			||||||
 | 
					                  <th>SN</th>\
 | 
				
			||||||
 | 
					                  <th>RAM</th>\
 | 
				
			||||||
 | 
					                  <th>Flash</th>\
 | 
				
			||||||
 | 
					                  <th>Extra Item</th>\
 | 
				
			||||||
 | 
					              </tr>\
 | 
				
			||||||
 | 
					          </thead>\
 | 
				
			||||||
 | 
					          <tbody>" +
 | 
				
			||||||
 | 
					          html +
 | 
				
			||||||
 | 
					          "</tbody>\
 | 
				
			||||||
 | 
					      </table>",
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      transporter.sendMail(options);
 | 
				
			||||||
 | 
					    }, 5000);
 | 
				
			||||||
 | 
					    // const match = "show inventory".match(regexInventory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // console.log(match)
 | 
				
			||||||
 | 
					  } catch (error) {
 | 
				
			||||||
 | 
					    console.log(error);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -17,12 +17,14 @@
 | 
				
			||||||
        "axios": "^1.4.0",
 | 
					        "axios": "^1.4.0",
 | 
				
			||||||
        "child_process": "^1.0.2",
 | 
					        "child_process": "^1.0.2",
 | 
				
			||||||
        "chokidar": "^3.5.3",
 | 
					        "chokidar": "^3.5.3",
 | 
				
			||||||
 | 
					        "dotenv": "^16.3.1",
 | 
				
			||||||
        "fs": "^0.0.1-security",
 | 
					        "fs": "^0.0.1-security",
 | 
				
			||||||
        "helpers": "^0.0.6",
 | 
					        "helpers": "^0.0.6",
 | 
				
			||||||
        "jsonwebtoken": "^9.0.1",
 | 
					        "jsonwebtoken": "^9.0.1",
 | 
				
			||||||
        "luxon": "^3.4.0",
 | 
					        "luxon": "^3.4.0",
 | 
				
			||||||
        "moment": "^2.29.4",
 | 
					        "moment": "^2.29.4",
 | 
				
			||||||
        "mysql2": "^3.6.0",
 | 
					        "mysql2": "^3.6.0",
 | 
				
			||||||
 | 
					        "nodemailer": "^6.9.5",
 | 
				
			||||||
        "path": "^0.12.7",
 | 
					        "path": "^0.12.7",
 | 
				
			||||||
        "proxy-addr": "^2.0.7",
 | 
					        "proxy-addr": "^2.0.7",
 | 
				
			||||||
        "puppeteer": "^21.2.1",
 | 
					        "puppeteer": "^21.2.1",
 | 
				
			||||||
| 
						 | 
					@ -6203,6 +6205,14 @@
 | 
				
			||||||
        "acorn-walk": "^8.0.2"
 | 
					        "acorn-walk": "^8.0.2"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/nodemailer": {
 | 
				
			||||||
 | 
					      "version": "6.9.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-/dmdWo62XjumuLc5+AYQZeiRj+PRR8y8qKtFCOyuOl1k/hckZd8durUUHs/ucKx6/8kN+wFxqKJlQ/LK/qR5FA==",
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">=6.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/normalize-path": {
 | 
					    "node_modules/normalize-path": {
 | 
				
			||||||
      "version": "3.0.0",
 | 
					      "version": "3.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 | 
				
			||||||
| 
						 | 
					@ -14083,6 +14093,11 @@
 | 
				
			||||||
        "acorn-walk": "^8.0.2"
 | 
					        "acorn-walk": "^8.0.2"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "nodemailer": {
 | 
				
			||||||
 | 
					      "version": "6.9.5",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.5.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-/dmdWo62XjumuLc5+AYQZeiRj+PRR8y8qKtFCOyuOl1k/hckZd8durUUHs/ucKx6/8kN+wFxqKJlQ/LK/qR5FA=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "normalize-path": {
 | 
					    "normalize-path": {
 | 
				
			||||||
      "version": "3.0.0",
 | 
					      "version": "3.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,12 +30,14 @@
 | 
				
			||||||
    "axios": "^1.4.0",
 | 
					    "axios": "^1.4.0",
 | 
				
			||||||
    "child_process": "^1.0.2",
 | 
					    "child_process": "^1.0.2",
 | 
				
			||||||
    "chokidar": "^3.5.3",
 | 
					    "chokidar": "^3.5.3",
 | 
				
			||||||
 | 
					    "dotenv": "^16.3.1",
 | 
				
			||||||
    "fs": "^0.0.1-security",
 | 
					    "fs": "^0.0.1-security",
 | 
				
			||||||
    "helpers": "^0.0.6",
 | 
					    "helpers": "^0.0.6",
 | 
				
			||||||
    "jsonwebtoken": "^9.0.1",
 | 
					    "jsonwebtoken": "^9.0.1",
 | 
				
			||||||
    "luxon": "^3.4.0",
 | 
					    "luxon": "^3.4.0",
 | 
				
			||||||
    "moment": "^2.29.4",
 | 
					    "moment": "^2.29.4",
 | 
				
			||||||
    "mysql2": "^3.6.0",
 | 
					    "mysql2": "^3.6.0",
 | 
				
			||||||
 | 
					    "nodemailer": "^6.9.5",
 | 
				
			||||||
    "path": "^0.12.7",
 | 
					    "path": "^0.12.7",
 | 
				
			||||||
    "proxy-addr": "^2.0.7",
 | 
					    "proxy-addr": "^2.0.7",
 | 
				
			||||||
    "puppeteer": "^21.2.1",
 | 
					    "puppeteer": "^21.2.1",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,40 +1,48 @@
 | 
				
			||||||
 | 
					const regex = /(\d+)K/g;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					console.log(
 | 
				
			||||||
 | 
					  "1000944K bytes of ATA System CompactFlash 0 (Read/Write) 	"
 | 
				
			||||||
 | 
					    .match(regex)
 | 
				
			||||||
 | 
					    .map((obj) => (parseInt(obj.replace("K", ""))/1024/1024).toFixed(2)+"G")
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// let a = [1,2,3]
 | 
					// let a = [1,2,3]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// console.log(a.slice(0,4))
 | 
					// console.log(a.slice(0,4))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const checkSpecialVersion = (paragraph) => {
 | 
					// const checkSpecialVersion = (paragraph) => {
 | 
				
			||||||
  try {
 | 
					//   try {
 | 
				
			||||||
    const regex = /\(CAT3K_CAA-UNIVERSALK9-M\), Version 16\.9\.[2-9]/;
 | 
					//     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]/;
 | 
					//     const regex1 = /\(CAT3K_CAA-UNIVERSALK9-M\), Version 1[7-9]\.[0-9]\.[2-9]/;
 | 
				
			||||||
    const regex2 =
 | 
					//     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]\.[2-9]/;
 | 
				
			||||||
    // Use the regular expression to find the match
 | 
					//     // Use the regular expression to find the match
 | 
				
			||||||
    const match = paragraph.match(regex);
 | 
					//     const match = paragraph.match(regex);
 | 
				
			||||||
    const match1 = paragraph.match(regex1);
 | 
					//     const match1 = paragraph.match(regex1);
 | 
				
			||||||
    const match2 = paragraph.match(regex2);
 | 
					//     const match2 = paragraph.match(regex2);
 | 
				
			||||||
    if (match || match1 || match2) {
 | 
					//     if (match || match1 || match2) {
 | 
				
			||||||
      if (match) {
 | 
					//       if (match) {
 | 
				
			||||||
        console.log(match[0]);
 | 
					//         console.log(match[0]);
 | 
				
			||||||
      }
 | 
					//       }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (match1) {
 | 
					//       if (match1) {
 | 
				
			||||||
        console.log(match1[0]);
 | 
					//         console.log(match1[0]);
 | 
				
			||||||
      }
 | 
					//       }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (match2) {
 | 
					//       if (match2) {
 | 
				
			||||||
        console.log(match2[0]);
 | 
					//         console.log(match2[0]);
 | 
				
			||||||
      }
 | 
					//       }
 | 
				
			||||||
    } else {
 | 
					//     } else {
 | 
				
			||||||
      return "";
 | 
					//       return "";
 | 
				
			||||||
    }
 | 
					//     }
 | 
				
			||||||
  } catch (error) {
 | 
					//   } catch (error) {
 | 
				
			||||||
    console.log(error);
 | 
					//     console.log(error);
 | 
				
			||||||
  }
 | 
					//   }
 | 
				
			||||||
};
 | 
					// };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
checkSpecialVersion(
 | 
					// checkSpecialVersion(
 | 
				
			||||||
  "Cisco IOS Software [Fuji], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.9.1, RELEASE SOFTWARE (fc2)"
 | 
					//   "Cisco IOS Software [Fuji], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.9.1, RELEASE SOFTWARE (fc2)"
 | 
				
			||||||
);
 | 
					// );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// const puppeteer = require("puppeteer");
 | 
					// const puppeteer = require("puppeteer");
 | 
				
			||||||
// const zulip = require("zulip-js");
 | 
					// const zulip = require("zulip-js");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@ import Env from "@ioc:Adonis/Core/Env";
 | 
				
			||||||
import { sendMessToZulip } from "App/utils/sendMessToZulip";
 | 
					import { sendMessToZulip } from "App/utils/sendMessToZulip";
 | 
				
			||||||
import moment from "moment";
 | 
					import moment from "moment";
 | 
				
			||||||
import Product from "App/Models/Product";
 | 
					import Product from "App/Models/Product";
 | 
				
			||||||
 | 
					import { sendDeviceInfora } from "App/utils/sendDeviceInfor";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
runtimeCheckLogs(Env.get("FOLDER_LOGS"));
 | 
					runtimeCheckLogs(Env.get("FOLDER_LOGS"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -279,3 +280,12 @@ Route.post("/api/backupProduct", async ({ request, response }) => {
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}).middleware("writeLog");
 | 
					}).middleware("writeLog");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Route.post("/api/test", async ({ request, response }) => {
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    sendDeviceInfora()
 | 
				
			||||||
 | 
					  } catch (error) {
 | 
				
			||||||
 | 
					    console.log(error)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue