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