From 46a31bfddd59e61c7a3b342fe1c8f8f368d51ab1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 16:00:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 16:00:47. --- .../20260507/20260507160002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507160002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507160002-Diff-Config.rsc | 8 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260507/20260507160002-Binary.backup create mode 100644 MikroMaster/20260507/20260507160002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507160002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507160002-Binary.backup b/MikroMaster/20260507/20260507160002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9171448f6f0911c5e2a57d0a3cf540f6f92a5360 GIT binary patch literal 297773 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∨)N7fZv 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

3`CO+hjBuAqo< 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

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