From 6b511f9569b98ef4ee0b66bdb993dee302acd2b9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 16:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 16:00:18. --- .../20260511/20260511160002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511160002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511160002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511160002-Binary.backup create mode 100644 MikroMaster/20260511/20260511160002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511160002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511160002-Binary.backup b/MikroMaster/20260511/20260511160002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d8161140c5e726345df4dea955044eaf679ab1a3 GIT binary patch literal 302647 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ξ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%0D=4 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

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