From 71b9f62878baffd7c536f2ce33855104d19bdc12 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 30 May 2026 00:20:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 30 00:20:35. --- .../20260530/20260530002002-Binary.backup | Bin 0 -> 259199 bytes .../20260530/20260530002002-Config.rsc | 3462 +++++++++++++++++ .../20260530/20260530002002-Diff-Config.rsc | 6 + 3 files changed, 3468 insertions(+) create mode 100644 MikroMaster/20260530/20260530002002-Binary.backup create mode 100644 MikroMaster/20260530/20260530002002-Config.rsc create mode 100644 MikroMaster/history/20260530/20260530002002-Diff-Config.rsc diff --git a/MikroMaster/20260530/20260530002002-Binary.backup b/MikroMaster/20260530/20260530002002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7f790159d04bc58e30d9f859ac352d550abbf6c4 GIT binary patch literal 259199 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
Uy!gQ-oCFX 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260530/20260530002002-Config.rsc b/MikroMaster/20260530/20260530002002-Config.rsc new file mode 100644 index 0000000..5cbae23 --- /dev/null +++ b/MikroMaster/20260530/20260530002002-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-05-30 00:20:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/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: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] 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 +/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 +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/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 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\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\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\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\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\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/661/8d6d2114\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 25.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\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 MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\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 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 GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\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 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 ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\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 updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$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 :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\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 :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$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\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\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\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:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\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:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$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={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$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={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\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\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\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 :log 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 :log 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 :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log 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 :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\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 ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$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=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$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 :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' 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 :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 :log 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 FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\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 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 [ :le\ + n \$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 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 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\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 :if (\$ExitOK = \"false\") do={\r\ + \n :log 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 ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\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 :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\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={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :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 :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\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 :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\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\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 :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log 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 :log 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 :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log 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 :log 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 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 VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log 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 :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 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\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\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\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 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 :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\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 :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', 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\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\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\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\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 :log 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\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\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\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\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\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:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\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\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\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\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 \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\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 (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\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={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\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 \"Every Day Set Global Environment Variables\";\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: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:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \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" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/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 allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=25s 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-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/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 interface="ether1 - Unet" name=client1 +/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.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 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.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 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=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +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 +/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=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +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=reg.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.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS 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 +/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=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=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=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 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=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=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/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-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +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-list=WAN protocol=tcp src-address-list=!Trusted-DNS +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-list=WAN 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-list=WAN protocol=udp \ + src-address-list=!TRUSTED +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-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +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=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes 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 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +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 +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no 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 new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/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="Default NAT" out-interface=\ + "ether1 - Unet" routing-mark=!To-VPN src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +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 +/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=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/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 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=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no 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 reverse-proxy 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 disabled=yes +set www-ssl certificate=Root-YE 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 +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/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="Every Day Set Global Environment Variables" 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="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/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="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260530/20260530002002-Diff-Config.rsc b/MikroMaster/history/20260530/20260530002002-Diff-Config.rsc new file mode 100644 index 0000000..212fcf4 --- /dev/null +++ b/MikroMaster/history/20260530/20260530002002-Diff-Config.rsc @@ -0,0 +1,6 @@ +3228,3229c3228,3229 +< dst-address=!10.30.30.0/24 new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address=!10.30.30.0/24 new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 src-address-list=!NoWG -- 2.52.0