From e43b2287ad76750ff61513c8384bc96385a0a1dc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 11:40:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 11:40:17. --- .../20260510/20260510114001-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510114001-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510114001-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260510/20260510114001-Binary.backup create mode 100644 MikroMaster/20260510/20260510114001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510114001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510114001-Binary.backup b/MikroMaster/20260510/20260510114001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d601f1f05b662aa5fd1cb3f878bd78cd992c6380 GIT binary patch literal 302363 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%0AOknn@JeuE?ucmogJ1PHV{ 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%0Dkdc5KDy{s%B@zzVC;&)C^jzj`oH~CCQ(mT2=9 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Ã?XpP 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

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