From 0a4cacad3e3d40b2beaf5656632591d89ed057ba Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 08:40:52 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 08:40:52. --- .../20260509/20260509084001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509084001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509084001-Diff-Config.rsc | 18 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260509/20260509084001-Binary.backup create mode 100644 MikroMaster/20260509/20260509084001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509084001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509084001-Binary.backup b/MikroMaster/20260509/20260509084001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ddab500f523f6cbc28a323fb62b04a1f4f391b62 GIT binary patch literal 298264 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%0D!X6dd$h5$6Hl2^OcS{>YasjDtA?XMu+FE_QEc0 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509084001-Config.rsc b/MikroMaster/20260509/20260509084001-Config.rsc new file mode 100644 index 0000000..923b810 --- /dev/null +++ b/MikroMaster/20260509/20260509084001-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 08:40:04 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 +/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" 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!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=172.66.164.200 comment=dou.ua list=FuckRKN +add address=104.20.28.254 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=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=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 src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping 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 +/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 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/20260509/20260509084001-Diff-Config.rsc b/MikroMaster/history/20260509/20260509084001-Diff-Config.rsc new file mode 100644 index 0000000..df01690 --- /dev/null +++ b/MikroMaster/history/20260509/20260509084001-Diff-Config.rsc @@ -0,0 +1,18 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300,4301c4300,4301 +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +--- +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0