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