From 35d340790c5aa8ade68370a7432520819acbe54e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 09:40:43 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 09:40:43. --- .../20260509/20260509094002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509094002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509094002-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509094002-Binary.backup create mode 100644 MikroMaster/20260509/20260509094002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509094002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509094002-Binary.backup b/MikroMaster/20260509/20260509094002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8a1bed8807cffe116fe60a37b324d586a77a88c6 GIT binary patch literal 298264 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�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
  • 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

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