From bf72309468fba4cfba4cf11193d556fc8805c55e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 22:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 22:20:18. --- .../20260511/20260511222002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511222002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511222002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511222002-Binary.backup create mode 100644 MikroMaster/20260511/20260511222002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511222002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511222002-Binary.backup b/MikroMaster/20260511/20260511222002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..59ada5f8e615d6809234e038e61489f4e84a7363 GIT binary patch literal 302647 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 z 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%0DU3;ytq}cNOEb*K>k#kGE>QEHC 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

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