From a7ab317fb16700dcc2bd3688d5395f8428ef3c3d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 22:40:22 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 22:40:22. --- .../20260512/20260512224001-Binary.backup | Bin 0 -> 301512 bytes .../20260512/20260512224001-Config.rsc | 4638 +++++++++++++++++ .../20260512/20260512224001-Diff-Config.rsc | 8 + 3 files changed, 4646 insertions(+) create mode 100644 MikroMaster/20260512/20260512224001-Binary.backup create mode 100644 MikroMaster/20260512/20260512224001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512224001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512224001-Binary.backup b/MikroMaster/20260512/20260512224001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..655590787ab7568f8296ddde54d06623525c85cf GIT binary patch literal 301512 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

GPg!4IjLPp=l7Ps$>WVm;NH!Ac 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

H$&u?J8~xWM?e~P-tyR2k!)@#S}V(Bq{O4C$>3` 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�{5!7{^Edda=l5JYV=e=wo9c3CZVHSB8y0Fs`NeW zB+-Ngo&HvUCoBC1E+V1Z(OM);88U8NBCZOrRpdAG3{^K`2t7_xxvHfN9e3ec9{3jq z?=^YrFXlXplo`|sLL!01*r?e8SH@rXe58wKvwfz$wgtVq*2A_?=8@5P6(U2ON71uU zUt9(ga*G<$8?v4F?Ue)M`G}=b_4z6OjoOk)l$%2}Y}?@CEnumdUvlBQIu|Aqry>Q# z`I7M!!efkisjH)0blYPplGikk9UKRuB!huYd1zO@2{UUti0k#r0K=mr9~ZUixqSA59@)z>J9r2CYn)a zfkNM!DlaVBiVAI1jcO2R8ju6|w{#FS%qE}9_cIf@bTkLIf&_{O*bS-?jA&`^wUHzf z^N-0SY2rYEbr5bIan)?SR$yB7jsVPB&bf@bkbaj&E-as%|=30PT z-S2=QZ+~J8_H*vE6d7>AaOzueW7@Q|+$1HE7x*6kD14fW{Q>j$3@^L=M!Sjt_YB_|9EMgp&b` z2Wp9^tUn-Y;jUWB$|;X8f^p>@<5A}brGEw9?!B8C=XJenL~I} z<{G+P$f)OBbQI!h*{8|&#*M7V%wT7PKaXXrAFJi(+uo-{cq}R!{+v|T{a#5Z^+BR` zKJS5NsloSb6c)IcWu7Xf34#4EW5ae^;a0ro2wWNjgF|&j{8;ImT7RrZ5-I!kzh3Yt z1W(pZ+M@*e_R%Ulyc|b%JTVQeiAM9HyY?R71rBpY_+^D+%qQ8$Y09WN`6kEl@E)b~ zxGfacRX@?Y5UC1agq!jUh9a(_`c%uJ{@P=@k;d2qc;azdfytX+a7mhyNEk$$n{zDy zLOZhMk8x1TuOoX=Zn*#C17;XoB%8qzca8_s79Kg4L{PoN>mJEe4Z|qna~{mDD4kL~ z0_G)myO^m^g7(VEvpHttgyKC;U-5#J){MbBkm5ClRL+fZi>{7Ddz=ANA@I1FSgGbc z%BLHJ#sddw>KIfR0m+p?9VS|L!vyhi-{gIUf#|%Zt_+BUmFzs&Xpo$Y-2~Qxae5F? zB?U``2Wgg?RT%X}v48NO@u1|1WACyu1fbj-2}kC(i@_g1!Hue4nj^9+tp*mWU8GXc zTwt5|>M69F+uDKLt7O8a{s6Cyj5Dp{g}K5r!$}DOpYWLX*tIhW{fwdQ1iGQ&R!r{1 zJE)L7_~u*E|B0casd=v7G?y%BHV_*IHm|@eX|)L39&Dc~k5jP>k*Q6S74$i%RVVFS z0JDl;K_i#NDUP*85XD?lXLk z1dkLUfo-0E)~Swafy6%4E#5bLI-S+6ZT@OW-afOB0=*UuZd;op?Wb!YrHK)p{y9rb zBfn8x_7u=>6Xx@hlJtbuPt366X!q2jjaTsq;AC^>qy%zoaetdfVwI1y-^51AiCN^6 zMC@(y>Fz-jvw_tKiceBtYowZn9bOYan*?fdkGc)gxl4Bm(!P8U$!j4Sj+>L92T-_m z4N(m>)_Z3OTVMZhw~TCcLfjTDR*SA+B~YaAKTQHterk^iRXkd;Y~um8#f}V8RzD

>#=xOcp2>}(NMJ_HdNWYj0#SX!u#PY; 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

CR?ftbnOs7AmWKlfNlm!}e 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

r6CJOD@>9=4a+4hA1-0IHwOLDLQM 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%0D1#YXxEUfGer6S1>oM7%9s$4ubL)|Oh1e8ba&Uio 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 Mr(nN(n9Z!X{ci<7hX4Qo literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512224001-Config.rsc b/MikroMaster/20260512/20260512224001-Config.rsc new file mode 100644 index 0000000..1ab0be3 --- /dev/null +++ b/MikroMaster/20260512/20260512224001-Config.rsc @@ -0,0 +1,4638 @@ +# 2026-05-12 22:40:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C0 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] mac-address=48:8F:5A:8E:1A:B0 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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +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 max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 +/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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" out-interface-list=WAN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512224001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512224001-Diff-Config.rsc new file mode 100644 index 0000000..0efc711 --- /dev/null +++ b/MikroMaster/history/20260512/20260512224001-Diff-Config.rsc @@ -0,0 +1,8 @@ +3509a3510 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +3511a3513 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +3513a3516 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +3515a3519 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings -- 2.52.0