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