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