From 194048c100618318a6e545091711f4f79f681e49 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 04:40:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 04:40:44. --- .../20260508/20260508044002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508044002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508044002-Diff-Config.rsc | 19 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260508/20260508044002-Binary.backup create mode 100644 MikroMaster/20260508/20260508044002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508044002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508044002-Binary.backup b/MikroMaster/20260508/20260508044002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ef1521e028cbee5116a79a8cce4cc094a4a5a3fb GIT binary patch literal 298264 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

bcZUB!%-LLn}pieTYg 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

9`eZ*Cj5OP99}9+yA*Iqacqia5o3u;^~F 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508044002-Config.rsc b/MikroMaster/20260508/20260508044002-Config.rsc new file mode 100644 index 0000000..dae070f --- /dev/null +++ b/MikroMaster/20260508/20260508044002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 04:40: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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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" \ + 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/20260508044002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508044002-Diff-Config.rsc new file mode 100644 index 0000000..a3ebdc9 --- /dev/null +++ b/MikroMaster/history/20260508/20260508044002-Diff-Config.rsc @@ -0,0 +1,19 @@ +4289a4290,4291 +> add address=8.8.4.4 comment=dns.google list=FuckRKN +> add address=8.8.8.8 comment=dns.google list=FuckRKN +4293d4294 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4294a4296 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297d4298 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4300 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4303d4304 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4305c4306 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4306a4308 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0