From 85c6f10e18e3647a3d9515b7e76b79d2eb308dd7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 08:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 08:40:18. --- .../20260511/20260511084002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511084002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511084002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511084002-Binary.backup create mode 100644 MikroMaster/20260511/20260511084002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511084002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511084002-Binary.backup b/MikroMaster/20260511/20260511084002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0cc6684159f4c27e4de16eb20426c625c52fb9b0 GIT binary patch literal 302647 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%0ApRVYM$GReH+67U7 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

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