From 7d848d30569596670ad5b031c0452ebb4f545b85 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 10:40:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 10:40:19. --- .../20260512/20260512104001-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512104001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512104001-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512104001-Binary.backup create mode 100644 MikroMaster/20260512/20260512104001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512104001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512104001-Binary.backup b/MikroMaster/20260512/20260512104001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6d259c6fda4a3ff1019e659c414490975d1415af GIT binary patch literal 302653 zcmV+aKLEh*sF8C$o&*2|6a|9|Ix}|<;5e5KY(k;{000O80004Z`SAPzLud%@N}>6O z3_cU(L@jaP%>Fgrl3D+yuiSigk=yQ0~xV(<@6v zZe1HWGeT3+n`hvp_G_Dk8>1fMyZGgGX|Ii>n9-#?s)c5HD{P!;Vgt6dPHG6NqqnMbW_}q5LdMV+3p&N?@UPcFL zj#k(jowVZgH}@wGPyo0q)PL}vZT`?T;2FWNJ`G-)?;9tJE;M?KJ8oK3DJhHGCW-k(Uo{Tu7tNf4=S2WQFE9hDm67^?zxG?5BfJxX*GMRwQbrN}RdESl znA?2s1}0?-Pxo7>ukcjOCo;Din&3Xa_@KigyAcBRzD+6b5Jrpxs2cE;70fsl?3MRa zf7eA$JWwm?qzd#=r0dsV0D^*VzW#!-^3n7mtxnDS`EJg)^OC`~9+C5$7cfMTF9KXu z98HRH6FhW7pj6cefE2_NGs?B$H@A8P6!?W8pGn6VmyCU9Lty)f9(e-!gT%!8DHtG{Hp0 zL+`j=jISs!PYB6pOyS|ZeaU?@vyW~=u)Wz)53i0^Gz1Y-*&gMn9Rl;4Ml^v9h;JsRrIM9}2KY-ya`P&Mcq- zsNUAitYB)^fU1YA1Xsw}gH&Gbw@9K||J39KPK$8_itpbWCtv)-9rloe5WN4JKU{LO zD?l~TpvA%69~^LQD3$Sx=&2+FYm~0{K; zP@tx7Dl9jB>0Bpw%hkNpK1x&Ol-*^`4Xgn%!{~TGCp1>*ZBtA(u2i4}z`%Se{ z|Ir%|r=e4>+w&(U1w?9Aduc{viXU7DlaT+ecqX4D`jHQT72rHqu6mmb;lm}OnT2WtYWQebV zbkCosuybFKQwjW@Gup~D4A`~gvOc=fLMnR&GFu~`zb-F!D%G6SpdD)a_@2MS_oD{4 z_Uh89lQ5A!Q|pP5>xa>959KhPR`seLpQM($n0AZqjy}ITZl|sq{|EB{6q!~itFRJ# z{`^5a3~iIn70>q|B(21r!jh`VlQScaQKIvIze$BGsjofV9eiT7yI5{b1XKb7h3=H$dwtk|>)s z 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 z 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�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∨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 Jm1@ZYc~NN=`L6%~ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512104001-Config.rsc b/MikroMaster/20260512/20260512104001-Config.rsc new file mode 100644 index 0000000..6c963f1 --- /dev/null +++ b/MikroMaster/20260512/20260512104001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 10:40:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +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 Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512104001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512104001-Diff-Config.rsc new file mode 100644 index 0000000..671c810 --- /dev/null +++ b/MikroMaster/history/20260512/20260512104001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303c4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0