From 0b9cba7cc9e7c6edcd7f8bfae55d602dd0fdcb2d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 11:01:00 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 11:01:00. --- .../20260507/20260507110002-Binary.backup | Bin 0 -> 296477 bytes .../20260507/20260507110002-Config.rsc | 4616 +++++++++++++++++ .../20260507/20260507110002-Diff-Config.rsc | 22 + 3 files changed, 4638 insertions(+) create mode 100644 MikroMaster/20260507/20260507110002-Binary.backup create mode 100644 MikroMaster/20260507/20260507110002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507110002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507110002-Binary.backup b/MikroMaster/20260507/20260507110002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2791f702e9f55b91ccd86562b497875801a64e72 GIT binary patch literal 296477 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 ?`s!RzO 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%0DtA_%*7>G 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

%X(l50F=?&F^p|{Y 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 Vh*lp6nx#}ANZLfCovbI5&{Q<+-0=Va literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507110002-Config.rsc b/MikroMaster/20260507/20260507110002-Config.rsc new file mode 100644 index 0000000..7864bf5 --- /dev/null +++ b/MikroMaster/20260507/20260507110002-Config.rsc @@ -0,0 +1,4616 @@ +# 2026-05-07 11:00: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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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 comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org list=Trusted-NTP +add address=1.ru.pool.ntp.org list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org list=Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org list=Trusted-NTP +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" 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-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" \ + disabled=yes 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 +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 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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=Trusted-VPN \ + address-list-timeout=none-dynamic chain=prerouting comment=VDSina-vpn \ + content=*.vdsina.com +add action=add-dst-to-address-list address-list=Trusted-VPN \ + address-list-timeout=none-dynamic chain=output content=vdsina.vados.ru +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + 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 +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/20260507110002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507110002-Diff-Config.rsc new file mode 100644 index 0000000..bf99392 --- /dev/null +++ b/MikroMaster/history/20260507/20260507110002-Diff-Config.rsc @@ -0,0 +1,22 @@ +4351a4352,4355 +> 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 +4368,4369c4372,4373 +< disabled=yes 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 +--- +> dst-address=!10.30.30.0/24 log-prefix=VPN-all new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 src-address-list=!NoWG +4376,4379d4379 +< 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 +4411,4415d4410 +< add action=add-dst-to-address-list address-list=Trusted-VPN \ +< address-list-timeout=none-dynamic chain=prerouting comment=VDSina-vpn \ +< content=*.vdsina.com +< add action=add-dst-to-address-list address-list=Trusted-VPN \ +< address-list-timeout=none-dynamic chain=output content=vdsina.vados.ru -- 2.52.0