From cdb8ae1ec7df8ebd2c0b7050d8c3048918913488 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 02:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 02:40:18. --- .../20260511/20260511024002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511024002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511024002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511024002-Binary.backup create mode 100644 MikroMaster/20260511/20260511024002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511024002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511024002-Binary.backup b/MikroMaster/20260511/20260511024002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8769258fa80ef28104f32c344c6432042a63bba8 GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*3IrAjpq)RBlws+VjZ&K&v%q)3ZcQ*4p6!2W&)B!=l zVg`Z{#9cBn|M2**vmVDHV#Tt%|b$;UOaqTDMaS# zsqH4u!{Tyb*+gcCc}d(@vE(!s(xUUZ1|N;nawolmny-j69#V26)N8g&cDkZ*jrFiV z7B;HbAtGtSg{-gG6I0ZsK>Hx}U;^|xYWZe%?gk!#LJ>OstjYX1`Z2qWi|xmW z%n$NQE&X%_Ot+^OlGBHIM$&0gbrYXjsy5+0fYlcOYJ2efi4f1h0LI#yfea~jS5_#F z(2<5}3Y=dj;gKN(!!bH62Tma#K_=x$Jvp(YIo)%2yA?q3S9^-JTCeya0xAa6I#yQdQ#Gsd(Rz0 z14unbVIE7HE{A!89(pH!6lI%MNI_@084Vq4z4p=JaSrZ}mF;%cOfvPT9fe7P`!DOQ zLg?@Ydbn@z2)5Z|(|9Bh>qv1|6?liOiXOcW=(QF-p;L!}b?V3(x4iF1#82codjzj+ z$idkrFy!_syHmQZ7NQf)1B2pdLWKh=#nJ%ZVOhO?l>8L@U?QJjB*A7Ehi_cVZjb+4 zBlD>7WzezO*O+11CRif1Lcl;LA`X%1tzfP{diBW*r~QUhvP%8#y&=D9^K3B*Q#Pf$ z;rnHkC1!E3qQi~&xI7FlBrxddL&dW_&f1fXSs^&MJtlCU-MV2I;z=95#$oheKvn=Y z!djxM_;1(D^b_SG_UjnUH2xDk~_bO9v#c^B;3iN=L&M%RB zX-#C+k}08)|Me?-!H_SJk&0}X$+t+C=HRtS!b~Duqm&fN`ZK1WMGu1IFy1(_GKzK& zZ3?Gjpyy>I{VUmGiKrNLFLa=#00ty~)VV1e4CMb^c!{$Mq*h)~!k`09zB_@K6d#v$ za1n?~PUCC|)|u?&f!{ z-ZEf-t)TxUuYwD0gFqO}YLGZN#52!dicDDo42|1Tjzm7HU0Xd04|LWYa?vkX4a#&N zPQ~|JE>s-ltr;ct4!~pF0T!Ob1fhzS@zxVcFfe3`xwd;Sd`!64`l!ciL!J*d#7nPH+i=g>IQ>F)e(fv+lZR6`M#zIuwhHHt}qRFxu{L) zU#-KcucZ7_Oafxl8umT{tYJ=mSw;aS#sxVm=_1+LG9dFhc?f3%n7x4=_RVmzJJKI1 zhi)N_9jJ}t#Fy~V%^^j+BNM!=gkQUDepK6XfwVDgiQp5^{uFGI61u5ccqV!F62PSA zC-XQcva==pc)+Q0cx6F$zeAT(^jyI!spQ$rsKUe3-`kR*Y3HrgObkAYZBE!8Ga?D+ zv~r;i`-Q+;GnAhm+j`4nTU#YU1}@d7D@AC38fh3fL6%@VHh|l5TtKd}*3!G`L8+p! z%xIDxT)3^ybW~MJo6*?mg9<5Ol*U-gNUnn-TVhke%RPeDTp-C11hFLYa5^MFwtt8% zUB0EtdOB3iM{mvylzgbg+uYN440DcRdRf61T3aDuaI4?UZXEd7K&k12;vF%bELl4` zmXf~)ooVi!vrHQ)%KavcA`ZPfuo#n|Gt|F~wl^xV73_`IGhBt5PWH?}<6k=yC5e)2 z1@Na-eo}GH+#l9CmgzME`@1(KDkDL0YT6-r`_X5M;eLQR-VVr+13xlrbmf~ra)STv zrZ>8qY!hZu6_P}#^E7KXdBN#Jy5vaf}r5(DbR?xMVe{y_be zwM|^MuurI<`hHu~_>8WJf(=M7yoL>9IO{Fu6aPo(alTB=aN$+DDPd;oIZ{gsEKH|u5Isj~WSx&caONjjFJ_dk^f5Q_s5?NvjWYxMB3 z%na@*reN^>aUeVQoTX#dnV_C}UBs9TW{reBL#mFqSGWyXAut-95eM(s8b-JxD0peD1)iGb$jnR0A2L1X#Q#q;!01m^F zA`(KA5js|OUpG$|$$eH!V=4n_{s#`?IW1S!7f_Mqzv{oj1xexXl!c%m$GbS-{eToX zAbf5XGoES!?(~dylLZl6lwC1KO)z*_wql6JMjhNctwy}@4|v_KHyv=zwH|R&`(s6J z<#ioj$j2V~LLQN)`WH#c8EGvytuOwiaApVbmkq3>e@{ewR^C}e?B1pP$M@0&qblK$ zfd`*XlpjMsrKEZDmOXkgZ!@h9Y~pIfA&OSfMHa;f`*Cr)ys@GFKwURtdY_#i$A}05 zE0W}Ntwt(&8ovWHWXK=0U}F}J(AJ#+Gx)x#FP#dt{{y~xl#CBo(!iXTHLsLxm{PF> zN!YIO1@Ex%V6oK3nPFpVjw$QaoH6X;RlnM5(~LL3#JQW~BlDf^BP@;xm#lc4!0*BV zBrbr(S-P!Z@)`x?nSmYdZQ%NjZRylb$>+{6X4{cPQmM*NtXMq=W-|}*>a_|LUpr9seDUl^l(Nd92gtWxwRK78L3X5a)=zXkCn3&-pdj~W~J(HHzqD} z%;>;fW}<^+mb@Pb?%3*}6oB%PQ3A88MGk_&dZOn3WLdQ{=-v}lD7fT_%y+D!l*(5m zS7IZiW_P8AG3&g~SJMTfUi9v-ggh|+4YVGrD+ohwX9q@!v*y>zGN5*E=|Zdy?#WU9 zo`!-qYKWt6PT2oGrmY3fekK7KpzM#jJr@X?X{Ii-TH}m2Q1Y+8Y;8o(xyRESgB;YK zpE32u0&}D|g-Dw1(0+mbE8-0I2rODtcxcU-Wc62x&$Dbv$89A${uszE3 zcsE`6SJ9#4^-F$PMGN;=OEDX~$f)_CDGR+Eq|cmq;z{7F12Sr_ZDbYupab@#14Vb{ z>I2cqMAZQyAa-t~%+;OxWSHS^)E<{gLWGyk9Ikug5etdmdj<$6SQ6tT7+$R0;=vw= zw0so~l!hIZlg=V4Rh&9YqoQ0rBIa8ABolaEP5_#-ez&aB%P zvck<|O6}qKOdhqrjYyNZ!Us+Ax1-GbHv}{14;Vnhz)Ej&z6CXQm1GWcrJq3eE2NAK z1Q7UN0)t8^Vi5yS%z2@1L7$)BmMHQ#P>wp#H!A3mb$7(=+fGV$6jgbF0>L-$e~WjE zVki6QoWs8vuqUC`umWevwT8Sr8Ahi7`vxfI`Po%;{~)t!SSN%ayC6D)mU31DSX6cG zHCv2keBA|3rOE6|Vu{7tJJq1+kb^FJ;JjPySaskp07CtjO$$Ai9Y<1$QxvT%9VULt z6w3W#oL%dMUNBP4N8hnifu?f_=g&5Jq2;|7#z*+DXP;7u<^VWIg~ED>Oj-{jr}7tB zU^}uB!J%>WMK$sT(ry1@?Ja%`(ryba+Z)~h8L`Hz;xvm!GFvj_X9+~BY6z~ z`XWBojn=ABwSF49V*lNUL%%ef41OoA*U+p|4m3>hfC|5C)1_SpPCKMUA^Q zS=1YJWsbi9ZcV&K9rq8aCca!)Zt0cSGVBU;V|V}1Sh=8gX&08rS=U&yc;=_9LIYUh zD?3DDE4@D1BuZb~+~k*Jhyb_!{dUog%E9M~!yrlvv*!UkmObQ0=Hsmnac!;dXhUbb z#h)n7&|tU+Z5UYmKiH1m;FBN59cX+7GMyORw-NQC8zNlTl;4a;U0QJCxHkPeC~oud zE&IbzO=4QcpkgF2?{DNz>Bqfid5W!+?x;uWoAljGK8E050L?cousEqPAoxrQOU!mm zqRDa+gwc%%E~SIX_n%>2P_Ha3JaivNJmS1%<7{wCyPCkdl^IqDC8QgQ&t~4zNvUfv zqXJCzNb;pHf7q^+Lf|yN^q)4_Im1Y$$w`8RcQP09vPk)Mln8OCl%@rUD?pscS_?5h z(WKoDYVgBaf?kuPL}zrZ|D+-IMxV9fG{+J$tNX0z%$!^>-rB1m!y@vv@kj>L#jk>` z!suWf`VMqU&25P`zSbQ|D;&QST7aBLrW2~!PI%|a>CQMo&{2tpJ9kUOe>&@ zCrGLfk|_Gg#Yo(V<*}N7nsh!k7N)u3^B8{PLXV&FUhntA|4=Qt9YOr6aiyH{4&9zQ z-wD8%+|?Zoijua39s>XTj6PXiYKdTWNbVcY0N|u8jA{`$Ub@(5a+R~scs<1=_qRB( ziTihOT!z7>cumO$nl3$+CSb#RV2ej>puljDD=0qFbY z7JBr=ngM_9;B_+Cr&qnkp2)SsS?_f_EIqaUK&mh(KAUV!$0i$SnoU9g`e7%6X8V6$ z&xY1LIZd~kKVQ8U2W0)e|EN%$eRbn0raQ^DM`V$?TBzS;fjLXOh!#jecZwv525)B* z8d`ERe-6K6PKAV9`PHUZD&^gU88PSN#87?Xe5g)F9t4%444}mz?iBvYdrAxcz}o6C zt-25+soBlN8?fHgtGSpQZOf4Et??tAq663&pI9K&wXcKI`Y>G0Xkw(b(c}J@LVO~8 zyi=rCOjgiYIwmB^5LCod>=1yv>C@qD{2DeUUWGg$hWJnanWvWM^N-g&Hy%a2^XY&D za`c^9lll+5U4||Jtomfve9ZeOBc=&k#~iGCuQKZTf$I|Cxj5WsiR4x~#S%Dz zk)6n^2tft~(Vm9e)~L4Hf=q{G9DriN#Xd4k-S{?WyE5Qq)^!p7FxvMu!zcEHZ3H-8 zP{xaNo~G;>TAge~!H(_oEQnx5Q#e>7Y>i00QOh=g7F34Re;s!F`DWbK;`K){$4{cj zvE%~_%n*e^$u78Gie=?I?M>~NcH!_Dpf&uf)SNBEvH2w!)qg$%)GJRL(-%(B^-TOHi16$$tqyvM7z%SM9Iv!TRO1nFS`3mlf!gq7CbHed zse;Bei(IqC73`iI6z5}scb`}oz&{jTq@zGAnauR1G&CmC6BF$bmH=Z+Tt23XQa#NUMe)F&?q%YBD5ApK> zqx{!m@1W;eqZ|qkjtE z*F6&f#RqqHKWco{6?;nngJhMfUfrSjytmTJkFVGSp30e_$B!Tp`Mzq(T&#*Ea{Qsn z2ed+>#luROyKnf@Jl^$FTYl-wa!04S8)EGsW#CN+06br8gV-N8g?EIOoUo+$SRz7& z!KDNw$sh=Cub?PISXiIY$~jb2JFP8k6gd#-7{}B-Y9_?(AOynmIAZpNJGr@sf%Od` z$-_h~DGhglUbc#BYYv-6@McTwAq7XaR3OW=`~f{XHoLr3Ro!Fxd^b7?`v8e?$S0)J zZJNb;j$>~I{M^=f7jlv>ET~wVTCY_n_l@%Z46pMN)dz@j#ryw7X7PFBe=(Y*>}1_w zlLK`=6(g=;O(>GHu0Fp)EYgu@{%37JfK)JhHP%V_1G+iIe5c5}GX5TLML`$z=W?J| z!EJIC^jZ6E`zn0(1oMh=c!S}&^B*0AmI)3wIBE}9H4I8==>S<{f$k2{q9{FK#`VTn zLB51`{{11uH(xh5QSk8^4jel!m?mw$5u0)^r>{xU6UZ4JC!cY+9h}{vG=In1?dESijJ6=&iLfa~tE`OnAlr9IQ32V$E)%?(v z5GYw+ueFix%TjS`g*x3#;D6|6Kdn%nzUUvL((`jaDypJSKQkVCZrA^pXR18Q9+)7_ zyn$!m{{@i=svf#%AnNcvw?hqVQm$KcbAC!j^`W(Ct@Tn}z)m`hHpX zSsO*_mXqI!3!Qd9A!(X|MU9hmV@L0^X1hL@=Rft(!9PPxORQeF{z-EC>F z_;5or-=Qxh>16!(yXA^>1B&K$?G4shLLyn{dslHfH_CebDfJ!|sqgcw+L(#THGN~E zDuDXiI?3ee)B{19H@z98_|q>?b_qqHC!xdF09szd3AI>fAw+gL&g0bdAf&&XA*|g% z_PfeCtV%y3gBH8QIO9M!>9Dg)|KtAf=@8nfl9##&Q{S|L>YUJ^iLHAbr7*$s!&4uW z-L$#W@E=>?#|o4fwWYX&70e<2Wr@eZy45eI*m96ocFvChyubzDYI5 z!Zt=3Z|)BMI!)PUl#U6BJ#+e@A8VzBoFoGGDABOpU}-;|+$Fs);z zPMkh-?Vq5qws<{S@=n%^qnJPA4ino_P~9>z{CdX7Gd}}Vs9-#{GM?R?&m)z*EShIEPA#>aS!%?+_PhCu3)M~e*Snca8fX`ZyJplxikE>&moXanF!bZz zR9T=`=F)FGhR4k*eXCT~G!Tv`c0K)%tT19_&%<>OUpAtlroHSpe%DPpdOF#|HZ$`g zQdy=7dRr*f%KIuTid+AvDnl@K%_1-1_e+2i@pyPAkMYC?LEM_fpB2Z*Cd{%&$6B;(?LlPR z&t4cX#9z}(6*ZR>k1bHBsyB~Xd(!B-+waj;T!8tATb-H>ZlbZ*D}{|BaSm(M;yjem zItfh$$0eFVt4J|=3BjR-00a$=j03jVSpnl;%3g^@cAXT(p0~wwg>s?U_|2*piVI6M zsWd6b-eAQzo76<{5cPbac$HBwB70rA(RDSb31_XVGL&-tfPOk!dD*{#dxduo?|Q;0 zyca47+hI(QenGEz#SlCy|a3Xm@e*d!KI3cS^9kj5{IxSW9{T@#u40H zk~9G`tHgU3gvKH^QSanP{G{Vh zEWoGs1b)ckEJc)cc=|2ut93YGp3O)FR-W?=99OX6i>t*JEg^X_WpyGIjejsoW`BZf z0gc(GH*#hg075_BCYca%^6qq(TE%UXONvPZW0!F>qo4Ul-YWLw6#|JI)iHEqdz2f+ z7Mp^|6Or*ctH9Zu_a6EoWW#>UJH9^{ljuNp79#H$RZkS>CRVYxSY)HtlBY59k>xX? zkJY8xI^&`dRCx71oPz~RB$G3L6#UCK11dok+JtD|%2@p=9@X{^)^+BH>nnsTMe0|u zuljp>kzYEAGjieNIJFs{M+JT6hh~YcFMl07JxS1K%t+{%2(EC@M9W6?28kl%vef*5 z!#cdm*3N1kpxw~&{%dF&1bCYR9;Fq5mVu1a)dm|80q~D?&m7rD$@7Ex7IP=S;s
90 zIW|w;%OwWyRZl58J)m4N=A_mV+7?tOJW*TZ=EjhTAAAwf>JEOkg?9HCYnSO5vLXfY|bdqv7u6M2vFPtjBaN@f84{%FEeQTK6AjRVtb*%Vu1K z{of>8vC!DpbEp)Gu|aVJeF6Sd&{yd3v-G@#S554)&q(dfG%J{-KsK>!3M=Fw@sFi; z8fZ*)d<;fVO(9RIg}qx>LCH9@cOj2=f+J1+HI;>NuFie8u>-Z?@+ z+*hG0C8eX{E1ns4ruS?3j79f1{bl~i-q}np;MJ>ni|9-ZQMRzH_q6*`qOaCY48?uc z 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

1)!1G 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$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=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$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 \"kasparov.ru\"\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 \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\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 :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - 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=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\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 :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 /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\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:20: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 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/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 max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + 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=ether2 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/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/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 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 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" 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.33 name=oxidized.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=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.100-255 list=KIDS +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 +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +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 +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +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!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +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!!!" disabled=yes 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=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +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=!10.30.30.0/24 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-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + 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-list=WAN 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-list=WAN 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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +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=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +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="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +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 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +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 +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 +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" 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" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +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=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/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 hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/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=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN 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 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 interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no 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 note +set show-at-login=no +/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 channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +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" 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 comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" 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="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511024002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511024002-Diff-Config.rsc new file mode 100644 index 0000000..d84e0b0 --- /dev/null +++ b/MikroMaster/history/20260511/20260511024002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4311c4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0