From 6112fb1260a8e164e3f9a5d64b7fa717b37fbe20 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 11:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 11:00:18. --- .../20260510/20260510110002-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510110002-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510110002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260510/20260510110002-Binary.backup create mode 100644 MikroMaster/20260510/20260510110002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510110002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510110002-Binary.backup b/MikroMaster/20260510/20260510110002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4c81e7a0b5acaad463b801bbb73da6e6d08f3efc GIT binary patch literal 302363 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

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