From 616812f7f8e6659f0d3c1b5dfd8cfee8021bfb15 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 02:01:14 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 02:01:14. --- .../20260505/20260505020003-Binary.backup | Bin 0 -> 269589 bytes .../20260505/20260505020003-Config.rsc | 4501 +++++++++++++++++ .../20260505/20260505020003-Diff-Config.rsc | 28 + 3 files changed, 4529 insertions(+) create mode 100644 MikroMaster/20260505/20260505020003-Binary.backup create mode 100644 MikroMaster/20260505/20260505020003-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505020003-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505020003-Binary.backup b/MikroMaster/20260505/20260505020003-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..277ff5e5c74835d7d25150651e6a5466aef3dc01 GIT binary patch literal 269589 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 G|AS$v+Q}{}@9i4!+SUB4%L^2dS7ePL+ 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%0A|IbX#6&5~X8{OlmW@^aW5{K>1=ctA2U zzgZC6=wr4(%y0Lku{oM~Kh3 zF1Ton$!NKJ=51kG`vSl=q~yy8ds>02QGxna%KfX_p~8iO7t)?}33COC;(#`3CA zuC#5I=4t(3rR|m@@2gnNOp#aNyD=V0b>P$U%tU7LmLoB{=Frj9SUAsD&581w9a59*-@(;x`1! zX-8%UN9M4?<_K`0J_OB(tn`rCt%0$fPuN-QD1yP=q81l`yq#n%1ABzh)qDLodod(O z=!To|$bp8w)G<4V6(_u@N~v2b+^*r84XV6g5Q6Ca|qs7V>Zb)dc*l*~EmCLG5~tS35mu66<> zEa5z(n&Mm6>bJE6#i^_iSpfl`CvJCkT!8S#ynOd8R3PP@3%+g>EfXD;m{XLsJs(H| z6lFIkj_A?W;Llk7o0*B|s}nsomHg%gIe{;ZyAB_=KPI41?3RDO;v|VlDQHe8CKe4d zPMCLvy9Ta>8-*80(8INjK_9xv2=yMP!Rl%a#Vd@nBSQ%WIek7iJJ24$O!*KO=YR@Y zTLZyQ#u}FPRv7#`n`XvAa;Bc7S#nW0A0IpitOGT8k=u4@ZAHx(|A#_F6BxNx`$GH( z`_6Wh<%J+F$qOlFv#fg^SYob37c&fQzV5-8Jk!s@5pG_UQG@7yY!=T(p`D-nMfF2) zU>UJm!gR6Sws6_7G-@Or-E%H^r{3IKR(1H3L$3yFs7gakiQ1E&f^K`_2MJ0`Tcous zZDH(qTv@*Fk!%>@DOIDfS=Uc?SP1}d(JZj0a1ed$;9v(?|6K63QL6KzTMP~6;}d>X ze}g0}r}7)jrx3AO1EQQ(D-o+{B@vUG5ajItlj7&jm~$99Da)Wob)gK2ngwJDSOaib zq1fBG;+L(F1pYIkz9h^Q-knWNH|g7SKcfpx#XL13Z7F9yl(SOb}Y>i}F%nols7r=Ei*)x5o3 zi-wfXA9+1c71Y)aq*&D}K4}FzsyucWuRx>I1vl}qn%0E04CCK1=; zj)1Ka;Ec?ReY960q1{m?o+*T%vP|`k4&mPmGS}R8OqD-3%bL#Wcr!vvt2@~(%c@ZwB3PSZ3i?@d-b{=LucwZrWnqTvi*U0b}4sI@J&T}14R%M@PY-u z4>u5tg7;k{xG8*E>?WnFX_O9f2$rhLyL_9|(4Q4upwfhP%Pgv6ou7zRTOX6@r3U_p z!Jm`Yu+m+>m^|ISWKnxxa^)IR=6uk)u&h}z9QOgo4q-0RjHHVjko)V$VQO?bqAx%Y zD`80SD_dsA@nPy)?0UBo-B-IdztK16*F@QH<<$cmJ<*2PsQxo(+8^FUun(oiQ&CX6 zVTL}<%j?tq&ETdMUqnOiK-}o#Y4aAz9avus^xHaTUd&^4@K2nifb#B4JnrRwDozmH)X-rmX3>_&j{ z)4s__&c&np!F-Y94;-v;YA~i&xra}`zR4-L!xn|rfx1fJo0TfD^}u=9p!ad4rE7S} zt%ADA$rA!gHzr9$qMsGL;Z2sJ>e>w49J2NrswY4tQPJ(8vya?pqX?*y+?H`1!u8~u zn=5v?ng|#uaqdzEQ>8LioQm@x`2sM~gHvTZoIMo8AW6^w>4qd=C%+Wo$r~UW!Tz>S zSc!o8tuMH7jru3ka9U#&Fv>cYtF$I>-f-3Y$2fZCO`Pl*bAtBci2Qpq?*I#11m?gW zl#a;AHtOlxp*zKM5*XO1aOW*jZ)h*X)+>2OsQ7<`nk#Q2v9cgs3bBjCY1+XyB7+&P~Fhjn?ra# zDfCqU5F}^(tL-(CRkBnu7uLeR-z~29>m{55Nj

PRifLZXfulG#G3ga_j@QoDYCX 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 HJ+jS6m0obG literal 0 HcmV?d00001 diff --git a/MikroMaster/20260505/20260505020003-Config.rsc b/MikroMaster/20260505/20260505020003-Config.rsc new file mode 100644 index 0000000..66f789f --- /dev/null +++ b/MikroMaster/20260505/20260505020003-Config.rsc @@ -0,0 +1,4501 @@ +# 2026-05-05 02:00:05 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\ + \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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\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 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 :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 } else={\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 (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\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\" } 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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/614/a7992fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 01:00: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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\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-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" 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# :log error (\$RunName . \" 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=3\ + 2768 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## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\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 :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\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 debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :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" +/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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=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,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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 enabled=yes 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 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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=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.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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=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 +/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 list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/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=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="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=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 log=yes +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +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 graphs-plain=no rest-plain=no webfig-plain=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 +/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 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 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/20260505/20260505020003-Diff-Config.rsc b/MikroMaster/history/20260505/20260505020003-Diff-Config.rsc new file mode 100644 index 0000000..631972b --- /dev/null +++ b/MikroMaster/history/20260505/20260505020003-Diff-Config.rsc @@ -0,0 +1,28 @@ +3355c3355 +< # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +--- +> # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +3369c3369 +< # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +--- +> # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +4165d4164 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4167c4166 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4169c4168 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4171c4170 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4172a4172 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4174d4173 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4175a4175 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0