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