From 621edb4117188ef3ae293cffa4ffd3edd61474f4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 03:40:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 03:40:19. --- .../20260511/20260511034002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511034002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511034002-Diff-Config.rsc | 7 + 3 files changed, 4660 insertions(+) create mode 100644 MikroMaster/20260511/20260511034002-Binary.backup create mode 100644 MikroMaster/20260511/20260511034002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511034002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511034002-Binary.backup b/MikroMaster/20260511/20260511034002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..292ac80c5a1f5176b23664f88b0e6a31850f6229 GIT binary patch literal 302647 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 al81s;x%b+tO2-Wj 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

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