From aa1f374036f3835b0e0c735c193f3720c7d9292e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 22:20:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 22:20:42. --- .../20260509/20260509222002-Binary.backup | Bin 0 -> 300002 bytes .../20260509/20260509222002-Config.rsc | 4643 +++++++++++++++++ .../20260509/20260509222002-Diff-Config.rsc | 8 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509222002-Binary.backup create mode 100644 MikroMaster/20260509/20260509222002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509222002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509222002-Binary.backup b/MikroMaster/20260509/20260509222002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..06eea75da1e904644ba8871777a2f7693d5bf62b GIT binary patch literal 300002 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

Vh|nMsmpt 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

f59-3Bx&}FcJA>m+oxzD1ArxTU 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

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