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