From 740d0859ade0e66ae398dbd6efcdb61029c367bc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 20:01:00 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 20:01:00. --- .../20260507/20260507200002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507200002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507200002-Diff-Config.rsc | 22 + 3 files changed, 4666 insertions(+) create mode 100644 MikroMaster/20260507/20260507200002-Binary.backup create mode 100644 MikroMaster/20260507/20260507200002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507200002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507200002-Binary.backup b/MikroMaster/20260507/20260507200002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4f78dcf123669dec1b415e53f73ab96310427a3c GIT binary patch literal 297773 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

6JKP6=lB+!t+A1FhQm=vL$( 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

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