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