From 08f7a691cc1c7e4068047a13ad9089c7da16d647 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 22:40:36 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 02 22:40:36. --- .../20260602/20260602224001-Binary.backup | Bin 0 -> 255224 bytes .../20260602/20260602224001-Config.rsc | 3416 +++++++++++++++++ .../20260602/20260602224001-Diff-Config.rsc | 22 + 3 files changed, 3438 insertions(+) create mode 100644 MikroMaster/20260602/20260602224001-Binary.backup create mode 100644 MikroMaster/20260602/20260602224001-Config.rsc create mode 100644 MikroMaster/history/20260602/20260602224001-Diff-Config.rsc diff --git a/MikroMaster/20260602/20260602224001-Binary.backup b/MikroMaster/20260602/20260602224001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1f3f40d3614a48f8eb9cd28a9824fc4ca433f4de GIT binary patch literal 255224 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�OsRD-W}px&UZ6L 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260602/20260602224001-Config.rsc b/MikroMaster/20260602/20260602224001-Config.rsc new file mode 100644 index 0000000..7501dab --- /dev/null +++ b/MikroMaster/20260602/20260602224001-Config.rsc @@ -0,0 +1,3416 @@ +# 2026-06-02 22:40:03 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1500 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 wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=13231 mtu=1280 name=WG +/interface list +add name=LAN +add name=Internet +add exclude=LAN name=WAN +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/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 +/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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.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 \ + 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 interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 disabled=yes \ + 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 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 disabled=yes interface=WG network=10.8.0.1 +/ip cloud +set update-time=no +/ip dhcp-client +add add-default-route=special-classless check-gateway=arp \ + default-route-tables=main:1 dhcp-options=clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.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.4.4,8.8.8.8 verify-doh-cert=yes +/ip dns static +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +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 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.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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws 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=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=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +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 disabled=yes +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new disabled=yes in-interface="ether1 - Unet" \ + src-address-list=!VDSina +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes 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=\ + "Mark Routing main for VDSina" disabled=yes 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=\ + "!!!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" \ + disabled=yes 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" \ + disabled=yes 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" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes 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" disabled=yes \ + 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" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes 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" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + 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=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat 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=3 dst-address=192.168.0.0/24 gateway="" +add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=1 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 forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 package update +set check-certificate=yes-without-crl +/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 certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" 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="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260602/20260602224001-Diff-Config.rsc b/MikroMaster/history/20260602/20260602224001-Diff-Config.rsc new file mode 100644 index 0000000..64272ea --- /dev/null +++ b/MikroMaster/history/20260602/20260602224001-Diff-Config.rsc @@ -0,0 +1,22 @@ +23c23 +< add disabled=yes listen-port=13231 mtu=1280 name=WG +--- +> add listen-port=13231 mtu=1280 name=WG +2409a2410 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2411a2413 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2413a2416 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2415a2419 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2417a2422 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2421,2422c2426,2427 +< set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ +< LAN wan-interface-list=WAN +--- +> set detect-interface-list=Internet internet-interface-list=Internet \ +> lan-interface-list=LAN wan-interface-list=WAN +3311d3315 +< add disabled=no distance=3 dst-address=192.168.0.0/24 gateway="" -- 2.52.0