From c8acbc2f3c06f3309d4e19e9a625964af71da253 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 01:01:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 01:01:41. --- .../20260510/20260510010001-Binary.backup | Bin 0 -> 298558 bytes .../20260510/20260510010001-Config.rsc | 4625 +++++++++++++++++ .../20260510/20260510010001-Diff-Config.rsc | 19 + 3 files changed, 4644 insertions(+) create mode 100644 MikroMaster/20260510/20260510010001-Binary.backup create mode 100644 MikroMaster/20260510/20260510010001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510010001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510010001-Binary.backup b/MikroMaster/20260510/20260510010001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..220126fb2df0ca360fd1dea7b5be187dd8a42e25 GIT binary patch literal 298558 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

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