From 85cb04196f31fc316c6124f6cd22d1ff0b2a88ce Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 19:20:48 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 19:20:48. --- .../20260509/20260509192002-Binary.backup | Bin 0 -> 299986 bytes .../20260509/20260509192002-Config.rsc | 4642 +++++++++++++++++ .../20260509/20260509192002-Diff-Config.rsc | 12 + 3 files changed, 4654 insertions(+) create mode 100644 MikroMaster/20260509/20260509192002-Binary.backup create mode 100644 MikroMaster/20260509/20260509192002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509192002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509192002-Binary.backup b/MikroMaster/20260509/20260509192002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..97d2423c129b38a598af3322c612490991baac54 GIT binary patch literal 299986 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%0Dl~dP^RuGG@93SMS^@4V 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⁣Lc;8PlK#pRA{NhgFU_;wVL)MPjYRWCl=m_rrE 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

Ywh-U=?$H!>j4AElT8n%mI!U{SJs09 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 usDBrQ!;1rT)r literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509192002-Config.rsc b/MikroMaster/20260509/20260509192002-Config.rsc new file mode 100644 index 0000000..e3de93d --- /dev/null +++ b/MikroMaster/20260509/20260509192002-Config.rsc @@ -0,0 +1,4642 @@ +# 2026-05-09 19:20:06 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,::/0 client-allowed-address=0.0.0.0/0,::/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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-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=FuckRKN dst-address-list=\ + FuckRKN new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 log-prefix=VPN-all new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" 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 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/20260509192002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509192002-Diff-Config.rsc new file mode 100644 index 0000000..90f8b6c --- /dev/null +++ b/MikroMaster/history/20260509/20260509192002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4291d4290 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4292a4292 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0