From 79ed5ff90e7ed97dbdaae619f36a3fc4b4b784a9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 20:40:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 20:40:45. --- .../20260507/20260507204001-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507204001-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507204001-Diff-Config.rsc | 12 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260507/20260507204001-Binary.backup create mode 100644 MikroMaster/20260507/20260507204001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507204001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507204001-Binary.backup b/MikroMaster/20260507/20260507204001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9b79284173eed248d795a8d79e8021240ae910e2 GIT binary patch literal 297773 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

1lKM)E9bd#3n`-Nz<%L}1@*XteGb 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 z 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ℑtsZOo_*+Q)cDAr?0b7kcQNS5 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

I1l`5&w_n?Pk%U{xJL}AMM{j!h$tUox` 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

h)OQOoZ?8xse$LxMhux#Fx`waY6 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 z z$Dp3!_Go22SK8MJcQO295eU8T$5sv>VnN`F=IfJl{%L!#sJaI;Kc<^B^fFT*;7083 zA{7`|c%vjEO5d&T9qt`iTzs&yCM*Ajflin9j^o3Rfqy*3*Ah!2=XWw`exCt@G`^L# zU#gyKTPgi{xFx6s{8p7{70^gCF1g^=&O<9+fs+Pegj-&XCuKH!^$0!BpiqttlNgiE zR(n-mI#}kdu2fku{&I!T_)WEqaS{kwaz=0xZIcq?_i~uiiDhoamd-L^i@_+CVE2;A z-Y;ne{n8a03;vFl-BrAIYp85?_wSR7=_eR;N>x|ypsx#7l4|&xF&Lyp1n&_gJK<7G zvB2`Jg0pir{_FxAEm@8viw&wrtATHCW?2wsWFK+XFEn1KahyJP4fcaLApP9iI9Ep9 z$R_aqXX>me-#S;JLd;s?!=RAH-^wY0qZIil2^Q`or;rY-zWJ{9Ec(SS0TS11op&hp zt7~v1n;c!Wwl4tj>VS0j??_Du{&82y=~$|fjd%h@^p~Lro}2HtEiGDrnRR*3+rn-A zk&a0Ob*7HflC>N8+P^N}5iA`U`~+%sftiB$MGv`Fr6Mc2TCvrhl z!n%>8U*Rfl7DAB$Pau$?8wF-+C()1n5j;3yZAtbIcX&i3Q|Vs zi98i0(qPDwyL&g7jqEP?+&D}6@gUZ_#>-sUWyL+H&iU&weDW_FOg8##3vvN4YAO6=Y<75L1wM7t@|#~rO69jIhCKN zI5l-B=xc}O3x7hL<>wen3!4Ml1TK4ElyG#Dm<+5J%*LOwSfYd(+_4NA59lkV0h zq`^nxRR(n_I}zhf6y-b5!EnRH)?fQ#3{#O2;h8^Uc zvh#@{SKw4@IH~_%(3`_Yy9Vr(@a|f{1;&xHRl%0kFXZdge`?Z8j>lscMO&z^KymoJLAwwg@TELi*XSH0J#Nkx`` zwc-5Wb1acnceXjqT*n=V*7@fiI|ec^5e^34QPRXr?az>%0A&*`KGdnnOmZcM6>`B| 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 z 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

7b^E}I$}0%4**V?^ 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507204001-Config.rsc b/MikroMaster/20260507/20260507204001-Config.rsc new file mode 100644 index 0000000..e397363 --- /dev/null +++ b/MikroMaster/20260507/20260507204001-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 20:40:05 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507204001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507204001-Diff-Config.rsc new file mode 100644 index 0000000..ffbfc49 --- /dev/null +++ b/MikroMaster/history/20260507/20260507204001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4296d4295 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4298c4297 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300c4299 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4301a4301 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN -- 2.52.0