From 91cb52dd4a34c1d6bf75b876c836a8a038b8d62f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 16 Apr 2026 20:40:07 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 16 20:40:07. --- .../20260416/20260416204001-Binary.backup | Bin 0 -> 315644 bytes .../20260416/20260416204001-Config.rsc | 4535 +++++++++++++++++ .../20260416/20260416204001-Diff-Config.rsc | 8 + 3 files changed, 4543 insertions(+) create mode 100644 MikroMaster/20260416/20260416204001-Binary.backup create mode 100644 MikroMaster/20260416/20260416204001-Config.rsc create mode 100644 MikroMaster/history/20260416/20260416204001-Diff-Config.rsc diff --git a/MikroMaster/20260416/20260416204001-Binary.backup b/MikroMaster/20260416/20260416204001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cc00366ec3ac2127499af7ecec935d0e02120d46 GIT binary patch literal 315644 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 FH;B%96#)PM literal 0 HcmV?d00001 diff --git a/MikroMaster/20260416/20260416204001-Config.rsc b/MikroMaster/20260416/20260416204001-Config.rsc new file mode 100644 index 0000000..262b003 --- /dev/null +++ b/MikroMaster/20260416/20260416204001-Config.rsc @@ -0,0 +1,4535 @@ +# 2026-04-16 20:40: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/20260416/20260416204001-Diff-Config.rsc b/MikroMaster/history/20260416/20260416204001-Diff-Config.rsc new file mode 100644 index 0000000..4b890b5 --- /dev/null +++ b/MikroMaster/history/20260416/20260416204001-Diff-Config.rsc @@ -0,0 +1,8 @@ +35c35 +< # channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +--- +> # channel: 5200/20-eCee/ac/P(20dBm), SSID: vados5g, local forwarding +51c51 +< # channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +--- +> # channel: 5200/20-eCee/ac/P(20dBm), SSID: vados5g, local forwarding -- 2.52.0