From e28141d5123c8d38948c9b0d060f92420ec2d885 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 16:20:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 16:20:39. --- .../20260509/20260509162001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509162001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509162001-Diff-Config.rsc | 24 + 3 files changed, 4663 insertions(+) create mode 100644 MikroMaster/20260509/20260509162001-Binary.backup create mode 100644 MikroMaster/20260509/20260509162001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509162001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509162001-Binary.backup b/MikroMaster/20260509/20260509162001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..80c71c9de1d180f784bda133ffe25400f517b57e GIT binary patch literal 298264 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

ZtCcHYDtg^+vD) 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ⅅ9a-pD8) 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

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