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