From c5823a945762f3b6bdb390b1324815cec3c5af4b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 22:40:53 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 22:40:53. --- .../20260508/20260508224002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508224002-Config.rsc | 4639 +++++++++++++++++ .../20260508/20260508224002-Diff-Config.rsc | 16 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260508/20260508224002-Binary.backup create mode 100644 MikroMaster/20260508/20260508224002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508224002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508224002-Binary.backup b/MikroMaster/20260508/20260508224002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..864cc735096bd50bc8f09f5a9ae986c05adff117 GIT binary patch literal 298264 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 z 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

^(71DcnAqGG^CnkTD2cc0Q^jnWt)A~*`N z(J|M`HH%@W9Kn^$8o+@j!~ZYc!T|q20Kgh_W0*7xwGxIGLJVM3e)OKubc&pXzvjw2 zJ=|#HnD(ivB+H)}G!2d|NVqJYI<;GUM4N*A|Epr4JnnvG3S?$*=d>7w1zshKlE5*y zQ<{EtChXWF#K31pP4Kf3z8zgVrp1!Gcmr|E$K>(_XQ~`r`xB*PGm0za9tT6~>exUX z(xOOMDM6iB2m~_cmxJF|V8Awot-p4r5(sh11I_Eu5yN{&Vr_O=5kTXQ=?KvkcutnB-CPXR&56>jN8UBkh78W!cR2U=8#uRD~R9R6^fcrbh{&X0YM4@Ar?)2q`O2Y zqQMmrxeCzkyq0@FTSfn$+UYc0y&5pcBd9;P@LnMqDOKTvM!1O@mXa`nlH6R|u4jed zZ4qQtdvP>@bi%$!NI4j{8;JvZKdwPWTlF%FLk)8W^j7F$Iz6MdE&Ct@lnA3EU8L5X zyzeB6oD{8Dq;PcE8_neP;il&Oh)9tqW39%14?LBw+-Px!d|FDKh&apP>NlB9bccC# zq3_dO=8}=#Gx%^VQKlUCDWk}3nGc6Ri9J>}Ii~E_R@uJKKSTH6jefWdd{KvrSlUi( z=z}ObP~4jHqeo8QOWJqi&H!h2eC^%=i9Z?()hw=?7QIF*y@*_CR2}7!A3#>gv~VOr zR>Tw$)&S!o#ld?UrC&K6W#o%RF!F^_PbYqWL6F4r+{AqK(nZi-5=xO(j3`N(iO&k6 zi!P?rnX{F}`N%CA@&Hw*f}S&L$>k@pFwwpn@NX$cpUWTvy9R=$%!k9{9VGiie*Qb9 zPw_q&Wb@9?azoe`y|;EW*SNu-=UwKZJ*~L(`2u7Gz;3O?{3@)6W-?o z1ND1>>N;qoVy}HpfNsp=A&aMC4$jD%u3VSwTY{37vFFWR6lR7?SUjWqW~G?uc{1YK z!Q>m?FE0DM{=-fOaKgW_e;45O=NVTBvJj|{&(bz;>S_o2ycksMtA=b_i%43mn<^|y0kw}_O;Z3NU+#8#so-YPU%M3Z5Bv7odj=gjF zwQR~DJH2R^$-Y}Z>KvptJi}sF-VarF$wMX9{~wKFq$UD3t0(u+VqIJ&b)q|OSVm6o z9t1|KT&r9SS@%PkhqI{mn24rTqnaGOxc#G7Cj52?uXTREH7LdN*^#?Q{v|wO?m)K^ zibZR%{K^zp0i5+A(UFR5x_WUHz*Pg{E;xG;($4wcvs0m>Q;(gOX zVkH&`nKNH+8NvpqhT>X06Y$3Nq6tDf0}n3u^F4i&A?XVD8Z{aa0lm}rmiW8B#|&?w z-klKFE+jp(krh_-b)*#cQg*zg*{HvFSKc;pHQW)}zeSmel}JUe7C&!Z<23&cq$HN7 zP&jahm=tR8#sfN!#;1z{tl`Id!P4Kpq^mZtZGL7apEz<

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