From 442e2ed61b518f14ec79757eb98b91395e15147e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 15:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 15:20:19. --- .../20260512/20260512152002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512152002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512152002-Diff-Config.rsc | 10 + 3 files changed, 4663 insertions(+) create mode 100644 MikroMaster/20260512/20260512152002-Binary.backup create mode 100644 MikroMaster/20260512/20260512152002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512152002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512152002-Binary.backup b/MikroMaster/20260512/20260512152002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a07e711ea598520407e28565c75d037cd803e1b0 GIT binary patch literal 302653 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

N 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

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