From 25748dd75d9a13dbec87d40df2e43e34b95a6e24 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 07:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 07:00:19. --- .../20260512/20260512070002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512070002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512070002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512070002-Binary.backup create mode 100644 MikroMaster/20260512/20260512070002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512070002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512070002-Binary.backup b/MikroMaster/20260512/20260512070002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1000fc57d8e0fae3541be5dbd2f9909a948f2819 GIT binary patch literal 302647 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�Cl+Ws$LM2W?@2%~7bvyU2M2k- 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%0Aco=8Kd_W257wk}f?-5!oh#L7_ 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�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 DAve(5 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512070002-Config.rsc b/MikroMaster/20260512/20260512070002-Config.rsc new file mode 100644 index 0000000..c4e7295 --- /dev/null +++ b/MikroMaster/20260512/20260512070002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 07:00:03 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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 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/20260512/20260512070002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512070002-Diff-Config.rsc new file mode 100644 index 0000000..be1c51b --- /dev/null +++ b/MikroMaster/history/20260512/20260512070002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4301d4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4303c4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv 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 +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0