From c5f2439a809a58a3dd54358796e1de5f5477d09a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 18:00:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 18:00:37. --- .../20260507/20260507180002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507180002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507180002-Diff-Config.rsc | 12 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260507/20260507180002-Binary.backup create mode 100644 MikroMaster/20260507/20260507180002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507180002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507180002-Binary.backup b/MikroMaster/20260507/20260507180002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a5f58e30a337acebbb3318bc37fb743ad36fd912 GIT binary patch literal 297773 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%0AZ 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
  • G#5SS*ny;5JKqBnQ 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 ~kvW?@WZ5p*;9&!U-!0Yqc9bp;T+8ZKXIh72Wp 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 R9#xlCI9Jn3OYLnxv6~6#KzslI literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507180002-Config.rsc b/MikroMaster/20260507/20260507180002-Config.rsc new file mode 100644 index 0000000..cb09091 --- /dev/null +++ b/MikroMaster/20260507/20260507180002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 18:00:03 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=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +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.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 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" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507180002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507180002-Diff-Config.rsc new file mode 100644 index 0000000..3230b40 --- /dev/null +++ b/MikroMaster/history/20260507/20260507180002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4294d4293 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4296c4295 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4297a4297 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4308d4307 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4309a4309 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0