From 3fb86436638a6a36c836e77de3abbc328c6ec090 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 13:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 13:40:18. --- .../20260511/20260511134002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511134002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511134002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511134002-Binary.backup create mode 100644 MikroMaster/20260511/20260511134002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511134002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511134002-Binary.backup b/MikroMaster/20260511/20260511134002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..dce71001206bf2f7aa524368b5e8287a998982d9 GIT binary patch literal 302647 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 ?Lec))F!P77BtyC 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 gfE*m`Ya?B4TPR5J$-K* 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 z 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 DeJ0gV literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511134002-Config.rsc b/MikroMaster/20260511/20260511134002-Config.rsc new file mode 100644 index 0000000..9dc2da1 --- /dev/null +++ b/MikroMaster/20260511/20260511134002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 13:40:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=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" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN 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=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN 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" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add 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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511134002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511134002-Diff-Config.rsc new file mode 100644 index 0000000..0a64e51 --- /dev/null +++ b/MikroMaster/history/20260511/20260511134002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0