From 07be3e8e2942782d6385da25ac91045b74068be4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 5 Jun 2026 16:00:33 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 05 16:00:33. --- .../20260605/20260605160002-Binary.backup | Bin 0 -> 256021 bytes .../20260605/20260605160002-Config.rsc | 3440 +++++++++++++++++ .../20260605/20260605160002-Diff-Config.rsc | 6 + 3 files changed, 3446 insertions(+) create mode 100644 MikroMaster/20260605/20260605160002-Binary.backup create mode 100644 MikroMaster/20260605/20260605160002-Config.rsc create mode 100644 MikroMaster/history/20260605/20260605160002-Diff-Config.rsc diff --git a/MikroMaster/20260605/20260605160002-Binary.backup b/MikroMaster/20260605/20260605160002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2c10982a6a3dc91591b79c5c391d56d0390fe0fb GIT binary patch literal 256021 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%0DI*Y2lb+wqp=$B0zhz4fme5Lxuu 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

oUpQQe^p%G_2}5lpB= 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� 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 G{S2VXQ%*Mk literal 0 HcmV?d00001 diff --git a/MikroMaster/20260605/20260605160002-Config.rsc b/MikroMaster/20260605/20260605160002-Config.rsc new file mode 100644 index 0000000..1eea30b --- /dev/null +++ b/MikroMaster/20260605/20260605160002-Config.rsc @@ -0,0 +1,3440 @@ +# 2026-06-05 16: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 disabled=yes 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=Internet \ + 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 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes 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 default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,9.9.9.9 +/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=amster 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 +add address=10.30.30.30 comment=miller list=NoWG +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=22,8291 \ + in-interface="ether1 - Unet" protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +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 +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=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" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=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" \ + 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=yes 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/20260605/20260605160002-Diff-Config.rsc b/MikroMaster/history/20260605/20260605160002-Diff-Config.rsc new file mode 100644 index 0000000..e101ddb --- /dev/null +++ b/MikroMaster/history/20260605/20260605160002-Diff-Config.rsc @@ -0,0 +1,6 @@ +2426,2427c2426,2427 +< set detect-interface-list=WAN internet-interface-list=Internet \ +< lan-interface-list=LAN wan-interface-list=WAN +--- +> set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ +> LAN wan-interface-list=WAN -- 2.52.0