From 60f5d52c052faca7dd5c6858ee3a9d7d82d8c820 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 17:40:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 17:40:38. --- .../20260507/20260507174002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507174002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507174002-Diff-Config.rsc | 12 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260507/20260507174002-Binary.backup create mode 100644 MikroMaster/20260507/20260507174002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507174002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507174002-Binary.backup b/MikroMaster/20260507/20260507174002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..983c1f14c768a1ee6b181fca4e339b012ed0687b GIT binary patch literal 297773 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�Ev03OOCpFn(*+ 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 z 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 R@PIFGIdwpdDb1@hvrJn;nPUI| literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507174002-Config.rsc b/MikroMaster/20260507/20260507174002-Config.rsc new file mode 100644 index 0000000..6f7b9cb --- /dev/null +++ b/MikroMaster/20260507/20260507174002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 17:40:03 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260507174002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507174002-Diff-Config.rsc new file mode 100644 index 0000000..923b5de --- /dev/null +++ b/MikroMaster/history/20260507/20260507174002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4296d4295 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4298c4297 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4299a4299 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4303d4302 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4304a4304 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0