From 70b02066db8ca2d8ed5259dec5543fd196510efa Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 01:20:49 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 01:20:49. --- .../20260509/20260509012002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509012002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509012002-Diff-Config.rsc | 16 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509012002-Binary.backup create mode 100644 MikroMaster/20260509/20260509012002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509012002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509012002-Binary.backup b/MikroMaster/20260509/20260509012002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..fe7a04efee06e9f6b98064185b53fe290371a77f GIT binary patch literal 298264 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

39ozdgfaspUx|& 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 z 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%0D-8j%yoR_87Mon+lAiT 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

u9BherU+8z*qR_5mIS+!)k>r4%;lSnb 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509012002-Config.rsc b/MikroMaster/20260509/20260509012002-Config.rsc new file mode 100644 index 0000000..31071a6 --- /dev/null +++ b/MikroMaster/20260509/20260509012002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 01:20:04 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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/20260509012002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509012002-Diff-Config.rsc new file mode 100644 index 0000000..d008495 --- /dev/null +++ b/MikroMaster/history/20260509/20260509012002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0