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