From 9032a099acdb30715284d8698aac5dc32518a61e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 17:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 17:20:19. --- .../20260512/20260512172002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512172002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512172002-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260512/20260512172002-Binary.backup create mode 100644 MikroMaster/20260512/20260512172002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512172002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512172002-Binary.backup b/MikroMaster/20260512/20260512172002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..823bd8a4b0002dbb081af43545da96edc891bd48 GIT binary patch literal 302653 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�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 J`D6x>;-$OEnQ;IB literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512172002-Config.rsc b/MikroMaster/20260512/20260512172002-Config.rsc new file mode 100644 index 0000000..b712218 --- /dev/null +++ b/MikroMaster/20260512/20260512172002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 17:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512172002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512172002-Diff-Config.rsc new file mode 100644 index 0000000..0f83153 --- /dev/null +++ b/MikroMaster/history/20260512/20260512172002-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=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0