From f9f532c2a9ae013607228524245a120bcdc4dc69 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 09:20:50 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 09:20:50. --- .../20260507/20260507092001-Binary.backup | Bin 0 -> 289945 bytes .../20260507/20260507092001-Config.rsc | 4601 +++++++++++++++++ .../20260507/20260507092001-Diff-Config.rsc | 14 + 3 files changed, 4615 insertions(+) create mode 100644 MikroMaster/20260507/20260507092001-Binary.backup create mode 100644 MikroMaster/20260507/20260507092001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507092001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507092001-Binary.backup b/MikroMaster/20260507/20260507092001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..bea387239fb9ba2e691126f1e4afcc84e7f33a11 GIT binary patch literal 289945 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

{msdp)W0c90&q73 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

F0&D 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507092001-Config.rsc b/MikroMaster/20260507/20260507092001-Config.rsc new file mode 100644 index 0000000..fd1574d --- /dev/null +++ b/MikroMaster/20260507/20260507092001-Config.rsc @@ -0,0 +1,4601 @@ +# 2026-05-07 09:20:03 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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=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 comment=AMSTER name=amster.vados.ru 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=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.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=89.110.101.17 list=VPN-Server +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=8.8.8.8 comment=Google list=TrustedNS +add address=8.8.4.4 comment=Google list=TrustedNS +add address=1.1.1.1 comment=CloudFlare list=TrustedNS +add address=1.0.0.1 comment=CloudFlare list=TrustedNS +/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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +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="ether1 - Unet" protocol=tcp src-address=!10.30.30.0/24 +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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-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 passthrough=\ + no +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 log-prefix=VPN-all new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp 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 passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" 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=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 log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole 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" disabled=yes 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/20260507/20260507092001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507092001-Diff-Config.rsc new file mode 100644 index 0000000..a90f3a4 --- /dev/null +++ b/MikroMaster/history/20260507/20260507092001-Diff-Config.rsc @@ -0,0 +1,14 @@ +4261a4262,4263 +> add address=8.8.8.8 list=TRUSTED +> add address=8.8.4.4 list=TRUSTED +4270,4273d4271 +< add address=8.8.8.8 comment=Google list=TrustedNS +< add address=8.8.4.4 comment=Google list=TrustedNS +< add address=1.1.1.1 comment=CloudFlare list=TrustedNS +< add address=1.0.0.1 comment=CloudFlare list=TrustedNS +4296,4297c4294,4295 +< "accept NTP clients on local area network" dst-port=123 protocol=udp \ +< src-address=10.30.30.0/24 +--- +> "accept NTP clients on local area network" dst-port=123 in-interface=\ +> Bridge-LAN in-interface-list=LAN protocol=udp -- 2.52.0