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