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