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