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