From 75dba129ee8409b1d63db9a1e71a3297ba5e661f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 14:00:52 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 14:00:52. --- .../20260508/20260508140001-Binary.backup | Bin 0 -> 298559 bytes .../20260508/20260508140001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508140001-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508140001-Binary.backup create mode 100644 MikroMaster/20260508/20260508140001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508140001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508140001-Binary.backup b/MikroMaster/20260508/20260508140001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9a763a2caa697712abadb541c3673237c8093aac GIT binary patch literal 298559 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

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