From 722fbd844ebdaa1298ca154a4c538afaecc39a8c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 23:00:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 23:00:38. --- .../20260508/20260508230001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508230001-Config.rsc | 4639 +++++++++++++++++ .../20260508/20260508230001-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260508/20260508230001-Binary.backup create mode 100644 MikroMaster/20260508/20260508230001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508230001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508230001-Binary.backup b/MikroMaster/20260508/20260508230001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..11cb54180c312de20613375e4a540ae0be31ae6d GIT binary patch literal 298264 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

HhQ79D#HG#BFsI-z>z5YHH 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

+v>CQ5w@j>%zD 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

Ve&r;gX9`o|2NDo$p*Fm;}F*+&f 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%0DB3YI#EFOieO0cwr2+1-iQA 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508230001-Config.rsc b/MikroMaster/20260508/20260508230001-Config.rsc new file mode 100644 index 0000000..219e522 --- /dev/null +++ b/MikroMaster/20260508/20260508230001-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-08 23:00:04 by RouterOS 7.22.1 +# 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 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 +/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" 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!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping 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 +/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 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/20260508/20260508230001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508230001-Diff-Config.rsc new file mode 100644 index 0000000..f7af3a1 --- /dev/null +++ b/MikroMaster/history/20260508/20260508230001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0