From 7baee175e19f48db3a5557daa7eb6671c282ef9f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 09:40:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 09:40:39. --- .../20260508/20260508094001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508094001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508094001-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508094001-Binary.backup create mode 100644 MikroMaster/20260508/20260508094001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508094001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508094001-Binary.backup b/MikroMaster/20260508/20260508094001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..df197ecc74e483360b5edb465dfb2d9f57bf366e GIT binary patch literal 298264 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

jo>wmh)P!@GJ-sv} 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

XHA3MiG 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508094001-Config.rsc b/MikroMaster/20260508/20260508094001-Config.rsc new file mode 100644 index 0000000..ba56f77 --- /dev/null +++ b/MikroMaster/20260508/20260508094001-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 09:40:02 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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508094001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508094001-Diff-Config.rsc new file mode 100644 index 0000000..896200f --- /dev/null +++ b/MikroMaster/history/20260508/20260508094001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0