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