From f301c3acaffb3c55bc56d556605d753793e57a92 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 22:20:15 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 02 22:20:15. --- .../20260602/20260602222002-Binary.backup | Bin 0 -> 255245 bytes .../20260602/20260602222002-Config.rsc | 3420 +++++++++++++++++ .../20260602/20260602222002-Diff-Config.rsc | 79 + 3 files changed, 3499 insertions(+) create mode 100644 MikroMaster/20260602/20260602222002-Binary.backup create mode 100644 MikroMaster/20260602/20260602222002-Config.rsc create mode 100644 MikroMaster/history/20260602/20260602222002-Diff-Config.rsc diff --git a/MikroMaster/20260602/20260602222002-Binary.backup b/MikroMaster/20260602/20260602222002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b25ef36f1bef6e9a0f1002ec5c7d7e3e0f676589 GIT binary patch literal 255245 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%0AD*%h_^tYn;+P^qK1SfRQqP=5n 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 DK) zBh)L(jAKWd^xOmeL)XtOg4cm&Hp~T>zFijAP!o$gdF%jv8M-e{uY(H z!@0s?TUna@z`6jUhfMP9h#Xaw2O$b3@<;iGz)sP zvcyQFz*PM!=s;_uT8DI@PAHv=vMrQ=3a3tF=D%=@$C_tlLi|ZeL|QC~)DV zF^|}+9d7FG%LZCYM8d#KC%izdqs2EUh?ru-Jfn*L>AI{c9P6rui-W{R+0w!ZI3W@o zzeFZvW4=wK_<;VEi!1t)>%E*1FA)IkWexLn_)(WQC^P466Q5 zN!7z4neu=x>aNWSBoDF_(0otR8^X6*ji?X0*+R;D4^$a zBmy3bDA$lFGDu>GKfz0wB~%P?gQNrvMzY5@x~zlJ`Y>J9F)ZT5Tes*?q;_GC^o|_7 z{{UC(qPIB5NAhXyz|R$C-&4oV9TEt0;?JyP(!UDX&9;1r;2G|p!BbiW`7)TWiJ9H9Vh*vL>S0-)NPBl^LV+BDYg`apH5NNQ-F;lQ| zp)C}@WBFX^R+~&1gXZofOdO00X2>n7G3y<|sF|DjA7y0gKx!5Z_w?k4fcLjwUzR{1 zcD%WCk^vufA^%oh2f_EQl=o+wpTNqE=Cz;I;rlB{KOn#Vx()VPMUTLUf8>o?GnUDr z@qUutwQq1J{GVTzbB^|F6W?xK{l-8RKX0_j81os7oO-bMM*7U%aii&Ta52iah4fi- zv&?9WON^fv_SMGEeP-P77`yU5`FikYu;^Az#aY{KblSPqOo=2Kj&D^4mu8brw$)fd z@S>bFTH*kVjKm44J6DH>@TyFa9w;&4W!QtTj0OtLBRzvQpQ)1yH`}zS+mCRi)(RdfX+!^QrW?x~RS#o;nTS0~i1#K3IM^>JN#u{+ zh0F}9!(pm3T%T&<8dytNDr$`iWuWmXI00zM1JY2V-I_iw6!}-ys&MclG&#OKoIy`?3 zX;=<$to?JWBpKC7A}rHwyt<3OLR{BmWGl>AII^B(OFMUKg-pQwj{SUt-U^AG4=%S* zd|^26$(hPn=^4NNxvd(RV6P$v_OZZQGC#dpux{;=3Ap@kmYP8Vd$PEX>Wfe6fp9@F zsOg8r$zK67DueYLAbi$7jzQq~#N8_-f1D;y=nI49DmIcO9okgRFA1?ei%+apf;ZRVn zmq{FAR$~&K2}h3cNY7Q=?##Y$dy<}#qtL@l;7SP#E8xuxsMHd6*FH$hc;jQCYy3&` zUWeV?IeU(X30QjbKtITuN}(Wd4p#@Bz}t+EqLCMs*G(kZ8BqGMu{GMnf*{CPcY0xxL%&hYWZuF4CmX*ar^rMzj26kqQn%*A0kGShCrMt4|G!#g_kB(r_N>gDE4kJ2tR0W}4c|K(LJo8iCvld`Ax zeK=!MSq_n`i~?|msHf#7sJ}k$H*0Z54zzjZ<~c>y6HNY%>Q2#l3Cr9V-#F7j`m0zT z+dgQcD1NxTRpF7Yw^)h1(3$<~k~mU` zeGB+Wd%(3I-X?wjS2FZ7Se3!CEPz|SgPqqX-(a`tKVyM9%OS^ z&;Bg|Jc;4`ftJS zA07)64UwFr|nXS*#}n?)E#o>zLZR|1C5?j)-+@IMPBTF+4D0 zRc**Uk)%w*aI(56b#1*PJOvP^RE|S@p;;FBh~zvrAEbGKS~-?05$FJYMJ1wifJAIm zy>9Z_#_$Zx`5>eQWp4s{_pb$)7DFpAB#U5byxFmV{UUR17Tj3M&(N)MNb*&OHO}*G{*S#4a$Q{{$@D5_ZJ6oi#C) zkW=~v4mJ6G2x-c!@jc4lcrX>2?D;=ISgn6u;qJL9aL`a%5 z*z|n7PF;$fF}LbE%IbwNquE^b%g7#q&5sVpH*gKfGO&^T0S?zA#DTA1;vIH{br0(8 z>?!pa24}yAjw+7mJ*5RU69YM@^|*S=51RDljFTX1Vl*~gx;Jzw>E|2riRbD{%tyEI zEpgtOqO?BcF~YalmId&6b0kZc9d7L`Q<(X)kZr!Hj+^?dvQXNfN_vxh*MsZ} zwztbn3XJ_+SmauTgc|Obh<57wgM+(SrFworL@lE+(5U~czFGb&(Gug^Gv&Tn`o$huOB2sKXVbXXq0q> zuE*wzM_>0xsY6Yil8L3MC)_l^@!*D+KnI&7ZfA^MR;;790?b~W>C?t29xBnJSWOGJ zO1*-Hf|b?vinwFH-*_#^Ru+8OJrG2IW+M6L7MTY8NzhN4fIc0F9Z1c9M>k|Ijg=+X zw&DQ&T!e7T#hzU#K%K+va#xg&t4uJhfAc3f=FX;S0RaZr;g2k}uG%2EbSdcj9KP?U zEzrO7#DE9Q7ZfL4?9ZsR%BjJR)r|MXn+@HI&NSNtz_oz#|K7x|i^mGHRY}b_?IW-) z33!5b>=^hBBxLSzGdn9N+50K-XRE8L49oMPuRT~BtEnNLe~HL|%K1YryM@l?KiprJ zngWM{T9qVy@gzC?>@}|DOs>3JWP@uB# z4tDn!JK|>wY8es?TFa*e3>BeME$mG-g#*# zTg43r3EI1?6dj(}LwD3}il!kXEXx?~AiIUr@_m%SL+ag;@_b%)0+ z=F})9Zd#W1h&JqF!a<9{M1Tb)&GkDWz3(H^n|WTt`Z*3R8BKNR z6I^?L__LU`213275Nn(m7OCWfaJHEF?3pmuP_0|02A{5l12f1M6?(&GYE3DNQr6kl z@iR^_zJ>4vPZ3{4t5cWZ7FI>kd8OJB?3=j;mm=Idq+=QI*$A;jT7cmGJwig}lp4N`99?V(9w!Vv|H#-)rb!U;%PZBSr zv?RVe%s(uaj_xLq;M@JKn^&12^XRY63_wJA?&u}+0_ael+f~#&A$^)9)n+(NmD|i? zI&t}U{$s-7`Knu(Q-5_!nV_^LaFv{C^U@%PCBEZB5kq1I{a20_DF5SVKIOZ^h|-K! zww&9C?oUf(0(ZZ{VkmKWgZVGgzW@MXkk`NEAL>&J+jzUU86b{RPmi%9NoY8)eY`I6 zAo%Lc+ugEt6M;LDG|$9xi-JJm#Nt)kkeHkZ>=I*&;GEk!mOaEuXP29oudiflmaO-G zEKE-Pnn;(TY#r}4Hh4Qrv5(d7n3ttSnDIDUDk?eENEbXZgFh_#JKMuh?W|IZ`(>vi zSjS&B`UHEvOEF*jmxg45BECDKUTxutjtvHfI75)+#K>0eyO3^4{>^W6;Ou}zWFit$ zxqen%;`_htMSBvQ6J9TIzDEofp8PjKTP2D6rvWsg^u0tc)Za^|b54|x&tH{0Ihg4d z#U#mhC~F7s6xOn{MEhDA2gDrBT8|+A(iVSeLED@W#@XJM2>+V`W-c~JU}qX~uzOXK z?9f$_oWH7DK2Dn~1lq{7KxbuW2I4LON;%p&;$cAA-ufWqN()UUYntul^QdpsUZ|Ig zK#9>kxBdF=w~`N$n6*g`PP8d7buSj3L;?5mqB{RFs9FUDm?eSQ?DL2^G%&srBsXwV zxQdH3-*r)fvN2FDe7EUuqkP0unhowsffse%OH9xE+*7I)_Cc^*CYTU}b}&o~wrmAp z<>zXn+Dkf^ncqq|-Yfbe%$R<&;04(}TYQ9qUj@B``z=P93Qleihy8DVE5BS) z-LV0SyN4l{sK~JpO4Q*Qx()p8$p0*3eKYi=AL-}l+dip=_^5vvLG(Z(d|I*gitk-; zF!amXNU1~!h#sNrA_a5%*!xhU&8k!K27H_CI|dv~A~T+|85wdfk5yzNBaAHqq#NJXpRt z1MnC7k9>az<+10!Dco^p#=K3Z28IG#fRM`8l(U3mxM0mlJ6(ovbFS0+PkFXQRFdeZ zOkyZyT}+CQQN+dJ^phV=ss z&Efd_pOmA$+V0-x%Y70|3DVW_;S$SJ-FfK)f4(nVC{Nkqj3Vla0U;loY~{J;^+4}! z+_`HI^v%^TC|4yW$aQt< z9#LcoYio9};*PHXo&mNCiA$;ZQYj=vi`~QhDmL@Hf$yXy^G8 zDiTb?30-3fnSDUYYqDS3WT}*$jZe$26pB|SHetYQC*PFtVXRyloa?hbl@*p}iw+x?J^{DOKc1i$Noa5Gj`p(#>qCDBGMN}NvVzUGN zabnBr;iNi~HV;roAG)h<%m*mSRZw4{6{Ugmt@@Jv@}Pt`JRbzg-D?zm((DUkc(4^? z>#i(1#KMK2v$GYl!5!Ur24&+hiMU@h_QCTz;~2P2;WHlPbvf_$S)>;f?ArP`oMmZs zr$qkh;pA=A@jPD>!-Hx8J{qDn1qW^sUkv1bQ|50@s^2?1>oJK3?6Oz$_X2x8JeE+8 zyn+}XN>7D|M%CWCs1Oya$9#c12#~8_*S{o4%c1Yx;0Y&S^@x#JI;yZ@A;jNVWL#rb zz`$PM{M-zxFJW_04}F^zuZ^c>A?Vsua%fFQJcbo#M)BIdLl#8A4|AfjUNXIev#J`~ zoI6ma?CtWudq+L+>8^#1?Y42-v5eLe`px}iM|%eR9>uYgGK{BfVbIJ*cY-P#PPq1phK@jYGCE4+8fuT*2uF?}83hd#71okHc9zqGI$*+P9meCU_dOtwwg`t0b z-BZ#@G-To@1 z@=?$=ESvyjyuSpw*JeO!SHq1LK7>1?l=JH1<7hb>+I986w2^rA@i=0=tn&>-RM&OH z>?Q6bXT+w1HK<|JjIx_8uc%memG?S<;}cfwId?8c8Kc*?2K!+Oh1V8>C zM*(_>(X`-E;)-SW<>W?BB@;zN7-V^M@v$DA07a6+J@JcGp;~^rbb?R`Mndg-^f9Xu zbw6pwhM!tmNZT^IO@9z?@IzHjfhXo-zZm@l&H#q7fUD~}QP6oq(}RPzWt4X(@vxMI zEV4g-tllOn<20>Hslf0t3|{gDF@z_L@7Vv!H%tzaB)HoIg;Dw9TJXRsi-wnhl;iR{ zx30D@EPll=QY5#v_C~j5-o@Yp&s+KObzsw_1J(uT^qXV+E5RcFCD&2_%UcyRCCHV) z(pl?MSeiRYW=)D%kyra)NnEHT7LZ-vZ;NJeJI}L#D;`I73$K}4R>~0yDf_SEt+^Q^ z7^{8cK;NGlHG&-S=_sFP^KMDIv6s4x zA*ooOGoEDg86LzMV*Rpuimh*ll>=ZY*wuSX16;;+DK%css&!dNi9&^IRLhqig?Z`j zP96X*PFF#BbUDz=czW^|y-}KlgBO^sSeW2$P4zC3KG4O-JBPY7C;-cv=0}?)#sMY2 zV(eBXwvj^Al)sK3$wKyt0vU+waJXH>+lLRJJj(zKu z*HVQ96uJA~)A{Y$^_b@1PV6l3*}pDeaRp|;x`Diw1;I%2Z2SN$@>Flcu>cURAwpA` zG|!+MeMTg$bn; z@N@myY_F}OR=sV(=w(in3m?ok$P|0ByOKn>ETk1})0UrXxb#g=4X`d^BCH(RYR*F# zD-U~zJkoy>NI*6fGQF4G?5r7feq1^2z)n3dWai7GuURI6VmcX;rJ;$6+h{2eX|&qP zM^Y(Fl@YJRA?~4<-6#DW(AHb{@GRao0eawx;&@np@G79F+L#?jno#-AG4h1r$$Bu} z=4jC*`g$9`#EL;Dn;C$yLQb|HOYn zFJl+1ae31_5RpULDen{K$$9a)xV$D`klL~Xjp9#$C}C7%t>du&mIG8&ZXfRvMbn)M zP1!w)*SlUoEj{C`9eUW_{bPyA>S|$!arehI68~GMDNwTBWx0cys#BeXeEuMcJT8!8 zlT%hy=^Az-VY@hPgu%vq1lO6XiEV}N;hsw5Wnelp>pMe@x~p5)TO$O`bH^twGof$B zhy{gnppj{`xJgxEq1%A!xkT%h2_&_xkdctyi+e73Rl-oztQq6SDp^+wI5>GTb1v28xxcS_Vh+!1g1g&&9U zbg11C7~R6>Qa&ZsLn->ZB^~Ky{Lz~~s^0RUdbj<1=oE%gdn(%zEh1_S0mZd}Qlg~Y z3Sy~u#OJD!+n6N6f+DJ#h z*ry9t#KjVN=nTkym)pg$@@+QcJ6AnF(*xX3_#o{?*htA^%MsXmv?x(M3Ru&7p{Sr~ zU=R@&x5de#-8B-x#n#iE_)oyTBwormun!)gr9MWoqMfd_WmuoK#2yAOxn@pko&Od0 zM#Tvd0KpPfOMY)*+iP7AMm$EEeu*Gw=}yOEN~a-^{MPHgF+N~{#Cm1^)YAu*5UJ<$ z$3dS?)_^wd)z}F(0>o__Ue>+P6ifWyQ>hQk5=)p&fxm*_KP4LvFOLZ5cF73dDLVMC zW|bzaP7{-6Bh68!z~utz1>pT-A(EnHR}vkj@)$+*n-AsZ0fay4bNfDpJ21BHP2h03 zVh7D&`v^GOwV4ktOJ(IZZ`Wb_X%%h^QqEus50XP)(b(`S@$2Xm8~(%lJ@GR_|21k> zky}MXk?zt!t~X4@HQr$~4av0gpUNC~GawDp9AYsyX-^$SWuVj|dB)0`cH=m-{KDwW zo5s^@^x=X*x2x4=sUp|QKhX!@KR&-4=6=Oc`N%OmD^8zJfx;HCzt9r}v6} zw+nI7q;`nT<}_i& z!B?o7|BbrH7v|v7g7AnU{q1=7k6g7xzQ^fh9Joi9FKb2oHa`q;(~v>l33ok+Jh=mw zr@CwjM!NXAm~dChTB4rFrj@|1+u)YhKi4AY8HL+BcIW zMu1@p!eNKe6Wyav1-t)<*sJxM;1n5XE;qm;8S)62otOEvk&9MshGN=xuF%00%+y4; z&s7nVGko*bk{=_K#K}rYw`!A1%XWgTCpx2s)aXN{Rlew zIl%#|8VO|`LmzvxUVK0gz~kWF$6n%nIQne1(X!Ts%XxK!kgRwi#e$%k$-+hwQ5^`q zWM^#qX(w89ah~Nvrj|ks^SfWP+0W|jdV0`z5a$Pm{Am&hZr|*X?)#vZW}jj8>TBkh zX7u1O^`SA<;|5jJHu9}mMKzvMfx>}ff&lJv-T^~Ym3GfVrRV8{p9hPLq!~sI18yZ0 zmDU7!hz#2@pxou0jY-Va$lQ?(j8}+-?xxk0z%_#r_=bNk-I4NsIJUJrTGX%7x zPWuuZsR!QIJM6Er1#l_V4a18x3l&8R<5)OneCbBlXzx$zJ5@c+#Var#jaIq@gBG@V zhXYg6%R;x=TpqeCH<-$AfBMq07}R~8%OuNY{v>ocQ@sD1RI_eWAz=<{h=q_v%qpkz zIoZEva-GCC(2NG5j!CmYOuQdknBDuVOCFN%?&?Q#4nJ+#1JGi2ovm7kYQA@|ZX_>7 znktpf_nwHzm-C+eVBB6xJ%%K_?MTyh4bO;q^^UJ2PHPiP_<9;&yzRKB044tC7j;g0 z%%&?KH;jncL6onSP+{m_`D{+R5ONo#h^+Q zI#eSz-y{;{9(tRSC4EkbrvfUouocSxFjUm2Sh*W^W5d34w7Rk98n4`ZJ%o>^|6fK& zu-wj^Etp^I@Z%i+u6yduiv=9_M!dVlJ*$gd+6kK&q8;Yy7}%ooz#6|dEc1FPst@zX z>|_GE^?#bM1Yyi>ejD52?MCn)74&x3M6GVm3VJ8~8KK;F3NqeDoOj#M5X;oFKZ2rv zsGgNRW37L`sN9z3sWOD|BT%;iqaLZ_6jv)-|C3VRWng$TS?gD{cexzxitD}IxJ7O^ zcrV(~gs{(3GxrO5s>Q!1Il&$*-Jv?ahY36v0Ty+HrnL6pgaJt}yS;d~Kr#qe4}qY*ai1)S=@L`5U)(_2qRwH9p>ZG_69a#J&m8Fg}i# z&a7m?K+8H>{_2jn(Bb0qLL3tHvwqOe-hqN0^6U91xK5-5w zOi#zf(~Mm!8*Hw3jPghJO`x3SmKn?Tc5oxrJhGE;)SeHr8G-&(}s8M*vt?tf9e*jeb2n z=Gvz^cVu#Kxv18MGY%#jDoX(R`lF;(Ixibjn=dksaGe;_MO`&$#Iyf^PI{RBR}IkwGw zc=OI(pY-f?u|?+DBi12cw1+R!LojL9IRPzpe)kJI@Qnx;8bHXpC6Dg!fl?_g*=Jul z@)+#%fp%F$CC|YYxJ`-ynk~S7lsB1Uv-kn(S{QiMQeyxj!Wc!0P~z>Ei@9`v?i5=d zZ3GZYv*f+K$U#%0ZXIo+@_H9La5FCf-af3XXLoOHW{7QAjM)r}gdaBdaAGCNnn_od z&$XynZuI#&*WOG#+&hC=@TaQ+TFAQ75h)o&SwD!c$C zUS|lfc`3Pr1{E!Xs|Gc28F?#@qe0N}$S|vS!oB%!XcE9}<**AZ9P5L%qAvM01M&QH zWW$Og5LEKY_9}FlkJ>k=HW<&73BoBRELaMFXJ;yWM-uREU9VsKd#aimW%MiGsNGTD zpX&9^`WFOn*>@kwmSJy^#6mMHhUQL_^@%=~yJ?f8E+Y9oCNK=EX+iVvhSEnd$QxU0 z8L-*rDRWJ|fkby)7j#CGb6z?L)ZOX@2lZqRY(61PQ&K3{X5aqJrY2e@n24gODc$@N z+w%!^pD z5~-W3-CMIKP8@i9g;*u^2~DS0OjJz*i%0HoA^_?{Y{qE{mq34|u1x=3-lVbeFJR~n zKEhmW@5lO1U{-s63)GD&NxQQ<$84g{*$I1Bl0MOSV_oT$Sns7E%W}3nKAYET`#c8qQ^{NsLI~ zECs1A1qbMSe>Ew%ZN!RS#X)`~0LLFztt*GrOO>KKhMM!7DmuUMgG_2j&HIlGgeSox zYQKrt4Up$pPTH*6)I1Iw5{3gK`R@6UjFa9+hDct5I@O_Jl zufEsDiJr<$ip~b|sj~W?}UYVP2h9v%y$39G3^ zmvri57Y(GCI5-lylY>Yw&6}`Sq=BrXyT)mtcO3rC=?mJOIwCAcC4$o*oAkx6A&(zM1Yl2<4!vy2h*{%Q&rtQBR|Cob7 zs4iIVBMV-H{&ZH*F{}U%V7V_H1U6zaxb;%>Gvzbm#%0fT%1`Bn?caRKg-4 zJpmyL1O`P81*>Q9rA)qqU<$7cf2CGwAJa4Ye+qUCKz6H?z-M}WG_2#_B#GdQQy+|tD~zx^gB%4)l|E;nK>FIBvu%ZmMZ zsf^`nu?drp(^%sYayGqx_-LThXJ))nG@OH0HybL>=E{}6@Cy?_kPrbu;HI~4Y|gSd z+2+Q>9{RC@)@1tfSUnV)7X5^vVS|&0qDhYY4pCT&aW&2mvneS`P5-W`9wf86+70ZK zZ;x^MhY8Xu@H#0t&vTk}2xh*>U7d_v45!}WRO@D;%liO!g+%2&QhULs!!yFc+!0Ab zzpK+jKt&>-;@nAzEmy&X^^=f0%6gvkPqd56Bc$GUb90Jv7fb%9>tv#XP4%ILDp7<4 zDSgS#EZGVH>qkTl^LqcUGW*U$-P!il1P^S(c{*q*0yv?_!6G<-`^W+;eW-3?hjR4k z)(Tb|*aQg@$jE0m1xmu*lAbi9+rc+KznI!O>By3m&g>dqibDDvzky=MbOuY9ohxHg zpKEuc{FuE(?kl-zSd3=E!3o(nX^T#5uT$QQqZOguV@XW|5EdD`BS3N{Vn&mmgBy@x z;5cz=C*QGXQrDzKSUYc7XQo!58o<)3MCT*8esy5<^1(0a`d^54>6cn!VZxI<*m3L# z@Pb%Wi+RXN!?CzJ@%rpVzuMd!S|L7yVRX~L@%2;W2H$_5$6p{dn-0iGGVUl>vC5d> zKHNr=3+F9+zRK-o&3)O_cgGm4szv*U#uTs^=)w14uYQ0R{;pvDUYMcnc9dnz?W~Fs zcAz!Cgpf%Is>ilh{mV|Q_XB2B3|*QD$_K60dupC;8D{=dd7qW58C6hcCXqF4#q*HK zsdK*y_CTjsz)tACR_wl<4mi@4vM8LErFEV(j0gDlp z?o$sYPKzS69Xn!*Rz&kY(o<%VNkP12qzTiWzLAU_V3RC#2~d)o1&|&LCR<8j*vl; z-`ym7X&6j8b8tBXNr@6n3tTGuJm9~w?EFqg->1ttyS*gk9U$|Kc{N!=YR{B^mRpy; zhO*Ta%%`NNSt2CP^g(SlzKLK)^9!l85(@v^l5?zgin@yk9H322=@^YwmdP$_gNs!LJcTx zkpg=qH7z4H6LPk2lNktRr|>5Ggu28~=CG7t-{A zzHaW&gdMQVt;&NvanRu9_?6U+y-8`qe+F}Z>b-VrfxNtGNWh&v@^bhzTC~q*AIHkj z`eTyXj)tDY<5{%Y(%i^K0jfuee}b*6?~5THn@sa2segU15p4xIVpNq0HEdo1E#LIX z@OA{Fy;Wq~B*Hf+V5K)DJ2EQe7(C+ZqM&sQoyA2lt1s%hK6r`eN)-@QgBWV_NRU)$ z;?2zIsb6bSRDWcx5owyQ2@Lj$gt|(f^a@#9g$crADj3*V1N_rBoJR! z)e3y14T7!m1RFofluqw1pDWlmof5L7mH)br{H9jY(`Pf&L7n;jXT!I)gN!)tpWN?` z`thqtTM<2?-ujF%qg0t2F@lVuQ|Q+4j8g5q439N6STfdAD~Q$7z~RtnuXad)MAVls zWG{6YQ@&!af=PQPQa3k|9nz;F=S&(zUivxIeR9p)Zm|7ST8qF`X@k0%hW&&zHt&ZD z5%U+<$y4`;`^rkqj!?pjEp?%w@dnT^7wzSfJ#!-l_3&DKGlU-HOi11|C>hZZp=xGS zO#2b$3kXP|DQ7BN!D1w!386C)>R8m0WjqW>j2;cC@|7q+;G;U#(E|d_x#M~{Pf&n` z=Thm?Ik{&h*DkZO*e-a=5bA$vSD! z)WQ26KG#R7vWsU?TV6*pk$@CwpnyhdB^8X?Xwm!qh^U~^DkFvyCm6pNT za|vaTN1_~Wub?z0AH;~^OP=U1tXTPMwO&Y`g8)(Ui&WQ!Lk(Pw|E%YxJNMqa8lGS* zuWTuY4y&lqEQ+vQ9-KP#RjGBcDKo3*qg%Fj8pN$z7;~Nx?%A^yltIaSc5`Sp_e~9% zOoOlsb%|r?AnU_VR|?3EXXHu(kxr;4PO}d=8M-(D1@ zHx|WdR$`wZfnZDDDQB}g9GA^Kh2ZRjliQW!3dLh|&`Yl1eJUM!h1m@Vuc3F4^SM8) zP41I3y86Nd#S+`0Aae3fcIN=R6#UmqT8gs(*`Shmx{5dhpad29^jF_IA1=GgdN{}v zUev}#?Z_e^O~IqE8cMpezX$zy7HzIbvf0R*!*b|R!Szn*dPo68<4NFwf%!y54kS*k zoXfAmMcAukE%7P^f)@z6Lq{>rU%Ji?Rn?>#&(ogqkccv9PdyF##-+jZ^#E6j##__x z{Y>oJGq3$By@bGlpdFP8C0qkmQV8CH7YHQACHbTxLe%PS1y6^N3m;$EF4h;eP40w? z;wDkR5IWOD2pTm$lcqn&Svx!t;WW7-E=Z4(LKIk-x1$vb0!2X8&886|#Cr!bi1Q~x zm#RPuh6~*G$P36rv=ALLR98DSp-?C}VRHdGb(@E^gAP{4APd zrEpCUQo^N~ix?^6RzD}nPl~%q1nf_6Wt{lX1IpDEa+@FcaTmnc?{LT`7sSP~!S>(X z`u4cVLuOmIgygk1C|^w3j3Lx(-*ryGcN&)rU#^LqRRpH+?MWM)=H``A`GE!wUV!p@ z@its}b|c1QwOV@^0w?(G=|+bR4d5meWWS&(>AaL{ad$JOAzd3>rlRW74e*_)2CJI+ zd*y%tlCbm{smV$FiQPS%YPHmecDxz`W(P?Wg~AI(1e^{_l3VdUNhe@>!GXs$waAQ;5qi&6thdiGL@qfLF~HrJC@K)Eo5-!D5NtV zoTHPkzLbn;a>c+T!3&$p5@(j@>%{^W;*kscNYm-~5NTM}#b^$>py~&EE!V}S1o&dr zA}gVRaZ>*94=k;>h^h5oCVvSt88br!&P=PZu-BjEOKsbk6ZG*N#NHmbLfdW)2OpzY z&FVf-s-sSYqE)JE1J{xa#&`r`l?IY>)fUssS?n+$t==FKUd&+KNpeS}`u-rucHKgM zNmO$bF^10QdZ}$M`;SL_x;1~)%98a%PHC@a2^vIO<(&p->SRF4Sx=v8T%m6~~aL`tXlH@)-`4 zGm}6ZsiycZAS6%FR0Dw}Cyo!LPi)ssyIut~N*Br|D2{hvo0u#NKy}#PAAl?He zf6hGxNN%Ae!1Fl)6~i2RO5^>BWA23YZA!Orp8Kgb&#BUD*dTX4n?gMfKy2 zvOb?b#br(I{}896o(*Jl5lK_5po-cUC_4>~VXlQ(gT&G>eKoI0G+$R4vVvR*2r@xh zhfta@35Czu0WWrD;EhJ6%#%zNsGKYnb^~RZP6S$+nzIVPeyS^f`+wEkffqw9B3CT( zAF;&iU0-ovjg9alO_)F9?1nzN3Ft1^5C=tC3(CUldTCP*re(sPf>#1%#T)$ux|o%e zWc0>0oh&MFVY8xg6kC}v8G4keFl;H@ItJiDgiOw-8;Vik&5TWI=vRYJRex?SIN}Jx z8LBVxOd%F=YXIt%xtIjLr@^^%w?_^nEg48fYH~pXRISG(cs4Cg>bgRuNRCEm?X-Ge z6(1fITph2#wnwoBH-o6bO0fb4t6jOHn`T0WLizg5Yu9VXi}=QV!T`$X6mCAY@NXRp zt!$E?8&OQZk@%0Bb+*g+(#ZCOYQIhk??%qfz6rp!r6}->X6nrBNzdRF#z6uvslEZKPGNI?P)w|Mk0og@|bIdV{S21;Cl8(F?j6unlGpzW8 z9-vAuMM9srB+l-iRnbz_ltbl}s-15SinX_!lWV=ASf|97iK1n9#tvE79XZu^7U8&p`0;wP#y^wIBepZE2k$Oy~qMpo4^MYz=Uj59TDtB|! zK|NVMf7_1{*3H(*- zbD!m(NyD|MAME#*5Z_perY!1z{%V+}ai4gZnS+P|Rc)`@^S5=IRg)B+ksqZlJ64xE zgLC7gXBIPI4PHvE`j7{XO9*Men@4x7bDGv3a^XugRvZ8yE})BJ?%$tM)5DwgXgFC+ z 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 KO$WFzS2EVHQt~JO literal 0 HcmV?d00001 diff --git a/MikroMaster/20260602/20260602222002-Config.rsc b/MikroMaster/20260602/20260602222002-Config.rsc new file mode 100644 index 0000000..ff86bfb --- /dev/null +++ b/MikroMaster/20260602/20260602222002-Config.rsc @@ -0,0 +1,3420 @@ +# 2026-06-02 22:20:03 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1500 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=LAN +add name=Internet +add exclude=LAN name=WAN +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=Internet internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.1 +/ip cloud +set update-time=no +/ip dhcp-client +add add-default-route=special-classless check-gateway=arp \ + default-route-tables=main:1 dhcp-options=clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 verify-doh-cert=yes +/ip dns static +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked disabled=yes +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new disabled=yes in-interface="ether1 - Unet" \ + src-address-list=!VDSina +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 fragment=no in-interface="ether1 - Unet" protocol=tcp \ + src-address=!10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" test-script="" type=\ + simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260602/20260602222002-Diff-Config.rsc b/MikroMaster/history/20260602/20260602222002-Diff-Config.rsc new file mode 100644 index 0000000..119084c --- /dev/null +++ b/MikroMaster/history/20260602/20260602222002-Diff-Config.rsc @@ -0,0 +1,79 @@ +17a18,19 +> # managed by CAPsMAN +> # channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +19a22,23 +> # managed by CAPsMAN +> # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +2438a2443 +> # +2441,2442c2446,2447 +< CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN interfaces=wlan1,wlan2 \ +< lock-to-caps-man=yes +--- +> CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ +> wlan1,wlan2 lock-to-caps-man=yes +2445c2450 +< add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.1 +--- +> add address=10.8.0.2 interface=WG network=10.8.0.1 +2449,2451c2454,2455 +< add add-default-route=special-classless check-gateway=arp \ +< default-route-tables=main:1 dhcp-options=clientid,clientid_duid \ +< interface="ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +--- +> add default-route-tables=main interface="ether1 - Unet" name=client1 \ +> use-peer-ntp=no +3124a3129,3151 +> add action=add-src-to-address-list address-list="Honeypot Hacker" \ +> address-list-timeout=12h chain=input comment="block honeypot DNS" \ +> connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ +> src-address-list=!Trusted-DNS +> add action=add-src-to-address-list address-list="Honeypot Hacker" \ +> address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ +> in-interface="ether1 - Unet" protocol=tcp src-address-list=!Trusted-DNS +> add action=add-src-to-address-list address-list="Honeypot Hacker" \ +> address-list-timeout=4w2d chain=input comment=\ +> "block honeypot ssh rdp winbox" connection-state=new dst-port=\ +> 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ +> !TRUSTED +> add action=add-src-to-address-list address-list="Honeypot Hacker" \ +> address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ +> connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ +> udp src-address-list=!TRUSTED +> add action=add-src-to-address-list address-list="Honeypot Hacker" \ +> address-list-timeout=5d chain=input comment="block honeypot NTP" \ +> connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ +> udp src-address-list=!Trusted-NTP +> add action=accept chain=input comment=\ +> "accept NTP clients on local area network" dst-port=123 protocol=udp \ +> src-address=10.30.30.0/24 +3135a3163,3164 +> add action=accept chain=input disabled=yes dst-port=443 in-interface=\ +> "ether1 - Unet" protocol=tcp +3136a3166,3175 +> add action=accept chain=input comment=\ +> "defconf: accept established,related,untracked" connection-state=\ +> established,related,untracked disabled=yes +> add action=drop chain=input comment="defconf: drop invalid" connection-state=\ +> invalid disabled=yes +> add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ +> protocol=icmp +> add action=accept chain=input comment=\ +> "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ +> dst-address=127.0.0.1 +3150a3190,3192 +> add action=accept chain=input connection-state=established disabled=yes +> add action=accept chain=input connection-state=related disabled=yes +> add action=drop chain=input disabled=yes in-interface-list=!LAN +3157,3160d3198 +< add action=accept chain=input protocol=icmp +< add action=accept chain=input connection-state=established +< add action=accept chain=input connection-state=related +< add action=drop chain=input in-interface-list=!LAN +3316c3354 +< add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ +--- +> add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ +3318,3319d3355 +< add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ +< routing-table=main scope=30 target-scope=10 -- 2.52.0