From c5d121a2a965ecaea5b37d722951abf4329cfd97 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 23 Apr 2026 22:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 23 22:00:08. --- .../20260423/20260423220002-Binary.backup | Bin 0 -> 315902 bytes .../20260423/20260423220002-Config.rsc | 4535 +++++++++++++++++ .../20260423/20260423220002-Diff-Config.rsc | 7 + 3 files changed, 4542 insertions(+) create mode 100644 MikroMaster/20260423/20260423220002-Binary.backup create mode 100644 MikroMaster/20260423/20260423220002-Config.rsc create mode 100644 MikroMaster/history/20260423/20260423220002-Diff-Config.rsc diff --git a/MikroMaster/20260423/20260423220002-Binary.backup b/MikroMaster/20260423/20260423220002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7d5ff9276be9975873c5bbb6db3c3a43d6ac112a GIT binary patch literal 315902 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%0DsITlQ6RN~8 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 D6cA!4 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260423/20260423220002-Config.rsc b/MikroMaster/20260423/20260423220002-Config.rsc new file mode 100644 index 0000000..4ed7c30 --- /dev/null +++ b/MikroMaster/20260423/20260423220002-Config.rsc @@ -0,0 +1,4535 @@ +# 2026-04-23 22:00:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/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 wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/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 security=security 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 security=security 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 security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf 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 datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/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=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-AX disabled=no mode=ap name=5G-AX security=sec5G 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 +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add name=mVados 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 +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/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 +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +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 dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-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/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\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\" } 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\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \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\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \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\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\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/247/016960a4\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 03:45:02 16.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\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\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n\r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$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:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\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\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 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 CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\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 :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/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 disable-ipv6=yes 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 comment=WAN 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 cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,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-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/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 interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/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.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.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=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +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 +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru 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=git.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=ros.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=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.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.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/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=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +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 disabled=yes +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 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="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=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/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 \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/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=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 log=yes +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 walled-garden +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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 +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 +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/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 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="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" 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="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" 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="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/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/20260423/20260423220002-Diff-Config.rsc b/MikroMaster/history/20260423/20260423220002-Diff-Config.rsc new file mode 100644 index 0000000..5ba4120 --- /dev/null +++ b/MikroMaster/history/20260423/20260423220002-Diff-Config.rsc @@ -0,0 +1,7 @@ +4195,4196c4195,4197 +< dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ +< new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina \ +> log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG -- 2.52.0