Merge branch 'main' of https://gitea.nswteam.net/joseph/Log_service into develop
This commit is contained in:
commit
8e051c269a
|
|
@ -2,31 +2,31 @@ import fs from 'fs';
|
|||
import moment from "moment";
|
||||
|
||||
|
||||
const shortenStringsInObject = (obj, maxLength) => {
|
||||
// Kiểm tra nếu obj không phải là một đối tượng hoặc maxLength không phải là một số
|
||||
if (typeof obj !== 'object' || typeof maxLength !== 'number') {
|
||||
return obj;
|
||||
}
|
||||
// const shortenStringsInObject = (obj, maxLength) => {
|
||||
// // Kiểm tra nếu obj không phải là một đối tượng hoặc maxLength không phải là một số
|
||||
// if (typeof obj !== 'object' || typeof maxLength !== 'number') {
|
||||
// return obj;
|
||||
// }
|
||||
|
||||
// Duyệt qua các thuộc tính của đối tượng
|
||||
for (const key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
// Kiểm tra nếu thuộc tính là một chuỗi và độ dài của chuỗi lớn hơn maxLength
|
||||
if (typeof obj[key] === 'string' && obj[key].length > maxLength) {
|
||||
// Rút ngắn chuỗi lại maxLength ký tự
|
||||
obj[key] = obj[key].substring(0, maxLength);
|
||||
}
|
||||
}
|
||||
}
|
||||
// // Duyệt qua các thuộc tính của đối tượng
|
||||
// for (const key in obj) {
|
||||
// if (obj.hasOwnProperty(key)) {
|
||||
// // Kiểm tra nếu thuộc tính là một chuỗi và độ dài của chuỗi lớn hơn maxLength
|
||||
// if (typeof obj[key] === 'string' && obj[key].length > maxLength) {
|
||||
// // Rút ngắn chuỗi lại maxLength ký tự
|
||||
// obj[key] = obj[key].substring(0, maxLength);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
if (Array.isArray(obj) && obj.length > 10) {
|
||||
// Rút ngắn chuỗi lại maxLength ký tự
|
||||
obj = "[Array:"+obj.length+"]\n"+obj.slice(0,15)
|
||||
}
|
||||
// if (Array.isArray(obj) && obj.length > 10) {
|
||||
// // Rút ngắn chuỗi lại maxLength ký tự
|
||||
// obj = "[Array:"+obj.length+"]\n"+obj.slice(0,15)
|
||||
// }
|
||||
|
||||
return obj;
|
||||
}
|
||||
// return obj;
|
||||
// }
|
||||
|
||||
export function loggerAPI(req, res, location) {
|
||||
let old_data = "";
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
import fs from "fs";
|
||||
import moment from "moment";
|
||||
|
||||
export const addLogFunction = async (fileName, data, functionName) => {
|
||||
try {
|
||||
fs.exists(fileName, async (exists) => {
|
||||
if (exists) {
|
||||
let old_data = await fs.readFileSync(fileName, "utf8");
|
||||
fs.writeFileSync(
|
||||
fileName,
|
||||
old_data +
|
||||
"\n\n[" +
|
||||
moment(Date.now()).format("D/M/YY-HH:mm:ss") +
|
||||
"] - " +
|
||||
functionName +
|
||||
"\n" +
|
||||
data +
|
||||
"\n\n======================================================================"
|
||||
);
|
||||
} else {
|
||||
fs.writeFileSync(
|
||||
fileName,
|
||||
"\n\n[" +
|
||||
moment(Date.now()).format("D/M/YY-HH:mm:ss") +
|
||||
"] - System Logs" +
|
||||
data +
|
||||
"\n\n======================================================================"
|
||||
);
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
const fs = require("fs");
|
||||
const moment = require("moment");
|
||||
|
||||
const addLogFunction = async (fileName, data, functionName) => {
|
||||
try {
|
||||
fs.exists(fileName, async (exists) => {
|
||||
if (exists) {
|
||||
let old_data = await fs.readFileSync(fileName, "utf8");
|
||||
fs.writeFileSync(
|
||||
fileName,
|
||||
old_data +
|
||||
"\n\n[" +
|
||||
moment(Date.now()).format("D/M/YY-HH:mm:ss") +
|
||||
"] - " +
|
||||
functionName +
|
||||
"\n" +
|
||||
data +
|
||||
"\n\n======================================================================"
|
||||
);
|
||||
} else {
|
||||
fs.writeFileSync(
|
||||
fileName,
|
||||
"\n\n[" +
|
||||
moment(Date.now()).format("D/M/YY-HH:mm:ss") +
|
||||
"] - System Logs" +
|
||||
data +
|
||||
"\n\n======================================================================"
|
||||
);
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports.addLogFunction = addLogFunction;
|
||||
|
|
@ -3,6 +3,8 @@ import Env from "@ioc:Adonis/Core/Env";
|
|||
// import fs from "fs";
|
||||
|
||||
import axios from "axios";
|
||||
import { addLogFunction } from "./addLogFunction";
|
||||
import moment from "moment";
|
||||
|
||||
export const checkIndexSN = async (content, beginLine, nameF) => {
|
||||
try {
|
||||
|
|
@ -195,6 +197,11 @@ export const checkIndexSN = async (content, beginLine, nameF) => {
|
|||
);
|
||||
|
||||
console.log(nameF + " response\n", response_int.data);
|
||||
const fileName =
|
||||
"./app/store/logsAPI/" +
|
||||
moment(Date.now()).format("DD_MM_YYYY").toString() +
|
||||
".log";
|
||||
addLogFunction(fileName, "URL: https://int.ipsupply.com.au/api/transferPostData\n"+ response_int.data, "Update SN index to int.ipsupply.com.au");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
const puppeteer = require("puppeteer");
|
||||
const zulip = require("zulip-js");
|
||||
const { addLogFunction } = require("./addLogFunctionJS");
|
||||
|
||||
(async () => {
|
||||
// Launch a headless browser
|
||||
|
|
@ -60,8 +61,8 @@ const zulip = require("zulip-js");
|
|||
) {
|
||||
let params = {
|
||||
type: "stream",
|
||||
to: "Result test - auto.nswteam.net",
|
||||
topic: "Lịch cúp điện",
|
||||
to: "APAC Tech Bão",
|
||||
topic: "Thông báo chung",
|
||||
content:
|
||||
":warning: :date: :warning:\n\n" +
|
||||
tableData
|
||||
|
|
@ -72,4 +73,9 @@ const zulip = require("zulip-js");
|
|||
client.messages.send(params);
|
||||
}
|
||||
}, 5000);
|
||||
const fileName =
|
||||
"./app/store/logsAPI/" +
|
||||
moment(Date.now()).format("DD_MM_YYYY").toString() +
|
||||
".log";
|
||||
addLogFunction(fileName, JSON.stringify(params, null, 2), "powerSchedule")
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -99,9 +99,10 @@ export async function runtimeCheckLogs(folderPath) {
|
|||
|
||||
// Watch for changes in the files listed
|
||||
async function watchFilesInList() {
|
||||
try {
|
||||
//only check new file ---> fileList - fileList_old = new file
|
||||
let listFileWatch = fileList
|
||||
?.filter((i) => fileList_old.includes(i) === false)
|
||||
?.filter((i) => fileList_old.includes(i) === false && i.includes(".log"))
|
||||
.map((file) => folderPath + "/" + file);
|
||||
const watcher = chokidar.watch(listFileWatch, {
|
||||
persistent: true,
|
||||
|
|
@ -195,6 +196,13 @@ export async function runtimeCheckLogs(folderPath) {
|
|||
report.$original.detected_content === value
|
||||
);
|
||||
|
||||
if (
|
||||
log?.id_ldf === "" ||
|
||||
log?.id_ldf === null ||
|
||||
log?.id_ldf === undefined
|
||||
) {
|
||||
console.log("ERROR CHECK ", fileName)
|
||||
}
|
||||
if (checkLog?.length === 0) {
|
||||
await LogReport.create({
|
||||
detected_content: value,
|
||||
|
|
@ -205,18 +213,24 @@ export async function runtimeCheckLogs(folderPath) {
|
|||
}
|
||||
}
|
||||
|
||||
// if(checkSpecialVersion())
|
||||
});
|
||||
|
||||
if (
|
||||
checkSpecialVersion(line) !== "" &&
|
||||
listExcludeErr.filter((err) => line.includes(err)).length === 0
|
||||
listExcludeErr.filter((err) => line.includes(err)).length ===
|
||||
0
|
||||
) {
|
||||
let checkVersion = checkSpecialVersion(line);
|
||||
let log = allFile?.filter(
|
||||
(i) => i.$original.file_name === fileName
|
||||
)[0];
|
||||
|
||||
if (
|
||||
log?.id_ldf === "" ||
|
||||
log?.id_ldf === null ||
|
||||
log?.id_ldf === undefined
|
||||
) {
|
||||
console.log("ERROR CHECK ", fileName)
|
||||
}
|
||||
let checkLog = allReport?.filter(
|
||||
(report) =>
|
||||
report.$original.id_file === log?.id_ldf &&
|
||||
|
|
@ -241,16 +255,22 @@ export async function runtimeCheckLogs(folderPath) {
|
|||
listKeyValues
|
||||
.map((obj) => obj.$original.value)
|
||||
.map(async (value) => {
|
||||
// console.log({line:Array(line), value:Array(value)})
|
||||
|
||||
if (
|
||||
line.includes(value) &&
|
||||
listExcludeErr.filter((err) => line.includes(err)).length ===
|
||||
0
|
||||
listExcludeErr.filter((err) => line.includes(err))
|
||||
.length === 0
|
||||
) {
|
||||
let log = allFile?.filter(
|
||||
(i) => i.$original.file_name === fileName
|
||||
)[0];
|
||||
|
||||
if (
|
||||
log?.id_ldf === "" ||
|
||||
log?.id_ldf === null ||
|
||||
log?.id_ldf === undefined
|
||||
) {
|
||||
console.log("ERROR CHECK ", fileName)
|
||||
}
|
||||
let checkLog = allReport?.filter(
|
||||
(report) =>
|
||||
report.$original.id_file === log?.id_ldf &&
|
||||
|
|
@ -279,7 +299,13 @@ export async function runtimeCheckLogs(folderPath) {
|
|||
let log = allFile?.filter(
|
||||
(i) => i.$original.file_name === fileName
|
||||
)[0];
|
||||
|
||||
if (
|
||||
log?.id_ldf === "" ||
|
||||
log?.id_ldf === null ||
|
||||
log?.id_ldf === undefined
|
||||
) {
|
||||
console.log("ERROR CHECK ", fileName)
|
||||
}
|
||||
let checkLog = allReport?.filter(
|
||||
(report) =>
|
||||
report.$original.id_file === log?.id_ldf &&
|
||||
|
|
@ -325,11 +351,7 @@ export async function runtimeCheckLogs(folderPath) {
|
|||
let logsDetect = allReport_new?.filter(
|
||||
(i) => i.$original.id_file === fileDetect?.id_ldf
|
||||
);
|
||||
// console.log(logsDetect)
|
||||
// await Database.rawQuery(
|
||||
// "select * from log_reports where id_file = " +
|
||||
// fileDetect?.id_ldf
|
||||
// );
|
||||
|
||||
//Get all report newest
|
||||
let listReport = await getListLineByItem(
|
||||
logsDetect
|
||||
|
|
@ -405,19 +427,14 @@ export async function runtimeCheckLogs(folderPath) {
|
|||
);
|
||||
}
|
||||
}, 3000);
|
||||
// console.log(path + " change")
|
||||
});
|
||||
|
||||
watcher.on("error", (error) => {
|
||||
console.error(`Watcher error: ${error}`);
|
||||
});
|
||||
// await fileList.slice(0,40)
|
||||
// ?.filter((i) => fileList_old.includes(i) === false)
|
||||
// ?.forEach((fileName) => {
|
||||
// //path file
|
||||
// const filePath = `${folderPath}/${fileName}`;
|
||||
|
||||
// });
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 304 KiB |
|
|
@ -5,6 +5,7 @@ import nodeMailer from "nodemailer";
|
|||
import LogDetectFile from "App/Models/LogDetectFile";
|
||||
import InfoDevice from "App/Models/InfoDevice";
|
||||
import KeyValue from "App/Models/KeyValue";
|
||||
import { addLogFunction } from "./addLogFunction";
|
||||
|
||||
export const sendDeviceInfora = async () => {
|
||||
try {
|
||||
|
|
@ -14,10 +15,11 @@ export const sendDeviceInfora = async () => {
|
|||
const regexVersion = /sh.*? ver.*/;
|
||||
const regexMemory = /(\d+)K/g;
|
||||
const date = moment(Date.now()).format("YYYYMMDD");
|
||||
const memDefault = (await KeyValue.all())
|
||||
const allKeyValue = await KeyValue.all();
|
||||
const memDefault = allKeyValue
|
||||
.filter((i) => i.$attributes.key === "MEMORY_DEFAULT")
|
||||
.map((obj) => obj.$attributes.value);
|
||||
const listInformation = [];
|
||||
let listInformation = [];
|
||||
let dataFile = await LogDetectFile.all();
|
||||
|
||||
let html = "";
|
||||
|
|
@ -38,7 +40,8 @@ export const sendDeviceInfora = async () => {
|
|||
});
|
||||
|
||||
//Read file in listFile
|
||||
await listFile.map(async (file) => {
|
||||
const filePromises = listFile.map((file, index) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.readFile(
|
||||
Env.get("FOLDER_LOGS") + "/" + file,
|
||||
"utf8",
|
||||
|
|
@ -162,7 +165,6 @@ export const sendDeviceInfora = async () => {
|
|||
?.replace(/,/g, "")
|
||||
.trim();
|
||||
const SN = u?.split("SN:")[1]?.replace(/,/g, "").trim();
|
||||
// let memory =
|
||||
if (index > 0) {
|
||||
if (PID !== "" && SN !== "") {
|
||||
listInformation.push({
|
||||
|
|
@ -173,13 +175,6 @@ export const sendDeviceInfora = async () => {
|
|||
flash: "",
|
||||
extra_item: "yes",
|
||||
});
|
||||
|
||||
html += `<tr><td>${PID}</td>
|
||||
<td>${VID}</td>
|
||||
<td>${SN}</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>yes</td></tr>`;
|
||||
}
|
||||
} else {
|
||||
if (PID !== "" && SN !== "") {
|
||||
|
|
@ -206,7 +201,9 @@ export const sendDeviceInfora = async () => {
|
|||
.filter(
|
||||
(line) =>
|
||||
line.includes("bytes of memory") ||
|
||||
line.includes("bytes of physical memory")
|
||||
line.includes(
|
||||
"bytes of physical memory"
|
||||
)
|
||||
)
|
||||
.join("<br>")
|
||||
.match(regexMemory)[0]
|
||||
|
|
@ -242,24 +239,6 @@ export const sendDeviceInfora = async () => {
|
|||
: "",
|
||||
extra_item: "no",
|
||||
});
|
||||
|
||||
html += `<tr style='background-color:${backgroundColor}'><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 (D: " +
|
||||
memDefaultForPID.split(":")[2] +
|
||||
")"
|
||||
: ""
|
||||
}</td>
|
||||
<td>no</td></tr>`;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -288,13 +267,6 @@ export const sendDeviceInfora = async () => {
|
|||
flash: "",
|
||||
extra_item: "yes",
|
||||
});
|
||||
|
||||
html += `<tr><td>${PID}</td>
|
||||
<td>${VID}</td>
|
||||
<td>${SN}</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>yes</td></tr>`;
|
||||
}
|
||||
} else {
|
||||
if (PID !== "" && SN !== "") {
|
||||
|
|
@ -306,29 +278,42 @@ export const sendDeviceInfora = async () => {
|
|||
flash: "",
|
||||
extra_item: "no",
|
||||
});
|
||||
|
||||
html += `<tr style='background-color:${backgroundColor}'><td>${PID}</td>
|
||||
<td>${VID}</td>
|
||||
<td>${SN}</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>no</td></tr>`;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
resolve(0);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
setTimeout(async () => {
|
||||
await Promise.all(filePromises);
|
||||
let specialModel = allKeyValue
|
||||
.filter((i) => i.key === "MODEL_SPECIAL")
|
||||
.map((obj) => obj.$attributes.value);
|
||||
listInformation = listInformation.filter(
|
||||
(i) =>
|
||||
i.RAM !== "" ||
|
||||
i.flash !== "" ||
|
||||
specialModel.filter((m) => i.PID.includes(m)).length > 0
|
||||
);
|
||||
if (listInformation.length > 0) {
|
||||
console.log(listInformation);
|
||||
listInformation.map((inf) => {
|
||||
html += `<tr><td>${inf.PID}</td>
|
||||
<td>${inf.VID}</td>
|
||||
<td>${inf.SN}</td>
|
||||
<td>${inf.RAM}</td>
|
||||
<td>${inf.flash}</td>
|
||||
<td>${inf.extra_item}</td></tr>`;
|
||||
});
|
||||
const options = {
|
||||
from: "admin@apactech.io",
|
||||
to: "joseph@apactech.io, ips@ipsupply.com.au",
|
||||
// to: "joseph@apactech.io, ips@ipsupply.com.au",
|
||||
to: "joseph@apactech.io",
|
||||
subject: "(AUTO-REPORT) SERIAL NUMBER",
|
||||
html:
|
||||
"<table border='1'>\
|
||||
|
|
@ -348,10 +333,21 @@ export const sendDeviceInfora = async () => {
|
|||
</table>",
|
||||
};
|
||||
transporter.sendMail(options);
|
||||
|
||||
await InfoDevice.createMany(listInformation);
|
||||
const fileName =
|
||||
"./app/store/logsAPI/" +
|
||||
moment(Date.now()).format("DD_MM_YYYY").toString() +
|
||||
".log";
|
||||
|
||||
addLogFunction(
|
||||
fileName,
|
||||
JSON.stringify(listInformation[0], null, 2),
|
||||
"Get-Send devices info"
|
||||
);
|
||||
|
||||
} else {
|
||||
console.log("listInformation", listInformation);
|
||||
}
|
||||
}, 5000);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -17,6 +17,7 @@
|
|||
"axios": "^1.4.0",
|
||||
"child_process": "^1.0.2",
|
||||
"chokidar": "^3.5.3",
|
||||
"crypto": "^1.0.1",
|
||||
"dotenv": "^16.3.1",
|
||||
"fs": "^0.0.1-security",
|
||||
"helpers": "^0.0.6",
|
||||
|
|
@ -1366,9 +1367,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz",
|
||||
"integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg=="
|
||||
"version": "20.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz",
|
||||
"integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w=="
|
||||
},
|
||||
"node_modules/@types/pino": {
|
||||
"version": "6.3.12",
|
||||
|
|
@ -2860,6 +2861,12 @@
|
|||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/crypto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
|
||||
"integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
|
||||
"deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
|
||||
},
|
||||
"node_modules/cuid": {
|
||||
"version": "2.1.8",
|
||||
"resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz",
|
||||
|
|
@ -2873,9 +2880,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/data-uri-to-buffer": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz",
|
||||
"integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz",
|
||||
"integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==",
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
}
|
||||
|
|
@ -4121,12 +4128,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/get-uri": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz",
|
||||
"integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==",
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz",
|
||||
"integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==",
|
||||
"dependencies": {
|
||||
"basic-ftp": "^5.0.2",
|
||||
"data-uri-to-buffer": "^5.0.1",
|
||||
"data-uri-to-buffer": "^6.0.0",
|
||||
"debug": "^4.3.4",
|
||||
"fs-extra": "^8.1.0"
|
||||
},
|
||||
|
|
@ -4427,12 +4434,9 @@
|
|||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
|
||||
},
|
||||
"node_modules/has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1"
|
||||
},
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
|
||||
"integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
|
|
@ -6370,9 +6374,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/on-exit-leak-free": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz",
|
||||
"integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w=="
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
|
||||
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.4.1",
|
||||
|
|
@ -6847,9 +6854,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/pino-pretty": {
|
||||
"version": "10.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.2.0.tgz",
|
||||
"integrity": "sha512-tRvpyEmGtc2D+Lr3FulIZ+R1baggQ4S3xD2Ar93KixFEDx6SEAUP3W5aYuEw1C73d6ROrNcB2IXLteW8itlwhA==",
|
||||
"version": "10.2.2",
|
||||
"resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.2.2.tgz",
|
||||
"integrity": "sha512-RvAdCQAU51MdVsJdvXX4Bipb52wwldXtOzlva1NT8q2d7tmgYWFIMLhoSnfx2Sr+Hi7BLGpR/n8wgrcq5G/ykA==",
|
||||
"dependencies": {
|
||||
"colorette": "^2.0.7",
|
||||
"dateformat": "^4.6.3",
|
||||
|
|
@ -6871,9 +6878,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/pino-pretty/node_modules/sonic-boom": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.4.0.tgz",
|
||||
"integrity": "sha512-zSe9QQW30nPzjkSJ0glFQO5T9lHsk39tz+2bAAwCj8CNgEG8ItZiX7Wb2ZgA8I04dwRGCcf1m3ABJa8AYm12Fw==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.5.0.tgz",
|
||||
"integrity": "sha512-02A0wEmj4d3aEIW/Sp6LMP1dNcG5cYmQPjhgtytIXa9tNmFZx3ragUPFmyBdgdM0yJJVSWwlLLEVHgrYfA0wtQ==",
|
||||
"dependencies": {
|
||||
"atomic-sleep": "^1.0.0"
|
||||
}
|
||||
|
|
@ -10369,9 +10376,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "20.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz",
|
||||
"integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg=="
|
||||
"version": "20.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz",
|
||||
"integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w=="
|
||||
},
|
||||
"@types/pino": {
|
||||
"version": "6.3.12",
|
||||
|
|
@ -11520,6 +11527,11 @@
|
|||
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
|
||||
"dev": true
|
||||
},
|
||||
"crypto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
|
||||
"integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
|
||||
},
|
||||
"cuid": {
|
||||
"version": "2.1.8",
|
||||
"resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz",
|
||||
|
|
@ -11532,9 +11544,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"data-uri-to-buffer": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz",
|
||||
"integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg=="
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz",
|
||||
"integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg=="
|
||||
},
|
||||
"dateformat": {
|
||||
"version": "4.6.3",
|
||||
|
|
@ -12487,12 +12499,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"get-uri": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz",
|
||||
"integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==",
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz",
|
||||
"integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==",
|
||||
"requires": {
|
||||
"basic-ftp": "^5.0.2",
|
||||
"data-uri-to-buffer": "^5.0.1",
|
||||
"data-uri-to-buffer": "^6.0.0",
|
||||
"debug": "^4.3.4",
|
||||
"fs-extra": "^8.1.0"
|
||||
},
|
||||
|
|
@ -12742,12 +12754,9 @@
|
|||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
|
||||
},
|
||||
"has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1"
|
||||
}
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
|
||||
"integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ=="
|
||||
},
|
||||
"has-ansi": {
|
||||
"version": "2.0.0",
|
||||
|
|
@ -14214,9 +14223,9 @@
|
|||
}
|
||||
},
|
||||
"on-exit-leak-free": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz",
|
||||
"integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w=="
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
|
||||
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.4.1",
|
||||
|
|
@ -14594,9 +14603,9 @@
|
|||
}
|
||||
},
|
||||
"pino-pretty": {
|
||||
"version": "10.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.2.0.tgz",
|
||||
"integrity": "sha512-tRvpyEmGtc2D+Lr3FulIZ+R1baggQ4S3xD2Ar93KixFEDx6SEAUP3W5aYuEw1C73d6ROrNcB2IXLteW8itlwhA==",
|
||||
"version": "10.2.2",
|
||||
"resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.2.2.tgz",
|
||||
"integrity": "sha512-RvAdCQAU51MdVsJdvXX4Bipb52wwldXtOzlva1NT8q2d7tmgYWFIMLhoSnfx2Sr+Hi7BLGpR/n8wgrcq5G/ykA==",
|
||||
"requires": {
|
||||
"colorette": "^2.0.7",
|
||||
"dateformat": "^4.6.3",
|
||||
|
|
@ -14615,9 +14624,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"sonic-boom": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.4.0.tgz",
|
||||
"integrity": "sha512-zSe9QQW30nPzjkSJ0glFQO5T9lHsk39tz+2bAAwCj8CNgEG8ItZiX7Wb2ZgA8I04dwRGCcf1m3ABJa8AYm12Fw==",
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.5.0.tgz",
|
||||
"integrity": "sha512-02A0wEmj4d3aEIW/Sp6LMP1dNcG5cYmQPjhgtytIXa9tNmFZx3ragUPFmyBdgdM0yJJVSWwlLLEVHgrYfA0wtQ==",
|
||||
"requires": {
|
||||
"atomic-sleep": "^1.0.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
"axios": "^1.4.0",
|
||||
"child_process": "^1.0.2",
|
||||
"chokidar": "^3.5.3",
|
||||
"crypto": "^1.0.1",
|
||||
"dotenv": "^16.3.1",
|
||||
"fs": "^0.0.1-security",
|
||||
"helpers": "^0.0.6",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,39 @@
|
|||
const regex = /(\d+)K/g;
|
||||
const axios = require('axios');
|
||||
const md5 = require('md5');
|
||||
|
||||
console.log(
|
||||
"1000944K bytes of ATA System CompactFlash 0 (Read/Write) "
|
||||
.match(regex)
|
||||
.map((obj) => (parseInt(obj.replace("K", ""))/1024/1024).toFixed(2)+"G")
|
||||
);
|
||||
// Tạo dữ liệu JSON bạn muốn gửi đi
|
||||
const dataToSend = {
|
||||
// Đặt dữ liệu của bạn ở đây
|
||||
};
|
||||
|
||||
// Tạo tiêu đề
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json',
|
||||
'loginid': null,
|
||||
'Code': 'chuoi ngau nhiên',
|
||||
'AccessToken': md5(Code + '24feca0508b52d34b51db4b40964e7fff12edf71208a4607126f75cb5d504f7f')
|
||||
};
|
||||
|
||||
// Gửi POST request bằng Axios
|
||||
axios.post('https://disti.danielvu.com/api/sendBuyerOrderToERP', dataToSend, { headers })
|
||||
.then(response => {
|
||||
// Xử lý response ở đây
|
||||
console.log('Response:', response.data);
|
||||
})
|
||||
.catch(error => {
|
||||
// Xử lý lỗi ở đây
|
||||
console.error('Error:', error);
|
||||
});
|
||||
|
||||
|
||||
// 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]
|
||||
|
||||
|
|
|
|||
BIN
screenshot.png
BIN
screenshot.png
Binary file not shown.
|
Before Width: | Height: | Size: 102 KiB |
|
|
@ -0,0 +1,299 @@
|
|||
import axios from "axios";
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This file is dedicated for defining HTTP routes. A single file is enough
|
||||
| for majority of projects, however you can define routes in different
|
||||
| files and just make sure to import them inside this file. For example
|
||||
|
|
||||
| Define routes in following two files
|
||||
| ├── start/routes/cart.ts
|
||||
| ├── start/routes/customer.ts
|
||||
|
|
||||
| and then import them inside `start/routes.ts` as follows
|
||||
|
|
||||
| import './routes/cart'
|
||||
| import './routes/customer'
|
||||
|
|
||||
*/
|
||||
|
||||
import Route from "@ioc:Adonis/Core/Route";
|
||||
import { runtimeCheckLogs } from "App/utils/runtimeCheckLogs";
|
||||
import Env from "@ioc:Adonis/Core/Env";
|
||||
import { sendMessToZulip } from "App/utils/sendMessToZulip";
|
||||
import moment from "moment";
|
||||
import Product from "App/Models/Product";
|
||||
import { sendDeviceInfora } from "App/utils/sendDeviceInfor";
|
||||
|
||||
runtimeCheckLogs(Env.get("FOLDER_LOGS"));
|
||||
|
||||
// setTimeout(async() => {
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// LogDetectFile.all()
|
||||
// console.log("first")
|
||||
// }, 2000);
|
||||
|
||||
//ERP get index serial number
|
||||
|
||||
Route.post("/api/getIndexSerialNumber", "ErpsController.getIndexSerialNumber")
|
||||
.middleware("checkToken").middleware(
|
||||
"writeLog"
|
||||
);
|
||||
// .middleware("writeLog");
|
||||
|
||||
Route.post("/api/getParagraph", "ErpsController.getParagraph")
|
||||
.middleware("checkToken")
|
||||
.middleware("writeLog")
|
||||
|
||||
|
||||
//Users
|
||||
Route.post("/api/account/createUser", "UsersController.create").middleware(
|
||||
"writeLog"
|
||||
);
|
||||
|
||||
Route.post("/api/account/checkLogin", "UsersController.checkLogin").middleware(
|
||||
"writeLog"
|
||||
);
|
||||
|
||||
//Log
|
||||
Route.get("/api/log/showLog/:name?", "LogsController.showLog").middleware(
|
||||
"writeLog"
|
||||
);
|
||||
|
||||
Route.get("/api/getAllLogDetect", "LogsController.getAllLogDetect")
|
||||
|
||||
//Key-Value
|
||||
Route.post("/api/getKeyValue", "ValuesController.getKeyValue")
|
||||
|
||||
Route.post("/api/deleteValue", "ValuesController.destroy").middleware(
|
||||
"writeLog"
|
||||
);
|
||||
|
||||
Route.post("/api/editValue", "ValuesController.edit").middleware(
|
||||
"writeLog"
|
||||
);
|
||||
|
||||
Route.post("/api/addValue", "ValuesController.create").middleware("writeLog");
|
||||
|
||||
Route.post("/api/backupProduct", async ({ request, response }) => {
|
||||
try {
|
||||
const date = moment(Date.now()).format("YYYYMMDD");
|
||||
const res = await axios.post(
|
||||
"https://logs.danielvu.com/api/getIndexSerialNumber",
|
||||
{ from: date, to: date },
|
||||
{
|
||||
headers: {
|
||||
Authorization: request.headers().authorization?.replace(/"/g, ""),
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
res.data.map((obj, index) => {
|
||||
res.data[index] = {
|
||||
PID: res.data[index].PID,
|
||||
SN: res.data[index].SN,
|
||||
VID: res.data[index].VID,
|
||||
line: res.data[index].line.join(","),
|
||||
file: res.data[index].fileName,
|
||||
warehouse: res.data[index].warehouse,
|
||||
};
|
||||
});
|
||||
const addProduct = await Product.createMany(res.data);
|
||||
// console.log(addProduct)
|
||||
response.status(200).send("Add " + res.data.length + " success!");
|
||||
await sendMessToZulip(
|
||||
"stream",
|
||||
"networkToolBot",
|
||||
"Log service",
|
||||
"Backup product " +
|
||||
date +
|
||||
" success with " +
|
||||
res.data.length +
|
||||
" products"
|
||||
);
|
||||
} catch (error) {
|
||||
response.status(500).send(error);
|
||||
await sendMessToZulip(
|
||||
"stream",
|
||||
"networkToolBot",
|
||||
"Log service",
|
||||
"Backup product fail. Please check!"
|
||||
);
|
||||
}
|
||||
}).middleware("writeLog");
|
||||
|
||||
Route.post("/api/sendMailInforDevice", async () => {
|
||||
try {
|
||||
sendDeviceInfora()
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
}).middleware("checkToken").middleware(
|
||||
"writeLog"
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue