From 4a3c0199762b09f938aed2a60316223cc7aeb999 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 23 Apr 2026 21:40:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 23 21:40:08. --- .../20260423/20260423214001-Binary.backup | Bin 0 -> 315902 bytes .../20260423/20260423214001-Config.rsc | 4536 +++++++++++++++++ .../20260423/20260423214001-Diff-Config.rsc | 7 + 3 files changed, 4543 insertions(+) create mode 100644 MikroMaster/20260423/20260423214001-Binary.backup create mode 100644 MikroMaster/20260423/20260423214001-Config.rsc create mode 100644 MikroMaster/history/20260423/20260423214001-Diff-Config.rsc diff --git a/MikroMaster/20260423/20260423214001-Binary.backup b/MikroMaster/20260423/20260423214001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6ec35c70051d96e415b8f4478bfe9fe3269088a8 GIT binary patch literal 315902 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 DIQv?) literal 0 HcmV?d00001 diff --git a/MikroMaster/20260423/20260423214001-Config.rsc b/MikroMaster/20260423/20260423214001-Config.rsc new file mode 100644 index 0000000..c07f26e --- /dev/null +++ b/MikroMaster/20260423/20260423214001-Config.rsc @@ -0,0 +1,4536 @@ +# 2026-04-23 21: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" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot walled-garden +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +add action=accept chain=forward comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" interval=1w \ + name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260423/20260423214001-Diff-Config.rsc b/MikroMaster/history/20260423/20260423214001-Diff-Config.rsc new file mode 100644 index 0000000..4d934d7 --- /dev/null +++ b/MikroMaster/history/20260423/20260423214001-Diff-Config.rsc @@ -0,0 +1,7 @@ +4195,4197c4195,4196 +< disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina \ +< log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +< src-address-list=!NoWG +--- +> dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ +> new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG -- 2.52.0