From c1132883c9ed7819c4e0648773d0e6b31da143d0 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 02:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 02:00:18. --- .../20260512/20260512020002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512020002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512020002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512020002-Binary.backup create mode 100644 MikroMaster/20260512/20260512020002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512020002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512020002-Binary.backup b/MikroMaster/20260512/20260512020002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f9b8a861c79781f1d99e0b6c8611d6596f5628e5 GIT binary patch literal 302647 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
0Ow~iv2PrSEvtS{W!&7MurEy7(XIF@p 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%0DMDRw!xj=Ml$> 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

7mhF*qpHOMYzZ8ewnd727a0kS;Gbg<#n*6>o&@ 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

$ofG;%O> z=k3W92jr~(bvfi?4I=4jNOGhuPr{|r}2u0pAIJH22pe5t~=Xs zfcEf8ABb14Z`DYo)=!=tSV^VLuO%=?|E zdv@#Tg9fN-GQM`OR~~TY@9tv$HclD6a9nnoK)$yf7bD%zm!XtPlYc%pN(+=IZ%#_d zc8NfhD#m=moz{7@rvN}r*UiDXcFak+KV;6^S?z6%hQKqP7$=60`xch*RIH=j zdU3%C#hbI5ru_ZBAzo+#kcoRcv>^Jk4OmhHp1__O$i~gdJ8KvBOt81xRZ&ePq_V)p z{MHZd2!7vV*F5l7Ag1Ktf0Y~~P2NKV9wwVLpK<&8(EJC6YlnyL1)F@ng zV3@X>KrtBzBU5A6FpdfcPPhYz}FZn+?KTTj<3!<8r<3uHN7!YBn zC*a8>{L47nOO6grpM{J$d8o*w2jeo?O!D$GBDpECwul|1y~cvE9fBjxON8z zWJ4@WWj$Gl;fy9T!yF7u!CUL}fgE zfowUl02Z)xsq5K`Lh3_ zJedzsB>{-VYd+vz7yo;{_)gZ;j~_!JD=hm;S|m;_98E|=p}zm1WpAR1Z%ojRlG$az z_LXlM9iJf?wvlb*{oOTaKy78;kj`sT7_xvb(Rk8lIUjlU9WKI9sv-f*nmhKwB^ptz zws-I&Blkks?0%SUC}1$KyVy@Eyekq7y+B8-E~l6Pt@;hBn63!2E-iL7vW&2I`$vy4 z#}i#7oUf%VGqZ_N66F2z$g~?oIJ%qd?RF`^2AW!94DE|+iMi-95z|~Zm^nzG z<)r~)bXs6ijVAWZj==rFr?oMDZ2e|$+pgkCo(atTfmk;n&Zf$J33MF-fxmoNcp$>J z?L4ML`N1n9>Q;m_s9r<;S{vJ))fKvqsV|>5P^}Q}O?bNg?D{q5l}OA_W|L`tkKnSN zqvP9LGAiZ3E;;5o6EYQHh2GW_6p`&x4kzIOs3@UkMv}U{%8$$WL&tsOdstK>+ofGJ z$R!Mx!0{8?2q{i0Q{~bia-AbTw;vCBO%c}E4{-Dg@w>FTVIJj%CWFahzu)L&97-r* z4S~39k7re%l*?{hKAN-etRzY(w|=NJgB14=YQ|q_-culW_6(UTor_WRN+>zxt7xqP28+*i^P^ zm)hZ7-~ruuol)EXC!PWmTGY8H1Oc_WRmioCg$;ROEE?-@JRw|%HK3>78KYq7^)49C z&FU(h$t39#@XCBl6@q*}ulF_MN^BX2fA51vH#OU&(j&MIt)d)7*ffD{x z0c>qbF$>Yo{R}U8s=&Uk7Mha#7+>8sK{6;C;daf0VuIrZ$qI| zDC#a3-5ho+aH|@c_H4Cs!*D7>9jf=To|z|ikSSvD=CMlzKAdUTnL1MOJPRHV>(RyI z#;p!h?H>aZ5CpGalv6SgcOPQE$J75u@pt;WBAZjFYxA1IpGvPW_dR?VV{@dV;?PCf zB2>!I(Jj%RS?FWsf2l`Cw}qWPD|fQpZ07CNcW-}}23CsROh1@Xet3mkC`+a0?)?hba1*R_gl->~?5_I$w+k?mP9a_N~*UWhu3m|8TwlP=&D=;&c?4LMF zi)Wo^t~(z|w^t`e-dHu#Y||+_?pC<@;s6@7nC|w|zZNuUjE6M#p!Kjpp`oWJ30w%F z+SU9ls-%S)r)BG?#&1-G;92Qe7>Quaf33Sxj$YuByg35>hz5^@5T!S6K{Ryoc#?~@ zrV}k?L{(@-tD?(=LVCvLNVZXNE7iDz*l8?^&pSCTMM zvd|o{kgBUfNIm@&P>C2R)rImp`v3YN03Zj#MWX%aX9s6#spzabvShqY*j>Rt6VQp_ zp>Aw%+U?j80ybI==`DpPX~;_&dZ5`!-UMsSQ7w=_=n8(<;Y#x!_7!zd_}OD@IORZ`U5_4?nV9F961bK*nnb zgPu=u?ZAM)V^|wzF@A*fl|+e&UGBAT?U|_JAvAYkQJLZ8y;{GEB_kfmdMQ(wYSrO1v zafUvWH;B>Iong9<@zPTmSk9*ml}+3X4xlG!$RtTfC$>3Qktn~$i3n$K3LG;mr7bd< zQ@z{JdtKtmJ%%>m0WY@d$G!|4arzR%j{;onvp7*L?0!EMtP1I1N52@(XW-Vy{Mr9~ zTLf7hM6l-}>2Dm@>57pj#c1d@t#`ODoF)mZ;-#8440ryJyVzqR0QPzspvM9Fj~ zw*DlnE5jaub+_e}1Z8GskfHCcnSpumw-xaAcZq7OC=~(jt z`sxL5mJ+RD{5MgWvtn(An+cMC!OxXuUY6#}tf-x@F+(?82U)Yhf)3Tv$(<)7y@_Ia zXOu+dlzeaxq$4XoKULCj11 zcxtzOC$UQDU_j-zJQsR8O*FLA&{q;B1iD!aBLE*R+OjZQHKS|p4?o zlmU>7NOz`93^Tw7kLU3YVxSP%L%Djmd-*uP*JzZMRSf)5~EhFxJ-NDK~d8JR#k+!i}ECYvAq;1xROaD|xpv z(M|6h!po3@`Spf9QWnR%{^^D?Z`K_^_9%hlST_Nsa9TGshGj)`*2DQV-d; zN^>=y%8dJd_%0zV0TG{WGwL<#g2E5V^ag^U03drDfV zgEM@Zr~K2(*YU`KO3Uhtn7?pTA-fui0ueRdl|2xfIu zGK!g^>xZqG`P+Pvy?O<4RNb*cl3AS2XnB1l@$cCKY&}k?C}ND^F|b_tzdCbJ6GDVx z=M4Cr(ump>dU&Ds0dCW)tN!)X#R5uwgSB%xBXffRs^W<>a6+G{7W z7PE2iM4+HKCPiExRvh8dpHEtjWQA1331PdU@jBxwe`2(s(2+2*T0AJ?-jg>*7}d)g zvSL!%&WadP>zuWVRz70d-TYM1Xy&mP_iuHSX~o!$!Vx!lbOv4Cax0ke2D+y!WQiO21@gaZCzYMv{T9?8)?FUS1lZ5-ZYKv9|ZjY!r5 z12Nr!#sf+?5MC%XD(sjoHul%8U#T+>uO9$jJPz{^LiPbdT+dQel;{VHrlwc_P1R;& zbE2@vt|aiFn^)u=@M~g58r|-dm`zztUj7|h5^gvRD6i?-5T12!YXq-g*1e$k=O^m; zH98%8|4kV&$~C98Fw{a(xcDgPhgm4oP2+z2>SpI;Z3=szaXLchcR3hLbp#RC-pBveyy95Vhc-v!ItZ`Zk4z%%d$!d-q3 zm)ci^S+duND`jGxZjs=aV)Y%@>c4H%ecQLYB%tRRgL=&R{;g!|y07=4sc@olz?V*t zn2fug!`xFF*752FTa2P-E43y522K%cOC!80 zFs3%!=V9g~ooo_=Hbf=OV$0LoBYxnmr-XW=wC%Ik_BI7mlm-XmRTorg27e0kLk;xG z7kQ1*@?G1>A*Pyp;o*r=k%x#mQP!B?jz)pf!txb>FmCt8H$T!2Ub2wKTS5#JytTKX zF3ID2oen>#n+udpD959=GDP($2V03Jw#0UG9L0(`s-MF!|>NgmMs}$k6w3 zQvM6^`14U(iQZTaPZxh?-sFw81p@896yZNP%Q@D{cpAWo9ce4j)nt-`ry6J+h+Nti z^+_ImA#aPYSWR-`zsy1L$f|wF0Zb06MA2bO1Tw6^+)y(OIj{kE*PDdG_loegV$)9_ z^$%opHYFyzE<<%;Je<$UaMz%R(@4gvEFOV2LCFN|9yDSKmP@LsR8j$-;)J(0=a6~VnRqdZdyG?lIVE5zpMY2&nj1ifwik5AVRh+s$ zTx7#+^CW2>N(t~gjSrbWl?~klaIZK?+NbF`j5tYV7x3kAreuqTqzi-3uVtNC2g;<(klF5eIA`!xt)OgS=zZA^8ebfc@9vP z^NP5dSu=q_3mkqZq{VI9@M8UNiS-`|0?Gcj;sh*Vem7uFwBOI5NZ>)J`DU1i`0~BY zvyU7WG?_uNH*n;{%)noqe#@1_EA12U{D8Lf{BDtvkEwt|gS$8j`Ql1q7UE7>eLAwP z>&}dx(zz85-Ch^<-S`avew|Rj4WfP3HvQd_a^0B3^hb+=ERy7mypOWOzseqKsPnnF znkW0y;Ix3Y#|t$x@5^OBvR&qnwEM`{y5}8i>R}1`s+qm<@*vjiL!L~rn<@~k1hK9G zs0Z2^YtYsgF*fC!hYk|0Q+ktVowY)*VefkTF)Iok!vOynx*bj$&IeDPE-i@|8eF(> zpWCm#>f@5C-Wt*^zm7gZ-FL<@5SrG(c`I1?Qp`jU!Zhmj&A!AwCqRo7j@#nAvD1Nc zZr(9XB1G0dlL(;8{o{(=YUi??(TF z=G}et2_g7z0_1p{!9ad->9@!J}DRuIH6Vtrd~4yw!c#06gZ?9ziTB+E0t27YA&5 zGA%5mz?3b}LgoNed6kQ9in%k(==L}J6PVX5n;JmFYnkbARKBUv@6ktj;x1HZ!{Kvx zoB0H_s|w)aVxoU@r0R{+9^4vc0@-J{^*q8Yk8?>*5S`F#vusv;ytqY==f&*Jj~)}i zq=68RE!MOdVi{f%>x7ey)D-g6ta)z|h0HK#Lq4pPD1+YXTkZf%V?BAp~sv{e@5EBDlHQoQ+r#hPf)xHwZ?TUFh}!8^s9Uj%EU(@zt4Xi|9fK z$E0#Ee+tY7EsgNkb#(m_1Kn>_H=PW*w4hOA^nK<^lCl)AvE323NYe6ACQ+?EZYa>~ zX&1sONi?Be{Q_FE<8j$9nF2C}=V_M`ticH-xPszw2%K_T&3!7W-#|jqp2JK)Hk-bB1!mWGBKxKnlu4Tj}RS8RG2A-|22B| zY(7YOf7#4dD_8s?{e#?(vQk2FYxxHclnDZrD3~pk$YTyl&$jd57~iG(HsSCf;hj+U z(zeM*Z(R4?AzrgW&b!t~#}xn7{hKCK#m2T(id{%rn6hiv=0 z@*_(J6RKD(_Bcgtu7EnvrJ1lrlN>mB|NO#vn!1Vh1X2k070IkO zMq`R?%lR?4\"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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 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=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.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/20260512/20260512020002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512020002-Diff-Config.rsc new file mode 100644 index 0000000..5298781 --- /dev/null +++ b/MikroMaster/history/20260512/20260512020002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4298a4298 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0