From 9fb6ff4f4a70d4149c6c9d81dc572c44284090ae Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 18:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 18:40:18. --- .../20260511/20260511184002-Binary.backup | Bin 0 -> 303276 bytes .../20260511/20260511184002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511184002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511184002-Binary.backup create mode 100644 MikroMaster/20260511/20260511184002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511184002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511184002-Binary.backup b/MikroMaster/20260511/20260511184002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0d91c4181c5a01d4f5720e025633686ad5dd8d85 GIT binary patch literal 303276 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
vifmc7#(0vG@rN)oH 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%0A#*KDluUa^C|lb;n#Je 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 IW1?G!|2>OS6#xJL literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511184002-Config.rsc b/MikroMaster/20260511/20260511184002-Config.rsc new file mode 100644 index 0000000..8d99ba1 --- /dev/null +++ b/MikroMaster/20260511/20260511184002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 18:40:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=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/20260511184002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511184002-Diff-Config.rsc new file mode 100644 index 0000000..85ef1f0 --- /dev/null +++ b/MikroMaster/history/20260511/20260511184002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0