From 6bdbbf3efcf6f0ac3e0425ca294b4a5159f33fef Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 21:20:53 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 21:20:53. --- .../20260508/20260508212002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508212002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508212002-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508212002-Binary.backup create mode 100644 MikroMaster/20260508/20260508212002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508212002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508212002-Binary.backup b/MikroMaster/20260508/20260508212002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2f9d19f180373281bd80d6eb8bd265f705b376be GIT binary patch literal 298264 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�Fg0WFfG^j1ldl?+N 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

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