From cb2f15f2a1fe0f44da9595e4f7b3183232b630d9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 3 Jun 2026 02:00:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 03 02:00:35. --- .../20260603/20260603020002-Binary.backup | Bin 0 -> 255205 bytes .../20260603/20260603020002-Config.rsc | 3423 +++++++++++++++++ .../20260603/20260603020002-Diff-Config.rsc | 37 + 3 files changed, 3460 insertions(+) create mode 100644 MikroMaster/20260603/20260603020002-Binary.backup create mode 100644 MikroMaster/20260603/20260603020002-Config.rsc create mode 100644 MikroMaster/history/20260603/20260603020002-Diff-Config.rsc diff --git a/MikroMaster/20260603/20260603020002-Binary.backup b/MikroMaster/20260603/20260603020002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b6d7d67db020a60ab3b1ed7ad64a76560f72309f GIT binary patch literal 255205 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Þ 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%0AP&v1WO-Xl4D+F?RLHQQ4B`BU@|4qwb1^k7lZL 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
SBbfRU-?!HH}QgU@SQb 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 WIOGNi{>qZNzhDM0&XGVCJ+9DzXwqr` literal 0 HcmV?d00001 diff --git a/MikroMaster/20260603/20260603020002-Config.rsc b/MikroMaster/20260603/20260603020002-Config.rsc new file mode 100644 index 0000000..00df754 --- /dev/null +++ b/MikroMaster/20260603/20260603020002-Config.rsc @@ -0,0 +1,3423 @@ +# 2026-06-03 02:00:03 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN port-cost-mode=short ra-guard=yes +/interface ethernet +set [ find default-name=ether1 ] arp=proxy-arp comment="WAN - Unet" \ + loop-protect=off name="ether1 - Unet" rx-flow-control=auto \ + tx-flow-control=auto +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 listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/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" +/ip smb +set enabled=no interfaces=lo +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 multipath-hash-policy=l4 +/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="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid_duid,clientid 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 mdns-repeat-ifaces="ether1 - Unet" servers=\ + 8.8.8.8,9.9.9.9 use-doh-server=\ + https://security.cloudflare-dns.com/dns-query +/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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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" 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 check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN 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 certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns 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-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get 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/20260603/20260603020002-Diff-Config.rsc b/MikroMaster/history/20260603/20260603020002-Diff-Config.rsc new file mode 100644 index 0000000..50b0b3b --- /dev/null +++ b/MikroMaster/history/20260603/20260603020002-Diff-Config.rsc @@ -0,0 +1,37 @@ +2508,2510c2508,2510 +< doh-max-server-connections=20 mdns-repeat-ifaces="ether1 - Unet" servers=\ +< 8.8.8.8,9.9.9.9 use-doh-server=\ +< https://security.cloudflare-dns.com/dns-query +--- +> doh-max-server-connections=20 mdns-repeat-ifaces=Bridge-LAN servers=::,:: \ +> use-doh-server=https://security.cloudflare-dns.com/dns-query \ +> verify-doh-cert=yes +3393,3396c3393,3396 +< add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ +< -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ +< e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ +< interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ +--- +> add certificate=DigiCert-Assured-ID-Root-G2.pem_0 check-certificate=no \ +> 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="" name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ +3398,3403c3398,3404 +< 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="" \ +< name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ +< up-script="" +< add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ +--- +> add certificate=DigiCert-Assured-ID-Root-CA check-certificate=no comment="doh-\ +> fallback, doh-url=https://security.cloudflare-dns.com/dns-query, doh-cert=\ +> DigiCert Global Root CA, notify, name=CloudFlare-doh IPv4" disabled=no \ +> down-script="" host=1.0.0.1 http-codes="" interval=10s name=\ +> "CloudFlare-doh IPv4" port=443 src-address=146.120.64.211 test-script="" \ +> type=https-get up-script="" +> add comment="dns, notify, name=Google-DNS IPv4" disabled=no dns-server=\ +3411c3412 +< add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ +--- +> add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=no \ -- 2.52.0