From ec46066dceb9f9cd50ebb12c83ae707bf85e06d0 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 18:20:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 18:20:37. --- .../20260507/20260507182002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507182002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507182002-Diff-Config.rsc | 16 + 3 files changed, 4660 insertions(+) create mode 100644 MikroMaster/20260507/20260507182002-Binary.backup create mode 100644 MikroMaster/20260507/20260507182002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507182002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507182002-Binary.backup b/MikroMaster/20260507/20260507182002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1fb987df0028cff26234de8c6a02a0b929b9e1d2 GIT binary patch literal 297773 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

Ii;H1m95r4+3sIzTxZcaS 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%0A;*{eBj~&nq=q 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 R>qvn3EWTsp&!W@*dieA(^UVMN literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507182002-Config.rsc b/MikroMaster/20260507/20260507182002-Config.rsc new file mode 100644 index 0000000..0f979b8 --- /dev/null +++ b/MikroMaster/20260507/20260507182002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 18:20:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +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 passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507182002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507182002-Diff-Config.rsc new file mode 100644 index 0000000..b595815 --- /dev/null +++ b/MikroMaster/history/20260507/20260507182002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4300d4299 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4304a4304 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4306d4305 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4308c4307 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4309a4309 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0