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