From 2cbd31f5b230e158cc847462ab79bff463fcf1d8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 22:20:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 22:20:23. --- .../20260512/20260512222003-Binary.backup | Bin 0 -> 301043 bytes .../20260512/20260512222003-Config.rsc | 4642 +++++++++++++++++ .../20260512/20260512222003-Diff-Config.rsc | 64 + 3 files changed, 4706 insertions(+) create mode 100644 MikroMaster/20260512/20260512222003-Binary.backup create mode 100644 MikroMaster/20260512/20260512222003-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512222003-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512222003-Binary.backup b/MikroMaster/20260512/20260512222003-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..bbf8216d96cbe7059be04f147b15610ebdef90c0 GIT binary patch literal 301043 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%0DLIlbw-9Y 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�FL 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%0DVK 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512222003-Config.rsc b/MikroMaster/20260512/20260512222003-Config.rsc new file mode 100644 index 0000000..a18db0b --- /dev/null +++ b/MikroMaster/20260512/20260512222003-Config.rsc @@ -0,0 +1,4642 @@ +# 2026-05-12 22:20:03 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 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C0 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] mac-address=48:8F:5A:8E:1A:B0 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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +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=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" out-interface-list=WAN +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/20260512222003-Diff-Config.rsc b/MikroMaster/history/20260512/20260512222003-Diff-Config.rsc new file mode 100644 index 0000000..1987d77 --- /dev/null +++ b/MikroMaster/history/20260512/20260512222003-Diff-Config.rsc @@ -0,0 +1,64 @@ +16a17 +> # same mac-address as wlan1 +18c19 +< 48:8F:5A:8E:1A:C0 name="ether1 - Unet" +--- +> 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +21c22 +< set [ find default-name=ether5 ] mac-address=48:8F:5A:8E:1A:B0 poe-out=off +--- +> set [ find default-name=ether5 ] poe-out=off +3464,3465c3465 +< # managed by CAPsMAN +< # channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +--- +> # same mac-address as ether1 - Unet +3474,3475d3473 +< # managed by CAPsMAN +< # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +3485,3486c3483 +< # managed by CAPsMAN +< # channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +--- +> # same mac-address as ether1 - Unet +3488,3489d3484 +< # managed by CAPsMAN +< # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +3549d3543 +< # +3552,3553c3546,3547 +< CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ +< wlan1,wlan2 +--- +> CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ +> lock-to-caps-man=yes +3556a3551 +> add address=10.8.0.2 interface=*F network=10.8.0.2 +4301c4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +--- +> add address=149.154.164.13 comment=telegra.ph list=FuckRKN +4302a4298,4304 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +> add address=188.114.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 +4303a4306,4314 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +> add address=66.254.114.79 comment=youporn.com list=FuckRKN +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +> add address=149.154.167.99 comment=telegram.org list=FuckRKN +> add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +4414a4426,4427 +> add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ +> out,none out-interface="ether1 - Unet" +4417,4418d4429 +< add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ +< out,none out-interface="ether1 - Unet" out-interface-list=WAN -- 2.52.0