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

V6NussL?l$z~Yu7cA&i(lS*)sOWW$_ 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