From 8e4980877457132398228a3118e056cd6a498e9d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 08:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 08:20:18. --- .../20260512/20260512082002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512082002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512082002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512082002-Binary.backup create mode 100644 MikroMaster/20260512/20260512082002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512082002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512082002-Binary.backup b/MikroMaster/20260512/20260512082002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4eaee6072a7f113ae5feaccf5b8a62474cab1cb7 GIT binary patch literal 302647 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≤e`&xe)%ZiBZM%v+86Yt4Si0}^B-`sw#$ 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 D>vx@K literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512082002-Config.rsc b/MikroMaster/20260512/20260512082002-Config.rsc new file mode 100644 index 0000000..af5d2ae --- /dev/null +++ b/MikroMaster/20260512/20260512082002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 08:20: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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=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/20260512082002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512082002-Diff-Config.rsc new file mode 100644 index 0000000..fd90c91 --- /dev/null +++ b/MikroMaster/history/20260512/20260512082002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0