From dfd0ab62a4ad094fef9fb10b81890b3706150846 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 01:00:20 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 01:00:20. --- .../20260512/20260512010004-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512010004-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512010004-Diff-Config.rsc | 4 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260512/20260512010004-Binary.backup create mode 100644 MikroMaster/20260512/20260512010004-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512010004-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512010004-Binary.backup b/MikroMaster/20260512/20260512010004-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0973cfaf2d11d28d1afab9b9d8b6033eeace149b GIT binary patch literal 302647 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

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