From 382b74ad83e27e28ca582358ac57dfe12da1b66d Mon Sep 17 00:00:00 2001 From: joseph le Date: Tue, 19 Sep 2023 08:34:02 +0700 Subject: [PATCH] update format message, update favion icon and title --- app/store/logs/20230919-TEST.log | 8 +++ app/utils/deleteMessageZulip.ts | 44 +++++++++++++ app/utils/runtimeCheckLogs.ts | 59 ++++++++++------- app/utils/screenShot.ts | 1 + manage-view/public/favicon.ico | Bin 3870 -> 15406 bytes manage-view/public/index.html | 2 +- screenshot.js | 106 ++++++++++++++++++++----------- 7 files changed, 158 insertions(+), 62 deletions(-) create mode 100644 app/store/logs/20230919-TEST.log create mode 100644 app/utils/deleteMessageZulip.ts diff --git a/app/store/logs/20230919-TEST.log b/app/store/logs/20230919-TEST.log new file mode 100644 index 0000000..8483dc6 --- /dev/null +++ b/app/store/logs/20230919-TEST.log @@ -0,0 +1,8 @@ +adfasf +anfasll ak shflks as klhfalk la EHWIC- fsjl +123 PVDM3- hui 800G2-POE-2 +sdhgksd sjk hk error +abc 123 fail +abc 123 fail +sdhgksd sjk hk error +123 PVDM3- hui 800G2-POE-2 \ No newline at end of file diff --git a/app/utils/deleteMessageZulip.ts b/app/utils/deleteMessageZulip.ts new file mode 100644 index 0000000..dfe3555 --- /dev/null +++ b/app/utils/deleteMessageZulip.ts @@ -0,0 +1,44 @@ +const zulip = require("zulip-js"); + +export async function deleteMessagesZulip(streamName, topicName, numOfDay) { + const config = { + zuliprc: "./download", + zulipVersion: "v2", + }; + const client = await zulip(config); + try { + const messages = await client.messages.retrieve({ + anchor: "oldest", + num_before: 0, + num_after: 5000, + narrow: [ + { operator: "stream", operand: streamName }, + { operator: "topic", operand: topicName }, + ], + }); + // console.log(messages.messages.map(u=>u.reactions)) + const members = await client.users.retrieve(); + + // console.log(members.members) + for (const message of messages.messages) { + if ( + message.reactions.filter( + (i) => + i.emoji_name === "working_on_it" && + members.members.filter((u) => u.user_id === i.user_id)[0] + .is_admin === true + ).length === 0 && + message.timestamp < + Math.floor((Date.now() - 60000 * 60 * 24 * numOfDay) / 1000) + ) { + const res = await client.messages.deleteById({ + message_id: message.id, + }); + console.log(`Deleted message ID ${message.id}`); + // console.log(res) + } + } + } catch (error) { + console.error("Error:", error); + } +} diff --git a/app/utils/runtimeCheckLogs.ts b/app/utils/runtimeCheckLogs.ts index cae0462..2266c70 100644 --- a/app/utils/runtimeCheckLogs.ts +++ b/app/utils/runtimeCheckLogs.ts @@ -7,8 +7,6 @@ import KeyValue from "App/Models/KeyValue"; import Database from "@ioc:Adonis/Lucid/Database"; import { sendMessToZulip } from "./sendMessToZulip"; import { getListLineByItem } from "./getListLineByItem"; -import { screenShot } from "./screenShot"; -import { uploadFileToZulip } from "./uploadFileZulip"; // export default class loggerAPI { export async function runtimeCheckLogs(folderPath) { @@ -45,9 +43,11 @@ export async function runtimeCheckLogs(folderPath) { //import log new file // console.log(filePath) if ( - //Sua \\ --> / + filePath?.split(".")[filePath.split(".").length - 1] === "log" && filePath.split("/")[filePath.split("/").length - 1]?.split("-")[0] === + //localhost + // filePath.split("\\")[filePath.split("\\").length - 1]?.split("-")[0] === moment(Date.now()).format("YYYYMMDD").toString() ) { console.log("New file added: ", filePath); @@ -55,6 +55,7 @@ export async function runtimeCheckLogs(folderPath) { { file_name: filePath.split("/")[filePath.split("/").length - 1] }, { file_name: filePath.split("/")[filePath.split("/").length - 1] } ); + //localhost // await LogDetectFile.firstOrCreate( // { file_name: filePath.split("\\")[filePath.split("\\").length - 1] }, // { file_name: filePath.split("\\")[filePath.split("\\").length - 1] } @@ -191,15 +192,24 @@ export async function runtimeCheckLogs(folderPath) { let item = listExtraItem.includes(log.detected_content) ? ":medal: **" + log.detected_content + "**" : ":small_orange_diamond: " + log.detected_content; - - log.line?.map((line)=>{ + + log.line?.map((line) => { issueFound = - issueFound + - "\n" + - line + - "$" + - contentFile[line-1]?.replace(log.detected_content, "`" + log.detected_content + "`") - }) + issueFound + + "\n`" + + line + + "` " + + contentFile[line - 1]?.replace( + log.detected_content, + "[" + + log.detected_content + + "](https://logs.danielvu.com/logs/" + + fileName + + "#" + + line + + ")" + ); + }); content = content + "|" + @@ -228,23 +238,24 @@ export async function runtimeCheckLogs(folderPath) { content + "\n\n" + spoiler + - "\n\n*Issue found:*\n" + issueFound + "\n\n***Issue found:***\n" + + issueFound // uriImage + // ")\n" ); - sendMessToZulip( - "stream", - "AUS_VN_Test", - "Test Log Alerts", - "------------\n\n:warning: :warning: **" + - fileName + - "**\n\n" + - content + - "\n\n" + - spoiler + - "\n\n*Issue found:*\n" + issueFound - ); + // sendMessToZulip( + // "stream", + // "AUS_VN_Test", + // "Test Log Alerts", + // "------------\n\n:warning: :warning: **" + + // fileName + + // "**\n\n" + + // content + + // "\n\n" + + // spoiler + + // "\n\n*Issue found:*\n" + issueFound + // ); // }, 10000); // }, 3000); diff --git a/app/utils/screenShot.ts b/app/utils/screenShot.ts index f9c9b80..cc0a212 100644 --- a/app/utils/screenShot.ts +++ b/app/utils/screenShot.ts @@ -6,6 +6,7 @@ export const screenShot = async (filename, time) => { args: ["--no-sandbox"], }); + try { // Open a new page const page = await browser.newPage(); diff --git a/manage-view/public/favicon.ico b/manage-view/public/favicon.ico index a11777cc471a4344702741ab1c8a588998b1311a..b636d9a81b5a7a0aa800a161114d027c5e7d06fe 100644 GIT binary patch literal 15406 zcmeHO3v5&86*g;8Tck~`RHSMGiD^?;+DWUbsnb?%t)^-kXk#6Tc^5((-w;9=B(@xqjO#IRw3VNZia^P;}4O(R{Id9&xBGKE{M)|mv>lAaIVJy=eozzg}ydP^8MYd zV5lz+NLF(Tc(YG-x{YU{D*&DEG5VD6GS)(u!9V$u@9$~_V||HV{6_2_`PmzOU;gv- zC$;k?PkQUijt8Wk_Ij`K?(q@m+ME4AGVXj&d529n+0|AL8wqXx21#K z(gC}-YM`R{1Q0(Z$;rPY6vK!%`lKuVY^K@!wrlR5I=lxgW*uxzONP3N0;nqf6h8S! z8kmjsuzyDy5Ptyucdah-&WJW@Hj}4PqvFgpr6(5b-MX=J^QJ_*zM*u^$C|bG_HEmA z@Wi1V+tb&_Lv_iqMF+O3%tc$?ebZf*u6b45>{JzZ4)q+=D7hUPHFqBG6R^HTqlz=8 zD!Dl1^%EbPPx6!x^`6F=8Axv-(fB0gXSds*a@fot4_JjE_vaGM^+k&TE*p=*mnF-G zMhc=ohRRt_`NA?_GoK2_mOt6St{NQM7Q#s3yi?xnU+6Q>yx4EP?@vd#ylZvoXkUK+ zX3^hfdSV!`n4-efA4vWS-9CIjabUe)_tW+J9g2;nqvF&%QbI z?G1;{p}fP|;qr}C`xJY@Jb!;}8_G`vZJ**Dv3+UtpYirP z(tJ(QiYsYrASDI@IMSZ+_1#D0z;P~kri?cSZ23{Qp zYvPxIp{Y`|b#(t$v2DtlSU8-$ORV!IFZK)PL0^`|!$^Vr3N*$%?P;Ix9Tw9YhxTNR zP=5>!Wv>1-RXZ`A%5~ZxeT0krv4vkNu7{cL7$$f50c$(0ZQ+(yeq$tW?i=20vpQUp zmXUpP>sie}zmTM_Ej)~CHq$l&33XzR=Gk5_V;B%hkB_&YY7#H+bnx)({QXyiC< zGOvoA?W$98-|%bS|JnNW@y}u1Wmcc68Y|ByDdzY!Jj&!%D_=kzL#ax|eYAa*^x+!4 z4a?$D-9uR3MfwJ@rt>O}`ujD;>ur&*RBXr6DX$!rS8;9ma`_Wd>{FYK>iD0dzI=^J z(W6l+c2nQhu9ZK-E90_IcNf-|VJ!ZN+G0C7uTqG635bQms!1fTQOD)E%TwFOzlS|Q z`y{wUD~myrx=(^l#UC^_K54fJuMOBtInF(kN4tN(-f^+C7~ykMAq>@S!2N_JL&MtW zoZF}8zXpwO;jVMwAAm5~ZZRbw?(1Xp;@A?=dmNiC8*<=g$#UE~mR}#y&PxD+n;fVI z4r}Ku#5u9pnXj-9SDJU?-p&HJMSUoUp5+h!<;#X=@LO{*qJCyreUzVdRm08F_niAP zh0zBgU;d1*J`7qqUbtv88NN&S=^J;We3ghF_t*?K^5rl1!f&_tOvCS|JNi1NBla=)={%s%)EE}gS%KXmZ7<84?}jRsPX81BQ-7T<6+f-f zXr1hD9VLZVS#SUZopWyH4PT(TQ1M^rZG*G8&Xa;MP#cr3BINNmRQ%)@il0tH4bJbavj+ zTn6rYQ`DDG@zWmt*^(pUGX4Y_pBTTY@Q`?}?*0ry#ZU1r(n zik$DSZd~5q2^l}Nhs2yD7CTgi8b9veFFk(49yQT-vV9!CU(5%Qnm>@8@ti*}{1aV< z8b1?_o7oQszqo#B4R8Gt%-V<6+6*@;2DbE`;{)rC3WnYR-v{_$GB2h;DG zqTF%APtT9yhy2kKA+qAP-g68J)&DI1Cc1o#Kf-(G7`N`v{IUPX`orBfk+}Xo`=7?L zilP(nQThg`#T;u-e^ZX+8SOFnP_quIN=}LEW%o9;hB%}B6f!kxk?%P+j?rJ9|B!yt zCDs4-p0;V&zL(i2-TJyxSj{a4Zs}Zzn)64nVs3#uzoAMCYvY$f+_EU(VitheQ0L-P zJKfn*SdV!CD`KKyVf3HD(D+~<+PnVNG4iD2MrD$7|Gz-q>u>-6>UrUL%$2TV`1JLq zuq|EbJR`^R>OcMAx6syH?b2`3*TA+6Cx2sdEW|8&XAHjf=1Rbvc9;Cp1#_SrpQUg8 zzd`*E^6ID^<#~(w4VYhyc?NY~l`VYU*Z#jC2$L_`gbX}4{g(Di4(!Zu*;Xbjh1g~D zUEfAK#?78B8$~|lU#JsfK)ogoztc@3KFR^vwb_{iLi}~BW8nRF=RsGybABf3-{o6B z>*FOnOC2s=M*jcyR^hx1A>02Mq}|f_GRm5bjpbq<2A%!yMx6PWBh#U;b@{HPw#e1D z1G_RI?^rha{=pu9eMKH*Zb%SwOZMY`5{~EY0pn1t z&X>RJ%lE7v047n+d*0DK-D2JX;%})fcHw4z$-`V6;?w^e+L|8VCO*Y=(TQvkd*+5! zKz(6yti+rUSO2}~zc`A07|%|JwQ}Rl)AMHnNdF%MV*8Nc?`*5bGf8vZpv}~Hq1VvX z-c)`Yb63QCl+7Dg-|5s>nFcIvI!3K^rT@v@yIIU_$@(DiPD`z}m+{Vbw|2BOoca3j zzK=vc+2}IX2#jyS*3`|(wpDsCa;Z&GreN* z!Iqnn;(m#`M{{4eR$l$yk9nT|0p_Ia#Cn(SL>!pEqgJbb$n)HkF?l_R4KduuoSVv& z#N|_Yj+=u2mDz>4NR(&eiXW`=svqC`mBHd>?fJyTKf*kjql8t=_JKA!u_6ox01 zl2^X}3-n#J%cc`2;#C+ikL~pgW$aJT-{oj`tUnQVx=QgT=0?4UyegExgC+Af%Ez^T zkR11W(m%=<-=)zuF8!fk_K=yBm9l(ls#>uaxd)gL4+pH8s^n3|J9{A6w! zVmyuSf)*)(SFaLdjdW$DBu>Trs3quY%zNUBG1gaRCaq*=(4u~R9k;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= z!sii`1giyH7EKL_+Wi0ab<)&E_0KD!3Rp2^HNB*K2@PHCs4PWSA32*-^7d{9nH2_E zmC{C*N*)(vEF1_aMamw2A{ZH5aIDqiabnFdJ|y0%aS|64E$`s2ccV~3lR!u<){eS` z#^Mx6o(iP1Ix%4dv`t@!&Za-K@mTm#vadc{0aWDV*_%EiGK7qMC_(`exc>-$Gb9~W!w_^{*pYRm~G zBN{nA;cm^w$VWg1O^^<6vY`1XCD|s_zv*g*5&V#wv&s#h$xlUilPe4U@I&UXZbL z0)%9Uj&@yd03n;!7do+bfixH^FeZ-Ema}s;DQX2gY+7g0s(9;`8GyvPY1*vxiF&|w z>!vA~GA<~JUqH}d;DfBSi^IT*#lrzXl$fNpq0_T1tA+`A$1?(gLb?e#0>UELvljtQ zK+*74m0jn&)5yk8mLBv;=@}c{t0ztT<v;Avck$S6D`Z)^c0(jiwKhQsn|LDRY&w(Fmi91I7H6S;b0XM{e zXp0~(T@k_r-!jkLwd1_Vre^v$G4|kh4}=Gi?$AaJ)3I+^m|Zyj#*?Kp@w(lQdJZf4 z#|IJW5z+S^e9@(6hW6N~{pj8|NO*>1)E=%?nNUAkmv~OY&ZV;m-%?pQ_11)hAr0oAwILrlsGawpxx4D43J&K=n+p3WLnlDsQ$b(9+4 z?mO^hmV^F8MV{4Lx>(Q=aHhQ1){0d*(e&s%G=i5rq3;t{JC zmgbn5Nkl)t@fPH$v;af26lyhH!k+#}_&aBK4baYPbZy$5aFx4}ka&qxl z$=Rh$W;U)>-=S-0=?7FH9dUAd2(q#4TCAHky!$^~;Dz^j|8_wuKc*YzfdAht@Q&ror?91Dm!N03=4=O!a)I*0q~p0g$Fm$pmr$ zb;wD;STDIi$@M%y1>p&_>%?UP($15gou_ue1u0!4(%81;qcIW8NyxFEvXpiJ|H4wz z*mFT(qVx1FKufG11hByuX%lPk4t#WZ{>8ka2efjY`~;AL6vWyQKpJun2nRiZYDij$ zP>4jQXPaP$UC$yIVgGa)jDV;F0l^n(V=HMRB5)20V7&r$jmk{UUIe zVjKroK}JAbD>B`2cwNQ&GDLx8{pg`7hbA~grk|W6LgiZ`8y`{Iq0i>t!3p2}MS6S+ zO_ruKyAElt)rdS>CtF7j{&6rP-#c=7evGMt7B6`7HG|-(WL`bDUAjyn+k$mx$CH;q2Dz4x;cPP$hW=`pFfLO)!jaCL@V2+F)So3}vg|%O*^T1j>C2lx zsURO-zIJC$^$g2byVbRIo^w>UxK}74^TqUiRR#7s_X$e)$6iYG1(PcW7un-va-S&u zHk9-6Zn&>T==A)lM^D~bk{&rFzCi35>UR!ZjQkdSiNX*-;l4z9j*7|q`TBl~Au`5& z+c)*8?#-tgUR$Zd%Q3bs96w6k7q@#tUn`5rj+r@_sAVVLqco|6O{ILX&U-&-cbVa3 zY?ngHR@%l{;`ri%H*0EhBWrGjv!LE4db?HEWb5mu*t@{kv|XwK8?npOshmzf=vZA@ zVSN9sL~!sn?r(AK)Q7Jk2(|M67Uy3I{eRy z_l&Y@A>;vjkWN5I2xvFFTLX0i+`{qz7C_@bo`ZUzDugfq4+>a3?1v%)O+YTd6@Ul7 zAfLfm=nhZ`)P~&v90$&UcF+yXm9sq!qCx3^9gzIcO|Y(js^Fj)Rvq>nQAHI92ap=P z10A4@prk+AGWCb`2)dQYFuR$|H6iDE8p}9a?#nV2}LBCoCf(Xi2@szia7#gY>b|l!-U`c}@ zLdhvQjc!BdLJvYvzzzngnw51yRYCqh4}$oRCy-z|v3Hc*d|?^Wj=l~18*E~*cR_kU z{XsxM1i{V*4GujHQ3DBpl2w4FgFR48Nma@HPgnyKoIEY-MqmMeY=I<%oG~l!f<+FN z1ZY^;10j4M4#HYXP zw5eJpA_y(>uLQ~OucgxDLuf}fVs272FaMxhn4xnDGIyLXnw>Xsd^J8XhcWIwIoQ9} z%FoSJTAGW(SRGwJwb=@pY7r$uQRK3Zd~XbxU)ts!4XsJrCycrWSI?e!IqwqIR8+Jh zlRjZ`UO1I!BtJR_2~7AbkbSm%XQqxEPkz6BTGWx8e}nQ=w7bZ|eVP4?*Tb!$(R)iC z9)&%bS*u(lXqzitAN)Oo=&Ytn>%Hzjc<5liuPi>zC_nw;Z0AE3Y$Jao_Q90R-gl~5 z_xAb2J%eArrC1CN4G$}-zVvCqF1;H;abAu6G*+PDHSYFx@Tdbfox*uEd3}BUyYY-l zTfEsOqsi#f9^FoLO;ChK<554qkri&Av~SIM*{fEYRE?vH7pTAOmu2pz3X?Wn*!ROX ztd54huAk&mFBemMooL33RV-*1f0Q3_(7hl$<#*|WF9P!;r;4_+X~k~uKEqdzZ$5Al zV63XN@)j$FN#cCD;ek1R#l zv%pGrhB~KWgoCj%GT?%{@@o(AJGt*PG#l3i>lhmb_twKH^EYvacVY-6bsCl5*^~L0 zonm@lk2UvvTKr2RS%}T>^~EYqdL1q4nD%0n&Xqr^cK^`J5W;lRRB^R-O8b&HENO||mo0xaD+S=I8RTlIfVgqN@SXDr2&-)we--K7w= zJVU8?Z+7k9dy;s;^gDkQa`0nz6N{T?(A&Iz)2!DEecLyRa&FI!id#5Z7B*O2=PsR0 zEvc|8{NS^)!d)MDX(97Xw}m&kEO@5jqRaDZ!+%`wYOI<23q|&js`&o4xvjP7D_xv@ z5hEwpsp{HezI9!~6O{~)lLR@oF7?J7i>1|5a~UuoN=q&6N}EJPV_GD`&M*v8Y`^2j zKII*d_@Fi$+i*YEW+Hbzn{iQk~yP z>7N{S4)r*!NwQ`(qcN#8SRQsNK6>{)X12nbF`*7#ecO7I)Q$uZsV+xS4E7aUn+U(K baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/manage-view/public/index.html b/manage-view/public/index.html index aa069f2..b6a27e0 100644 --- a/manage-view/public/index.html +++ b/manage-view/public/index.html @@ -24,7 +24,7 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> - React App + Log View diff --git a/screenshot.js b/screenshot.js index a773459..6397d4b 100644 --- a/screenshot.js +++ b/screenshot.js @@ -26,48 +26,63 @@ // // Close the browser // })(); -const zulip = require("zulip-js"); +// const zulip = require("zulip-js"); -const config = { - zuliprc: "./zuliprc", - zulipVersion: "v2", -}; +// const config = { +// zuliprc: "./download", +// zulipVersion: "v2", +// }; -async function deleteMessages() { - const client = await zulip(config); +// async function deleteMessages() { +// const client = await zulip(config); - // Thay thế "stream-name", "topic-name", và các mốc thời gian cụ thể - const streamName = "Result test - auto.nswteam.net"; - const topicName = "AU-dev"; - const startTime = Date.parse("2023-09-11T00:00:00Z"); - const endTime = Date.parse("2023-09-11T23:59:59Z"); +// // Thay thế "stream-name", "topic-name", và các mốc thời gian cụ thể +// const streamName = "Result test - auto.nswteam.net"; +// const topicName = "test"; - try { - const messages = await client.messages.retrieve({ - anchor: "oldest", - num_before: 0, - num_after: 3, // Điều chỉnh theo nhu cầu của bạn - narrow: [ - { operator: "stream", operand: streamName }, - { operator: "topic", operand: topicName }, - // { - // operator: , - // operand: `169457100,1694571399`, - // }, - ], - }); - console.log(messages.messages.map(obj=>obj.reactions)) - // for (const message of messages.messages) { - // const res = await client.messages.deleteById({ message_id: message.id }); - // console.log(`Deleted message ID ${message.id}`); - // console.log(res) - // } - } catch (error) { - console.error("Error:", error); - } -} +// try { +// const messages = await client.messages.retrieve({ +// anchor: "oldest", +// num_before: 0, +// num_after: 5000, // Điều chỉnh theo nhu cầu của bạn +// narrow: [ +// { operator: "stream", operand: streamName }, +// { operator: "topic", operand: topicName }, +// // { +// // operator: , +// // operand: `169457100,1694571399`, +// // }, +// ], +// }); +// // console.log(messages.messages.map(u=>u.reactions)) +// const members = await client.users.retrieve(); +// // console.log(members.members) +// console.log(messages.messages.length) +// // await client.messages.deleteById([159454, 159455]); +// for (const message of messages.messages) { +// console.log(message.id) +// if ( +// message.reactions.filter( +// (i) => +// i.emoji_name === "working_on_it" && +// members.members.filter((u) => u.user_id === i.user_id)[0] +// .is_admin === true +// ).length === 0 && +// message.timestamp < Math.floor((Date.now() - 60000*60*24*10) / 1000) +// ) { +// const res = await client.messages.deleteById({ +// message_id: message.id, +// }); +// console.log(`Deleted message ID ${message.id}`); +// console.log(res) +// } +// } +// } catch (error) { +// console.error("Error:", error); +// } +// } -deleteMessages(); +// deleteMessages(); // const zulip = require("zulip-js"); // const fs = require("fs"); @@ -145,3 +160,20 @@ deleteMessages(); // const filePath = 'screenshot.png'; // Replace with your file path // uploadFileToZulip(filePath); + + +// const puppeteer = require("puppeteer"); + +// (async () => { +// const browser = await puppeteer.launch(); +// // Store the endpoint to be able to reconnect to the browser. +// const browserWSEndpoint = browser.wsEndpoint("https://pptr.dev/api/puppeteer.browser"); +// // Disconnect puppeteer from the browser. +// browser.disconnect(); + +// // Use the endpoint to reestablish a connection +// const browser2 = await puppeteer.connect({browserWSEndpoint}); +// // Close the browser. +// await browser2.close(); +// })(); +