From cf5154fac176ce9dc721594894affc32c08f6c0e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 12:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 12:20:41. --- .../20260508/20260508122001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508122001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508122001-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508122001-Binary.backup create mode 100644 MikroMaster/20260508/20260508122001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508122001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508122001-Binary.backup b/MikroMaster/20260508/20260508122001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1ca98c6af750c405185305540c2d4bb5c2b59d54 GIT binary patch literal 298264 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�M3X4H-=I`Np&CF*adi9Q^7|rw1|PM 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

8!7r{9e^GnWi*xColxk7@w(0E+R7a+{n=QSg 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

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