From 48bea4826453ef8e5e50e3ba044eb27aa8b1aac2 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 03:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 03:20:19. --- .../20260511/20260511032002-Binary.backup | Bin 0 -> 302449 bytes .../20260511/20260511032002-Config.rsc | 4651 +++++++++++++++++ .../20260511/20260511032002-Diff-Config.rsc | 26 + 3 files changed, 4677 insertions(+) create mode 100644 MikroMaster/20260511/20260511032002-Binary.backup create mode 100644 MikroMaster/20260511/20260511032002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511032002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511032002-Binary.backup b/MikroMaster/20260511/20260511032002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f09ad2e574c49498d72f4cfd5db024058aef4adf GIT binary patch literal 302449 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

I!K#wR^YxyVs#}g7Ptk%VKsr3YzB(;)0tX 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

`Ev~FBH44*X|A{ABX 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

8m9@0&TLIa)a?zd5l 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%0DlLm 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≈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

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