From 48ee01d009cc6b0ae9b8592a52bb7f89c04c3cc9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 16:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 16:20:18. --- .../20260511/20260511162002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511162002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511162002-Diff-Config.rsc | 4 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260511/20260511162002-Binary.backup create mode 100644 MikroMaster/20260511/20260511162002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511162002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511162002-Binary.backup b/MikroMaster/20260511/20260511162002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7328519a457b5785f7fe9130b6a48bb457e5ea87 GIT binary patch literal 302647 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

pi)3 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

9WdFm0KcLG(}80%p|xPI}c`>g0 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

C&(3(&0v}B&&UjhUuPW*bh2~ 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%0DNH1Wr)8mC>*6_;Dq}-C{ha5 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

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