From 97a270777d1cb658351855a85ac73d96c04e57f5 Mon Sep 17 00:00:00 2001 From: joseph le Date: Sat, 7 Oct 2023 10:02:58 +0700 Subject: [PATCH] update interval time, create regex version special --- app/utils/checkIndexSN.ts | 14 ++++-- app/utils/powerSchedule.js | 53 +++++++++++--------- app/utils/runtimeCheckLogs.ts | 92 ++++++++++++++++++++++++++++++----- screenshot.js | 36 +++++++++++++- 4 files changed, 154 insertions(+), 41 deletions(-) diff --git a/app/utils/checkIndexSN.ts b/app/utils/checkIndexSN.ts index 3d84d0a..bec3225 100644 --- a/app/utils/checkIndexSN.ts +++ b/app/utils/checkIndexSN.ts @@ -1,3 +1,4 @@ +import Env from "@ioc:Adonis/Core/Env"; // const axios = require("axios"); // import fs from "fs"; @@ -23,7 +24,8 @@ export const checkIndexSN = async (content, beginLine, nameF) => { ?.split(":")[1] ?.replace("\r", "") .trim() !== "" && - SN !== "N/A" && SN.length>4 && + SN !== "N/A" && + SN.length > 4 && i >= beginLine ) { if (output.some((u) => u.SN === SN)) { @@ -170,10 +172,10 @@ export const checkIndexSN = async (content, beginLine, nameF) => { if (output.filter((i) => i.PID !== "").length > 0) { let token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FwaS5uc3d0ZWFtLm5ldC9hcGkvbG9naW4iLCJpYXQiOjE2ODkzOTEyMDMsImV4cCI6MTcyMDkyNzIwMywibmJmIjoxNjg5MzkxMjAzLCJqdGkiOiJreFA1MW9jck5rdEYzSzY3Iiwic3ViIjozNjkwLCJwcnYiOiJjOGVlMWZjODllNzc1ZWM0YzczODY2N2U1YmUxN2E1OTBiNmQ0MGZjIn0.p-aE0oWkKmdrcKWD94oSmMd_CMbY_4MoqADIwYIhIKw"; - + let token_int = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2ludC5pcHN1cHBseS5jb20uYXUvYXBpL2xvZ2luIiwiaWF0IjoxNjg5ODYyNjAxLCJleHAiOjE3MjEzOTg2MDEsIm5iZiI6MTY4OTg2MjYwMSwianRpIjoiUElZVjNBM3ZPQVlMQ081SyIsInN1YiI6MSwicHJ2IjoiYzhlZTFmYzg5ZTc3NWVjNGM3Mzg2NjdlNWJlMTdhNTkwYjZkNDBmYyJ9.UcybIKMBjTAY9i0PfIDQMtqHyN72Ul0jC03ZDGLGpMI"; - + let data = { data: output.filter((i) => i.PID !== ""), urlAPI: "/api/test-log-serial-number/save-data", @@ -185,13 +187,15 @@ export const checkIndexSN = async (content, beginLine, nameF) => { { headers: { Authorization: "Bearer " + token } } ); - const response_int = await axios.post( + if (Env.get("RUN_ENV") !== "prod") { + const response_int = await axios.post( "https://int.ipsupply.com.au/api/transferPostData", data, { headers: { Authorization: "Bearer " + token_int } } ); - console.log(nameF + " response\n", response_int.data); + console.log(nameF + " response\n", response_int.data); + } } } } catch (error) { diff --git a/app/utils/powerSchedule.js b/app/utils/powerSchedule.js index d2286a4..17d9134 100644 --- a/app/utils/powerSchedule.js +++ b/app/utils/powerSchedule.js @@ -29,38 +29,47 @@ const zulip = require("zulip-js"); // In ra nội dung của trang mới setTimeout(async () => { const tableData = await page.evaluate(() => { - const tbody = document.querySelector('tbody'); // Lựa chọn thẻ cần trích xuất - const rows = tbody.querySelectorAll('tr'); // Lựa chọn tất cả các hàng (thẻ ) bên trong thẻ - + const tbody = document.querySelector("tbody"); // Lựa chọn thẻ cần trích xuất + const rows = tbody.querySelectorAll("tr"); // Lựa chọn tất cả các hàng (thẻ ) bên trong thẻ + // Lặp qua từng hàng và lấy nội dung của các cột (thẻ ) trong hàng const data = []; rows.forEach((row) => { - const columns = Array.from(row.querySelectorAll('td')); // Lựa chọn tất cả các cột (thẻ ) trong hàng + const columns = Array.from(row.querySelectorAll("td")); // Lựa chọn tất cả các cột (thẻ ) trong hàng const rowData = columns.map((column) => column.textContent.trim()); // Lấy nội dung của các cột và xóa khoảng trắng data.push(rowData); // Thêm dữ liệu của hàng vào mảng data }); - - return data.map(u=>u.join('\n\n')); - }); - - console.log('Table data:', tableData); - - await browser.close(); + return data.map((u) => u.join("\n\n")); + }); + + console.log("Table data:", tableData); + + await browser.close(); + let params = { + type: "stream", + to: "networkToolBot", + topic: "powerSchedule", + content: + ":warning: :date: :warning:\n\n" + tableData.join("\n\n") + "\n-------", + }; + client.messages.send(params); if ( - tableData.filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")).length > 0 + tableData.filter((i) => i.includes("KDC 91B") || i.includes("KDC91B")) + .length > 0 ) { let params = { - type: "stream", - to: "Result test - auto.nswteam.net", - topic: "Lịch cúp điện", - content: - ":warning: :date: :warning:\n\n" + - tableData.filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0].replace(/KDC 91B/g,"**KDC 91B**") + - "\n-------", - }; + type: "stream", + to: "Result test - auto.nswteam.net", + topic: "Lịch cúp điện", + content: + ":warning: :date: :warning:\n\n" + + tableData + .filter((i) => i.includes("KDC 91B") || i.includes("KDC91B"))[0] + .replace(/KDC 91B/g, "**KDC 91B**") + + "\n-------", + }; client.messages.send(params); } }, 5000); - -})(); \ No newline at end of file +})(); diff --git a/app/utils/runtimeCheckLogs.ts b/app/utils/runtimeCheckLogs.ts index 28b4a46..bc09fbb 100644 --- a/app/utils/runtimeCheckLogs.ts +++ b/app/utils/runtimeCheckLogs.ts @@ -37,13 +37,26 @@ export async function runtimeCheckLogs(folderPath) { const checkSpecialVersion = (paragraph) => { try { const regex = /\(CAT3K_CAA-UNIVERSALK9-M\), Version 16\.9\.[2-9]/; - const regex1 = /Version (\d+\.\d+\.\d+)/; + const regex1 = + /\(CAT3K_CAA-UNIVERSALK9-M\), Version 1[7-9]\.[0-9]\.[2-9]/; + const regex2 = + /\(CAT3K_CAA-UNIVERSALK9-M\), Version [2-9][0-9]\.[0-9]\.[2-9]/; // Use the regular expression to find the match const match = paragraph.match(regex); - if (match) { - const desiredSubstring = match[0]; - const match2 = desiredSubstring.match(regex1); - return match2[0]; + const match1 = paragraph.match(regex1); + const match2 = paragraph.match(regex2); + if (match || match1 || match2) { + if (match) { + return match[0]; + } + + if (match1) { + return match1[0]; + } + + if (match2) { + return match2[0]; + } } else { return ""; } @@ -60,8 +73,8 @@ export async function runtimeCheckLogs(folderPath) { if ( filePath?.split(".")[filePath.split(".").length - 1] === "log" && filePath.split("/")[filePath.split("/").length - 1]?.split("-")[0] === - //localhost - // filePath.split("\\")[filePath.split("\\").length - 1]?.split("-")[0] === + //localhost + // filePath.split("\\")[filePath.split("\\").length - 1]?.split("-")[0] === moment(Date.now()).format("YYYYMMDD").toString() ) { //add information file to database @@ -92,6 +105,7 @@ export async function runtimeCheckLogs(folderPath) { .map((file) => folderPath + "/" + file); const watcher = chokidar.watch(listFileWatch, { persistent: true, + usePolling: true, interval: 300000, }); @@ -160,7 +174,7 @@ export async function runtimeCheckLogs(folderPath) { for (let i = 0; i < contentFile.length; i += 1000) { const chunk = contentFile.slice(i, i + 1000); - chunk.map((line, index) => { + chunk.map(async (line, index) => { //check line the line with errors and exclude errors listKeyValues .map((obj) => obj.$original.value) @@ -193,10 +207,36 @@ export async function runtimeCheckLogs(folderPath) { // if(checkSpecialVersion()) }); + + if ( + checkSpecialVersion(line) !== "" && + listExcludeErr.filter((err) => line.includes(err)).length === 0 + ) { + let checkVersion = checkSpecialVersion(line); + let log = allFile?.filter( + (i) => i.$original.file_name === fileName + )[0]; + + let checkLog = allReport?.filter( + (report) => + report.$original.id_file === log?.id_ldf && + report.$original.line === index + 1 && + report.$original.detected_content === checkVersion + ); + + if (checkLog?.length === 0) { + await LogReport.create({ + detected_content: checkVersion, + line: index + 1, + id_file: log?.id_ldf, + }); + lines.push(index + 1); + } + } }); } } else { - contentFile.map((line, index) => { + contentFile.map(async (line, index) => { //check line the line with errors and exclude errors listKeyValues .map((obj) => obj.$original.value) @@ -217,7 +257,7 @@ export async function runtimeCheckLogs(folderPath) { report.$original.line === index + 1 && report.$original.detected_content === value ); - + if (checkLog?.length === 0) { await LogReport.create({ detected_content: value, @@ -230,6 +270,32 @@ export async function runtimeCheckLogs(folderPath) { // if(checkSpecialVersion()) }); + + if ( + checkSpecialVersion(line) !== "" && + listExcludeErr.filter((err) => line.includes(err)).length === 0 + ) { + let checkVersion = checkSpecialVersion(line); + let log = allFile?.filter( + (i) => i.$original.file_name === fileName + )[0]; + + let checkLog = allReport?.filter( + (report) => + report.$original.id_file === log?.id_ldf && + report.$original.line === index + 1 && + report.$original.detected_content === checkVersion + ); + + if (checkLog?.length === 0) { + await LogReport.create({ + detected_content: checkVersion, + line: index + 1, + id_file: log?.id_ldf, + }); + lines.push(index + 1); + } + } }); } @@ -278,7 +344,7 @@ export async function runtimeCheckLogs(folderPath) { let important = [ "Vxx", "V00", - "(CAT3K_CAA-UNIVERSALK9-M), Version 16.9.", + "(CAT3K_CAA-UNIVERSALK9-M), Version", ]; listReport.map((log, index) => { let item = listExtraItem.includes(log.detected_content) @@ -321,7 +387,9 @@ export async function runtimeCheckLogs(folderPath) { let icon = important.filter((i) => content.includes(i)).length > 0 - ? "------------\n\n:no_entry: :no_entry:**" + fileName + "**:no_entry: :no_entry:" + ? "------------\n\n:no_entry: :no_entry:**" + + fileName + + "**:no_entry: :no_entry:" : "------------\n\n:warning: :warning: **" + fileName + "**"; sendMessToZulip( "stream", diff --git a/screenshot.js b/screenshot.js index 0326eaf..3c35259 100644 --- a/screenshot.js +++ b/screenshot.js @@ -1,8 +1,40 @@ -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) => { + 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]/; + const regex2 = + /\(CAT3K_CAA-UNIVERSALK9-M\), Version [2-9][0-9]\.[0-9]\.[2-9]/; + // Use the regular expression to find the match + const match = paragraph.match(regex); + const match1 = paragraph.match(regex1); + const match2 = paragraph.match(regex2); + if (match || match1 || match2) { + if (match) { + console.log(match[0]); + } + if (match1) { + console.log(match1[0]); + } + + if (match2) { + console.log(match2[0]); + } + } else { + return ""; + } + } catch (error) { + console.log(error); + } +}; + +checkSpecialVersion( + "Cisco IOS Software [Fuji], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.9.1, RELEASE SOFTWARE (fc2)" +); // const puppeteer = require("puppeteer"); // const zulip = require("zulip-js");