From 80d9ec6ed8de4af015a845824b1d7aadf19bbb33 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 17:20:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 17:20:44. --- .../20260508/20260508172002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508172002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508172002-Diff-Config.rsc | 8 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260508/20260508172002-Binary.backup create mode 100644 MikroMaster/20260508/20260508172002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508172002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508172002-Binary.backup b/MikroMaster/20260508/20260508172002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..40988b03c982c5fca038fe610e9d1decae9b1eba GIT binary patch literal 298264 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

r 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

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