From 74a210adb8ef3b9785674e25771e3f82e474e898 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 23 Apr 2026 15:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 23 15:00:08. --- .../20260423/20260423150002-Binary.backup | Bin 0 -> 315902 bytes .../20260423/20260423150002-Config.rsc | 4536 +++++++++++++++++ .../20260423/20260423150002-Diff-Config.rsc | 7 + 3 files changed, 4543 insertions(+) create mode 100644 MikroMaster/20260423/20260423150002-Binary.backup create mode 100644 MikroMaster/20260423/20260423150002-Config.rsc create mode 100644 MikroMaster/history/20260423/20260423150002-Diff-Config.rsc diff --git a/MikroMaster/20260423/20260423150002-Binary.backup b/MikroMaster/20260423/20260423150002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d8262fee750b896bce3d42cbcda0528cc1821183 GIT binary patch literal 315902 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

X^F**g3EOPW8sjh(F6a4V%z&`YVmlN)#!J6a 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

0YJR+0hZI!W2cpW+6 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∈h#nuJbEmOm~3ecGrf^pvL0w}$qTPTk_&|kPo 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 D93;s; literal 0 HcmV?d00001 diff --git a/MikroMaster/20260423/20260423150002-Config.rsc b/MikroMaster/20260423/20260423150002-Config.rsc new file mode 100644 index 0000000..26482a2 --- /dev/null +++ b/MikroMaster/20260423/20260423150002-Config.rsc @@ -0,0 +1,4536 @@ +# 2026-04-23 15:00:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz security=security ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac security=security ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +add name=mVados options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add Update Script scheduler\";\r\ + \n :set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\"\ + ;\r\ + \n :set Comment \"Every Day Check For Update Scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/247/016960a4\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 03:45:02 16.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n#:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$0 (\"Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n\r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$FormatLine \"Hostname:\" \$Identity ] . \"\\n\" . \\\ + \r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location:\" (\$Snmp->\"location\") ] . \"\\n\") \ + ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact:\" (\$Snmp->\"contact\") ] . \"\\n\") ] \ + . \\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\n\") ] . \\ \r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n \$LogPrint warning \$0 (\"This system has low free flash space but \ + \" . \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint info \$0 (\"There are \" . \$CertCount . \" Certificates \ + with CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :global LogPrint;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint error \$Name ([ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\ + \$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {:set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :global LogPrint;\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint info \$0 (\"Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Creating disk of type tmpfs failed: \" .\ + \_\$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint debug \$0 (\"... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Making directory '\" . \$Path . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={:set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]};\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={:set Path [ :pick \$Path 1 [ :len\ + \_\$Path ] ]};\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={:set Path [ :\ + pick \$Path 0 ([ :len \$Path ] - 1) ]};\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint error \$0 (\"No valid RouterOS version: \" . \$Required);\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No symbol available for name '\" . \$Name \ + . \"'!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\r\ + \n \r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\r\ + \n \r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Setup Global Environment for scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add comment=WAN interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 server=masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=git.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=ros.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + 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/20260423150002-Diff-Config.rsc b/MikroMaster/history/20260423/20260423150002-Diff-Config.rsc new file mode 100644 index 0000000..4d934d7 --- /dev/null +++ b/MikroMaster/history/20260423/20260423150002-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