From 9ce5740534b360de5c213d362c170d588ed13281 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 19:00:36 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 19:00:36. --- .../20260507/20260507190002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507190002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507190002-Diff-Config.rsc | 12 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260507/20260507190002-Binary.backup create mode 100644 MikroMaster/20260507/20260507190002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507190002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507190002-Binary.backup b/MikroMaster/20260507/20260507190002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b35c988a28035687037cde42fc54e43d0196c570 GIT binary patch literal 297773 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ƤeHMHUe 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%0A`_YSFXUCsb4g6>T<8-?;(r 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 RXwMS{Evxx(?L;Xl(4JTZ4y^zH literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507190002-Config.rsc b/MikroMaster/20260507/20260507190002-Config.rsc new file mode 100644 index 0000000..4a3df61 --- /dev/null +++ b/MikroMaster/20260507/20260507190002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 19:00: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=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507190002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507190002-Diff-Config.rsc new file mode 100644 index 0000000..a17024e --- /dev/null +++ b/MikroMaster/history/20260507/20260507190002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4294d4293 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4296c4295 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4297a4297 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0