From 50b40effe05de28eb12e98e403709416a863c939 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 16:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 16:20:19. --- .../20260512/20260512162002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512162002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512162002-Diff-Config.rsc | 4 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260512/20260512162002-Binary.backup create mode 100644 MikroMaster/20260512/20260512162002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512162002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512162002-Binary.backup b/MikroMaster/20260512/20260512162002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9ee6cc51f647efb75592af1f3a698c64dae14904 GIT binary patch literal 302653 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⁢SKW9PI?RE@>@8EOU%6c~E>>x8pSR~sB zD5o8Yvoi}o6`Bb>#SW}+RBV35+ImaG1v&<)ySNkYF@>o*6|VbO2*pVa$stZa5IXxMBKy|qYq zm&{S{;?cyq)yW&O$nE3f)%hajkUz#_GNbWVj5^R&ze=A=pjz=jt z$#-e*FgVg#`fkHH&D8WXudTBAmOa109$K(Q@!hfK0j7nj(z_3>{e~N$h5O5m z0?s||?I(2b3-NzX41=MxAwa&y`^wA&$hjWPHQv5ZVdm2N--X9&ND(@qH4ud<&y%=* zh3o9TizZ!?+bghPTT7*25eRxco(FVwPdlvJl+!egPlAG5_B0(uT;Kp6HW(j3NZ9qh zjramaU91@r^|J=oiO$dgV)1B3>-V&d>O2FNR~TjsU$i1f+w%*5`$5leqCiF=Gl(!g z5{o}{ZQn+Q)A)cdhV>JN@(qi|Z`)|Ch=#qE@}YLH1F@?X612b=&3Up@FPd>Db@3ql zj0)4UzNY@_555ey)pW9t;>U&gnldIN9@XP1CE=wjVwK&G)F#gTa=;v-gW%X0d6y`P z0}claIxw(GX8vBVQqV`bIW={roZ1#7#0 z)90Vz`BE9Q3GEAcZFpPN0X~gL_3$+U2+%adPi7dhEKj|cWq@9lUgPhKYDI#atZVK$ z1=#5ZD2eDYqxmOr<8z~kd-YgyycLzp%-urFyAK8NJnsK-mn5(>vnfYq(A_sx&TVUr z6f^A}AKN&px$cTRZ?iN9yJ;hX0cNd27+uA6gv5`P>(z#Ry2YZuxd?yR5XYIdZh5{& zYZkLKchTp?{~w-PEiT`4 z-He0Z4F*^exw33+Gh>q|kuVAYw%pJ6BtypMuEeM;ICXnZM-uaLGPX$WNpW7<49{2# zh}Owa(UP~qN>qg@Q!Gop3mPq{q_mBOiE--$a|t>5jLjb=Y7$P4(jpSgy7vlvx!b!0 zwyH4A$xc1)sh@Jrx^4`M~G6U1gboFy((LeueTS-0`vA7o%;Q6h8ZunTMUSA8`U@MFQ-L^`q zi)PC8kyNw_smiI$5w6L4%CDXy1B}PCgaR>iIUPN(E7f;Y&m0p=KcO5b00wrv4Po;p zrp?wLo*ao8$788A>?rEO!JZ@*5>g+pYrNyoqHZ|3COU=fJ=*_D3qcIe0++Nx4}d_% zr$kZD3fkF#db%DeJDIA%%W|GlXQreIxO-gwubb9toX1@UtG0Z(tEJd (IrBS$y| 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
>ECkn%~7T#oMd#cYU;i^L3@(lz0ia`%md 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 Jg>u%zFa#rWv~~ah literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512162002-Config.rsc b/MikroMaster/20260512/20260512162002-Config.rsc new file mode 100644 index 0000000..1cb2b9d --- /dev/null +++ b/MikroMaster/20260512/20260512162002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 16:20: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 +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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 +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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/20260512162002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512162002-Diff-Config.rsc new file mode 100644 index 0000000..e9cc7f3 --- /dev/null +++ b/MikroMaster/history/20260512/20260512162002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0